Я знаю, что ffmpeg поддерживает трубопровод. Я пытаюсь добиться того, что было описано в ответе, приведенном ниже

Если вы готовы принять решение, которое не выполняет потоковую передачу результирующих кадров, но при этом соответствует вашей спецификации (чтение FLV из ресурса URL, вывод MP4 в стандартный вывод), вы всегда можете сначала попытаться закодировать FLV во временный файл. и затем выведите это на стандартный вывод.

Смогу ли я добиться этого с помощью ffmpeg через трубопровод с чем-то вроде этого?

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4 | -

1 ответ1

0

Ты почти там. Вы уже преуспели в кодировании вашего входного файла в файл MP4 с именем temp.mp4:

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4

Чтобы прочитать полученный файл в стандартный вывод, после того как он полностью записан, вы можете использовать cat:

cat temp.mp4

Чтобы объединить оба, используйте оператор && (который заставляет вторую команду выполняться только при успешном выполнении первой команды):

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4 && cat temp.mp4

Затем вы можете направить вывод этой команды в любую программу, которая вам нравится.

Обратите внимание, что в общем случае этот шаблон (например, чтение файла с помощью cat исключительно для передачи его в другую программу) не одобряется, когда другая программа имеет встроенную поддержку чтения соответствующего файла. temp.mp4 в качестве входного файла для программы-потребителя.

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