Передача аргументов в FFMPEG с помощью subprocess.call () - PullRequest
0 голосов
/ 08 мая 2018

Я работал через этот ответ на вопрос FFMPEG, и команда прекрасно работает через командную строку Windows 10 (я только изменил имена файлов ввода и вывода):

ffmpeg -i test.mp4  -filter:v "select='gt(scene,0.4)',showinfo" -f null  - 2> test.txt

Мой скрипт Python 3 предоставляет аргументы (в виде списка) для функции subprocess.call() и отлично работает для ряда основных операций FFMPEG, но не для этой! Кажется, что он завершается с ошибкой в ​​финальной части null - 2> test.txt со следующими сообщениями об ошибках в зависимости от того, как я разделяю аргументы:

[NULL @ 000001c7e556a3c0] [error] Unable to find a suitable output format for 'pipe:'
[error] pipe:: Invalid argument

[error] Unrecognized option '2> test.txt'.
[fatal] Error splitting the argument list: Option not found

[error] Unrecognized option '2>'.
[fatal] Error splitting the argument list: Option not found

Вот основной список аргументов, которые я пробовал:

args=['C:\\Program Files\\ffmpeg\\ffmpeg.exe',
      '-i',
      'test.mp4',
      '-filter:v "select=\'gt(scene,0.4)\',showinfo"',
      '-f null',
      '-',
      '2>',
      'test.txt']

Плюс различные перестановки, объединяющие и разделяющие последние несколько элементов.

Пожалуйста, кто-нибудь может мне помочь с правильным синтаксисом для запуска FFMPEG с этими аргументами через Python 3?

Большое спасибо - я просто не могу понять, где я иду не так: (

1 Ответ

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

Это не доходит до сути того, что пошло не так в моем синтаксисе, но следующий ответ предоставил мне обходной путь, по существу используя shell=True и передавая все аргументы в виде объединенной строки: вызов подпроцесса ffmpeg (командная строка)

Вот мой обновленный звонок:

subprocess.call("ffmpeg -i test.mp4 -filter:v \"select='gt(scene,0.4)',showinfo\" -f null - 2> output.txt",shell=True)

Спасибо замечательным людям в Pythonista Cafe за то, что нашли это для меня:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...