task.arguments 中的 Swift 参数
Posted
技术标签:
【中文标题】task.arguments 中的 Swift 参数【英文标题】:Swift Arguments in task.arguments 【发布时间】:2018-10-30 09:09:48 【问题描述】:在 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=\"Video;%FrameRate%\""有什么问题吗?
【问题讨论】:
【参考方案1】:如果不确切了解 Swift,我会尝试不使用转义引号,例如,引号用于命令行仅用于强制命令不将半列作为命令行处理(命令行在处理过程中将其删除。Process.arguments 是一个列表,该语言应正确处理自身字符以进行转义,如果它转义引号(而不是像在命令行上那样处理它们)MediaInfo 将无法理解该命令。
Jérôme,MediaInfo 的开发人员。
【讨论】:
【参考方案2】:你说得对,我有我的 fps 数! 附上代码:
taskfindfps.arguments = [ "--Inform=Video;%FrameRate%", myVideo]
感谢您的帮助。 感谢强大的 MediaInfo 工具。
【讨论】:
以上是关于task.arguments 中的 Swift 参数的主要内容,如果未能解决你的问题,请参考以下文章