Я пытаюсь создать видео из двух изображений figure1.png
и figure2.png
(которые могут быть разных размеров) и двух аудиофайлов audio1.wav
и audio2.wav
. Я хочу сделать это так, что figure1.png
показывает, пока audio1.wav
прекращает воспроизведение, а затем figure2.png
показывает, пока audio2.wav
прекращает воспроизведение (с audio2.wav, начинающимся после audio1.wav). У меня нет особой удачи в этом. Моя лучшая попытка на данный момент - создать два видео и объединить их, но из-за проблем с форматированием это, похоже, не работает. Поэтому мне было интересно, есть ли способ сделать это с помощью одной команды ffmpeg, и если да, то что?
2 ответа
Допустим, размер первого изображения больше и составляет WxH. Если не уменьшите 2-й размер, а затем дополните. В любом случае, оба изображения должны иметь одинаковый размер.
ffmpeg -i image1.png -i image2.png -i audio1.wav -i audio2.wav
-filter_complex
"[0]setsar=1[a];
[1]pad=W:H:(ow-iw)/2:(oh-ih)/2:color=white,setsar=1[b];
[2]abitscope=r=25:s=WxH[a1v];
[3]abitscope=r=25:s=WxH[a2v];
[a1v][a]overlay[v1];
[a2v][b]overlay[v2];
[v1][2:a][v2][3:a]concat=n=2:v=1:a=1" out.mp4
Вы должны сначала создать видео без звука, я думаю. Для этого:
ffmpeg -framerate 24 -i figure%01d.png output.mp4
% 01d - это шаблон ваших имен файлов png. Я предполагаю, что формат контейнера mp4 будет подходящим.
После этого, в зависимости от продолжительности ваших аудиофайлов (вы должны настроить их вычисление вручную, насколько я знаю, нет механизма автоматической подгонки).
ffmpeg -loop 1 -i figure%01d.png -i audio.wav -c:v libx264 -c:a aac -b:a 192k -shortest out.mp4
Здесь используется внутренний кодер AAC, но вы также можете использовать любой другой механизм кодирования AAC.