Моя цель — применить наложение изображения с эффектом затухания в определенное время в видео, а также применить фоновый звук к видео в одной команде. Видео также будет ограничено всего 15 секундами.
В настоящее время я могу добиться этого с помощью 2 команд, которые в ответ дадут 2 вывода. Как мне объединить эти 2 команды вместе?
Первая команда
ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1" incomplete.mp4
Второе командование
ffmpeg -i audio.mp3 -i incomplete.mp4 -shortest finalVideo.mp4
Это моя попытка объединить две команды в одну, однако теперь видео больше не ограничено 15 секундами, а фоновый звук применяется только к нескольким видео после тестирования с несколькими видео в формате mp4.
ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -i audio.mp3 -shortest -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1" finalVideo.mp4
решение1
Использовать
ffmpeg -ss 00:00:00 -t 00:00:15 -i video.mp4 -loop 1 -i image.png -i audio.mp3
-filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i];
[0][i]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:shortest=1[v]"
-map "[v]" -map 2:a -shortest incomplete.mp4
В ffmpeg размещение опций имеет значение. Любая опция перед входом применяется только к этому входу. В вашей попытке комбинированной команды вы вводите аудио после спецификаций времени, поэтому они становятся специфичными только для аудиовхода.
FFmpeg использует систему сопоставления для определения потоков, которые следует включить в вывод. Если явно не заданы назначения сопоставления, сопоставление по умолчанию выбирает один аудиосигнал из числа входов. Похоже, что некоторые из ваших MP4 имели аудиопотоки, которые были приоритетнее MP3. С явными назначениями этого не произойдет.