.wavファイルと画像.jpgからビデオ波形を生成したいと思います。を使用して波形ビデオを生成できます
ffmpeg -i input -filter_complex "[0:a]showwaves=s=1280x720:mode=line,format=yuv420p[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy output.mkv
しかし、どうすれば背景画像を追加できますか?
ありがとうございました。
画像を別の入力として追加する必要があります。次に、colorkey
フィルターなどを使用してshowwaves
ビジュアライゼーションの背景を透明にし、overlay
フィルターを使用してshowwaves
ビジュアライゼーションと背景画像をブレンドできます。
次のようなものを試してください:
ffmpeg -i $audio -i $picture -filter_complex "[0:a]showwaves=s=1280x720:mode=line,colorkey=0x000000:0.01:0.1,format=yuva420p[v];[1:v]scale=1280:720[bg];[bg][v]overlay[outv]" -map "[outv]" -map 0:a -c:v libx264 -c:a copy output.mkv
出発点からの違いを分析する:
colorkey=0x000000:0.01:0.1
は、showwaves
によって生成されたビデオの黒を取り、透明にします。format=yuva420p
は、両方のビデオストリームを同じピクセル形式に変換するために必要です。[1:v]scale=1280:720[bg]
は、入力#1からビデオを取得し、showwaves
サイズに一致するようにスケーリングし、出力に[bg]
(バックグラウンド)という名前を付けます。これをたとえばに変更できます。 scale=1280:-1
1つの次元を1280にスケーリングし、アスペクト比を維持しながら他の次元を比例的にスケーリングします。[bg][v]overlay[outv]
は、静止画像ビデオ[bg]
と、showwaves
から生成し、[v]
という名前のビデオストリームを取得し、[1:v]
の画像が透けて見えるようにオーバーレイします。 [v]
でキーアウトした透明部分。出力の名前は[outv]
です。-map
引数の1つが変更され、出力のビデオソースとして[outv]
(カラーキー付きのshowwaves
出力のみ)ではなく[v]
(オーバーレイフィルターからの出力)が使用されるようになりました。