2

Я хочу передать вывод 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 ответа2

7

Вы должны предоставить формат с -f , например:

ffmpeg … -f matroska - | process
  • Список доступных форматов смотрите в ffmpeg -formats .
  • Обратите внимание, что некоторые форматы (обычно MOV) требуют, чтобы выходной протокол был доступен для поиска, поэтому они не будут работать с протоколом вывода канала.
  • Также см. Документацию FFmpeg: Pipe Protocol .
1

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 .

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