一連の画像からビデオを作成しようとしています。しかし、各画像を異なる秒数で表示する必要があります。FFMPEG でこれを行う方法。
前もって感謝します。
FFmpeg wikiにいくつかのヒントがあります。この 1 つの例 (wiki の最後から 2 番目) は、特にニーズに適している可能性があります。
ffmpeg -loop 1 -f image2 -i img.png -c:v libx264 -t 30 out.mp4
ここで、後の数字-t
(例では 30) は動画の長さ (秒単位) です。
次のように、そのコマンドを数回実行するだけです。
ffmpeg -loop 1 -f image2 -i intro.png -c:v libx264 -t 5 out1.mp4
ffmpeg -loop 1 -f image2 -i someimage.png -c:v libx264 -t 15 out2.mp4
ffmpeg -loop 1 -f image2 -i someotherimage.png -c:v libx264 -t 25 out3.mp4
ffmpeg -loop 1 -f image2 -i outro.png -c:v libx264 -t 10 out4.mp4
そして、結果のビデオをマージします (必要な場合):
videos.txt
ビデオ ファイル名がリストされているテキスト ファイル (例: ) を作成します。
file 'out1.mp4'
file 'out2.mp4'
file 'out3.mp4'
file 'out4.mp4'
このコマンドを実行します (必要に応じてファイル名を変更します)
ffmpeg -f concat -i videos.txt -c copy final_video.mp4
ビデオの結合 (連結) の詳細については、wikiを参照してください。
これffmpeg
に関するセクションが含まれています: https://trac.ffmpeg.org/wiki/Slideshow
次に例を示します。
の内容例input.txt
:
file '/path/to/dog.png'
duration 5
file '/path/to/cat.png'
duration 1
file '/path/to/rat.png'
duration 3
file '/path/to/tapeworm.png'
duration 2
file '/path/to/tapeworm.png'
次に実行します。
ffmpeg -f concat -i input.txt -vsync vfr -pix_fmt yuv420p -framerate 30 output.mp4