次の ffmpeg コマンドを使用して、画像とオーディオ ファイルから mp4 を作成しました。
ffmpeg -y -i tmp/part1/frame0.png -i tmp/part1/audio0.mp3 -i tmp/part1/frame1.png -i tmp/part1/audio1.mp3 -i tmp/part1/pause0.5.mp3 -shortest -filter_complex "[1:0][4:0]concat=n=2:v=0:a=1[a1];[3:0][4:0]concat=n=2:v=0:a=1[a3];[0:0][a1][2:0][a3]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" -vcodec libx264 -qp 0 tmp/part1/out.mp4
これにより、2 つのフレームとオーディオ トラックを含むビデオが生成されます。ただし、何らかの理由で、このビデオを VLC で再生すると最後のフレームが表示されず、YouTube にアップロードするとビデオの長さが正しく表示されません。
このバグを回避するにはどうすればいいでしょうか? 簡単な回避策はありますか?
答え1
画像を一定時間(オーディオ セグメントより短い時間)ループ再生します。
ffmpeg -y
-loop 1 -t 2 -i tmp/part1/frame0.png
-i tmp/part1/audio0.mp3
-loop 1 -t 2 -i tmp/part1/frame1.png
-i tmp/part1/audio1.mp3
-i tmp/part1/pause0.5.mp3
-shortest
-filter_complex "[1:0][4:0]concat=n=2:v=0:a=1[a1];
[3:0][4:0]concat=n=2:v=0:a=1[a3];
[0:0][a1][2:0][a3]concat=n=2:v=1:a=1[outv][outa]"
-map "[outv]" -map "[outa]" -vcodec libx264 -qp 0 tmp/part1/out.mp4