Я пытаюсь создать видео из двух изображений figure1.png и figure2.png (которые могут быть разных размеров) и двух аудиофайлов audio1.wav и audio2.wav . Я хочу сделать это так, что figure1.png показывает, пока audio1.wav прекращает воспроизведение, а затем figure2.png показывает, пока audio2.wav прекращает воспроизведение (с audio2.wav, начинающимся после audio1.wav). У меня нет особой удачи в этом. Моя лучшая попытка на данный момент - создать два видео и объединить их, но из-за проблем с форматированием это, похоже, не работает. Поэтому мне было интересно, есть ли способ сделать это с помощью одной команды ffmpeg, и если да, то что?

2 ответа2

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    
0

Вы должны сначала создать видео без звука, я думаю. Для этого:

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.

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