20

Как я могу передать вывод ffmpeg в ffplay?

На данный момент я использую обходной путь в Bash:

mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam

4 ответа4

16

Я не знаю, является ли это ffmpeg который не может выводить свои данные в stdout, или ffplay который не может получить свой ввод из stdin.

Если это ffmpeg который не может вывести свои данные на стандартный вывод:

capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)

(Вам необходимо добавить аргумент - в ffplay чтобы он принимал ввод от stdin.)

Если это ffplay который не может получить ввод от stdin:

ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null

Для получения дополнительной информации о конструкциях <(command) и >(command) см. Раздел « Замена процесса » руководства bash.

12
ffmpeg -i input.avi <options> -f matroska - | ffplay -

буду работать; вам нужно установить формат контейнера для вывода. Обычно это устанавливается с помощью ffmpeg, смотрящего на расширение, которое вы выводите, но здесь вы должны установить его вручную с помощью -f . Я рекомендую matroska (MKV), потому что он может содержать практически любое видео, поэтому независимо от того, на что вы его транскодируете, должно работать на отлично.

Обратите внимание, что если вы используете Ubuntu 12.04, ffmpeg был заменен форком libav , и вы должны использовать вместо него avconv и avplay ; синтаксис в остальном идентичен. Там есть что-то вроде ffmpeg, но оно покалечено дизайном.

10

ffmpeg поддерживает операции с трубопроводами. Смотрите этот раздел документации здесь.

Я не знаю, как работает ffplay, но чтобы направить вывод ffmpeg в стандартный вывод, вы можете добавить команду pipe в конец команды ffmpeg. Пример:

ffmpeg -i input.flv pipe:1 | ffplay -i -
8

выглядит как обычные трубы работают (по крайней мере в окнах):

ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -

не пробовал с более сложным вводом / выводом, хотя ...

ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -

немного быстрее запуска

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .