Я хочу передать вывод ffmpeg другому процессу, например так: ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 - | process . Я получаю Unable to find a suitable output format for 'pipe:'
pipe:: Invalid argument . Как мне достичь трубопровода?
2 ответа
Вы должны предоставить формат с -f , например:
ffmpeg … -f matroska - | process
- Список доступных форматов смотрите в
ffmpeg -formats. - Обратите внимание, что некоторые форматы (обычно MOV) требуют, чтобы выходной протокол был доступен для поиска, поэтому они не будут работать с протоколом вывода канала.
- Также см. Документацию FFmpeg: Pipe Protocol .
Ffmpeg не поддерживает - напрямую как файл stdout/stdin. Вы можете использовать -f <fmt> вместо этого, чтобы передать это. Для этого добавьте -f nut pipe:0 в конце команды ffmpeg.
Это должно выглядеть так:
ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 -f nut - | process
Как это лучше, чем Мартоска?
Хорошо,
martoskaпредставляет собой файлmkvЕсли-f martoskaэто означает, что ffmpeg вынужден использоватьmartoskaдля кодирования данных и записи их в выходные данные.nutможет просто содержать все типы метаданных и одно / несколько (аудио, видео, изображение) кодеков + поддержка субтитров. Вот почему я считаю,nutнадmartoska.
