Быстрые Аргументы в task.arguments - PullRequest
0 голосов
/ 20 мая 2018

В Swift 4 я пытаюсь запустить командную строку, чтобы узнать частоту кадров видео.Я использую mediainfo tool.

Команда для выполнения (проверена в Терминале)

"/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% \ "" ?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вы правы, у меня есть номер моего fps!С кодом:

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

Спасибо за помощь.И спасибо за мощный инструмент MediaInfo.

0 голосов
/ 20 мая 2018

Не зная точно Swift, я бы попробовал без экранированных кавычек, кавычки используются, например, в командной строке только для того, чтобы заставить команду не обрабатывать полуколонну как нечто для командной строки (командная строка удаляет их во время обработки. Процесс.Будучи списком аргументов, ожидается, что язык будет правильно обрабатывать сами символы для экранирования, и если он экранирует кавычки (вместо того, чтобы обрабатывать их, как это делается в командной строке), MediaInfo не поймет команду.

Jérôme, разработчик MediaInfo.

...