Как я могу передать вывод ffmpeg в ffplay?
На данный момент я использую обходной путь в Bash:
mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam
Я не знаю, может ли он ffmpeg
не выводить свои данные в stdout, или ffplay
что он не может получить свой ввод из stdin.
Если это так ffmpeg
, он не может вывести свои данные на стандартный вывод:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(Вам необходимо добавить -
аргумент, ffplay
чтобы он получал данные от stdin.)
Если это ffplay
то, что не может получить свой ввод от стандартного ввода:
ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null
Для получения дополнительной информации о <(command)
и >(command)
конструкции см процесса Замены раздел руководства Баша.
буду работать; вам нужно установить формат контейнера для вывода. Обычно это устанавливается с помощью ffmpeg, смотрящего на расширение, которое вы даете на выходе, но здесь вы должны установить его вручную
-f
. Я рекомендую matroska (MKV), потому что он может содержать практически любое видео, поэтому независимо от того, на что вы его транскодируете, должно работать на отлично.Обратите внимание , что если вы используете Ubuntu 12.04, FFmpeg был заменен libav вилкой, и вы должны использовать
avconv
иavplay
вместо этого; синтаксис в остальном идентичен. Там есть что-то вроде ffmpeg, но оно покалечено дизайном.источник
pipe:: Invalid data found when processing inputK
в Power Shell, но хорошо работает в командной строкеffmpeg поддерживает операции с трубопроводами. Смотрите этот раздел документации здесь .
Я не знаю, как работает ffplay, но чтобы передать вывод ffmpeg в стандартный вывод, вы можете добавить команду pipe в конец команды ffmpeg. Пример:
источник
man ffplay
, я не вижуffplay
поддержки-i
переключателя - это возможноffmpeg
только?pipe:1
против-
?-
работает на ffmpeg 2.8.6.выглядит как обычные трубы работают (по крайней мере в окнах):
не пробовал с более сложным вводом / выводом, хотя ...
немного быстрее запуска
источник
Unable to find a suitable output format for 'pipe:'
- мне нужно было указать кодек с-f
.