2

在 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%\""有什么问题吗?

4

2 回答 2

0

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

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

于 2018-05-20T16:43:24.490 回答
0

你是对的,我有我的 fps 数!使用代码:

taskfindfps.arguments = [ "--Inform=Video;%FrameRate%", myVideo]

谢谢您的帮助。感谢强大的 MediaInfo 工具。

于 2018-05-20T18:44:51.310 回答