web-dev-qa-db-ja.com

背景画像付きオーディオ波形ビデオ

.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

しかし、どうすれば背景画像を追加できますか?

ありがとうございました。

2
Damien5841

画像を別の入力として追加する必要があります。次に、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](オーバーレイフィルターからの出力)が使用されるようになりました。
2
tgies