task.arguments中的Swift参数

问题描述 投票:2回答:2

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

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

"/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 = \”视频中是否有问题;%FrameRate%\“”?

swift macos command mediainfo
2个回答
0
投票

如果不完全了解Swift,我会尝试没有转义引号,引用用于例如命令行仅用于强制命令不处理半列作为命令行的某些内容(命令行在处理过程中删除它们.Indit.arguments是一个列表,语言应该正确处理自身要逃脱的字符,如果是转义引号(而不是像在命令行上那样处理它们)MediaInfo将无法理解该命令。

Jérôme,MediaInfo的开发者。


0
投票

你是对的,我有我的fps号码!随着代码:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.