Захват выходного файла ffmpeg с помощью vid.stab в python в переменную - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь написать скрипт на python для стабилизации видео с использованием ffmpeg и библиотеки vid.stab.Моя проблема в том, что выходной файл не проходит через stdout, поэтому использование subprocess.Popen () возвращает пустую переменную.

cmd1=["ffmpeg", "-i","./input.MOV", "-vf", "vidstabdetect=stepsize=6:shakiness=10:accuracy=15", "-f","null","pipe:1"]
p = subprocess.Popen(cmd1, stdout=subprocess.PIPE)
vectors, err = p.communicate()

Проблема заключается в том, что vibstabdetect принимает фильтр с именем result и выводитфайл к тому, что указано там, и стандартный вывод остается пустым.(Если результат не указан, по умолчанию используется transforms.trf.)

Есть ли способ получить содержимое файла результатов?При запуске сценария с кодом выше он выполняется без ошибок, но файл создается с именем по умолчанию, а переменная остается пустой.

1 Ответ

2 голосов
/ 24 марта 2019

Вам необходимо указать стандартный вывод для данных журнала фильтра, а не транскодированный вывод из ffmpeg, что и делает ваш текущий -f null pipe:1.

Однако фильтр vidstabdetect использует fopen POSIX, чтобы открыть место назначения для данных преобразования, в отличие от большинства других фильтров, которые используют внутренний avio_open. Для fopen pipe:1 не допускается. Для Windows CON и для Linux /dev/stdout, как вы подтвердили, требуется.

...