首页 > 解决方案 > task.arguments 中的 Swift 参数

问题描述

在 Swift 4 中,我尝试启动命令行来了解视频的帧速率。我使用媒体信息工具。

要执行的命令是(在终端测试)

"/Users/Lorenzo/mediainfo  --Inform="Video;%FrameRate%" /Users/Lorenzo/Desktop/1.mov"

我为此目的的快速代码是:

        let taskfindfps = Process()

        taskfindfps.launchPath = "/Users/Lorenzo/mediainfo"
        taskfindfps.arguments = ["--Inform=\"Video;%FrameRate%\"", myVideo]

        let pipefindfps = Pipe()
        taskfindfps.standardOutput = pipefindfps

但是第一个参数无效,我不知道为什么......我得到的结果就像没有可选参数的命令的结果:

"/Users/Lorenzo/mediainfo /Users/Lorenzo/Desktop/1.mov"

"--Inform=\"Video;%FrameRate%\""有什么问题吗?

标签: swiftmacoscommandmediainfo

解决方案


在不完全了解 Swift 的情况下,我会尝试不使用转义引号,例如在命令行上使用引号仅用于强制命令不将半列作为命令行处理(命令行在处理过程中将其删除。Process.arguments 是列表中,该语言应正确处理自身字符以进行转义,并且如果它转义引号(而不是像在命令行上那样处理它们)MediaInfo 将无法理解该命令。

Jérôme,MediaInfo 的开发人员。


推荐阅读