Я поддерживаю программное обеспечение, которое использует ffmpeg
для автоматического микширования и перекодирования двух входных потоков в один выход с видео и аудио дорожкой. В настоящее время я сталкиваюсь с некоторыми проблемами переносимости и хотел бы улучшить использование ffmpeg
чтобы обеспечить максимально возможную переносимость моего приложения:
- Будет работать практически на всех ОС и дистрибутивах
- Будет работать со старыми выпусками ffmpeg (debian squeeze по-прежнему использует ffmpeg 0.5.10)
Мой первый источник - файл FLV или mp4. Он содержит два потока: аудио и видео. Мне плевать на видео, оно не включено в окончательный файл.
Второй источник - список изображений PNG или JPG. Они будут использованы для создания видеопотока с использованием image2
.
На выходе должен быть файл с двумя потоками: аудио и видео. У меня нет строгих требований в отношении контейнера, аудиокодека и видеокодека. Они должны быть легко доступны только на любой ОС / устройстве. Я хочу максимально сохранить качество звука. Видеопоток представляет собой набор статических слайдов. Было бы здорово минимизировать размер выходного файла.
Согласно этому описанию, какие флаги / контейнеры / кодеки вы бы использовали?
Описание текущего процесса следующее:
Извлечь звуковую дорожку из первого источника
ffmpeg -v error -i source_1_path -vn -acodec libvorbis audio_track.ogg
Создать окончательный файл
ffmpeg -v error -f image2 -r 1 -i frame_pattern.jpg -i audio_track.ogg output.avi
Я думал, что ffmpeg будет автоматически использовать наиболее подходящие аудио / видео кодеки и настройки. К сожалению, это не работает в некоторых дистрибутивах Linux (например, [ac3 @ 0x1e60380] invalid bit rate
с 0.8.6-6:0.8.6-0ubuntu0.12.10.1
).
Очевидно, было бы лучше сделать это за один проход, а не создавать временную звуковую дорожку.