静止画像とその上にオーバーレイされる小さなビデオを含むビデオを作成しようとしています。オーバーレイビデオのサイズと位置は、FFMPEGを実行するサーバースクリプトに動的に送信されるため、オーバーレイする前にビデオを拡大縮小する必要があります。したがって、私が使用した数値はテスト用です。元のビデオのサイズは72:48pxです。私はこのようなコマンドを試しました:
ffmpeg -i background.jpg -vf "movie=overlay.mp4, scale=128:96 [inner]; [in][inner] overlay=70:70 [out]" -y output.mp4
ただし、空のビデオが即座に生成されます。一方、ffmpeg
コマンドの直後に-loop 1
を挿入しようとすると、ビデオの処理に時間がかかり、終了しないようです。
私が達成しようとしているのは、最初にスケーリングされたビデオを作成しないようにすることです。それは可能ですか、そして私は何を間違っていますか?
使用する
ffmpeg -loop 1 -i background.jpg \
-vf "movie=overlay.mp4,scale=128:96[inner];[in][inner]overlay=70:70:shortest=1[out]" \
-y output.mp4
画像をループする必要がありますが、それは終わりのないストリームを作成するため、オーバーレイフィルターの最短の引数は、ムービーが終了したときにフィルターを停止します。
オーバーレイのオーディオが含まれている
ffmpeg -loop 1 -i background.jpg -i overlay.mp4 \
-filter_complex "[1]scale=128:96[inner];[0][inner]overlay=70:70:shortest=1[out]" \
-map "[out]" -map 1:a -c:a copy -y output.mp4