Я хочу вывести видеофайл с несколькими звуками, но поместить их в один канал.
Я пробовал несколько способов сделать это, но мне всегда дают видео с несколькими звуковыми потоками.
Как это

Моя команда

ffmpeg -r 30 -i test_%03d.png 
-itsoffset 10 -ss 5 -t 20 -i s01.wav
-itsoffset 15 -ss 10 -t 30 -i s02.wav 
-map 0:v -map 1:a:0 -map 2:a:0 -c:v libopenh264 -c:a mp3 test.mp4

Новый командный тест

-framerate 30 -i test_%03d.png -ss 0.2 -t 1 -i sound01.wav -ss 1 -t 2 -i sound02.wav
-filter_complex
"[1] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [a1];
 [2] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [a2]; 
 [a1]adelay=400|400,apad[b1]; 
 [a2]adelay=900|900[b2]; 
 [b1][b2]amerge=2[a]" 
 -map 0:v -map "[a]" -c:v libopenh264 -c:a mp3 -ac 2 output.mp4

Поскольку фильтры не могли выбрать их формат, произошла ошибка, я добавил формат в команду. Но теперь происходит другая ошибка. Нет схемы расположения каналов для входа 1 и видео не хватает sound01, пожалуйста, помогите мне!

1 ответ1

0

Чтобы объединить несколько аудиопотоков в один, вы должны использовать фильтры для объединения потоков:

ffmpeg -framerate 30 -i test_%03d.png -i s01.wav -i s02.wav \
       -filter_complex "[1][2]amerge=2[a]" \
       -map 0:v -map "[a]"   
       -c:v libopenh264 -c:a mp3 -ac 2 test.mp4

Частота framerate является правильным вариантом для изображений и потоков.

-ac 2 микширует объединенное аудио на 2 канала, так как это верхний предел для MP3-кодера.


Для обновленной команды

ffmpeg -framerate 30 -i test_%03d.png 
       -ss 5 -t 20 -i s01.wav
       -ss 10 -t 30 -i s02.wav
       -filter_complex "[1]adelay=10000|10000,apad[a1];
                        [2]adelay=15000|15000[a2];
                        [a1][a2]amerge=2[a]" \
       -map 0:v -map "[a]" -c:v libopenh264 -c:a mp3 test.mp4

adelay звук впереди и принимает значение в миллисекундах на канал. apad аудио в конце и необходим, потому что amerge заканчивается самым коротким потоком.

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