带有背景图像的音频波形视频

Dam*_*841 3 video ffmpeg waveform

我希望从 .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
Run Code Online (Sandbox Code Playgroud)

但如何添加背景图片呢?

谢谢。

tgi*_*ies 5

您需要将图像添加为另一个输入,然后可以使用过滤器之类的东西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
Run Code Online (Sandbox Code Playgroud)

从你的出发点来分解差异:

  • colorkey=0x000000:0.01:0.1将去除 生成的视频中的任何黑色showwaves并使其透明。
  • format=yuva420p需要将两个视频流转换为相同的像素格式。
  • [1:v]scale=1280:720[bg]从输入 #1 获取视频,将其缩放以匹配我们的showwaves大小,并命名输出[bg](背景)。您可以将其更改为例如scale=1280:-1将一个维度缩放到 1280 并按比例缩放另一个维度,保持纵横比。
  • [bg][v]overlay[outv]正在获取静态图像视频[bg]以及我们刚刚生成的视频流,showwaves命名[v]并覆盖它们,以便图像[1:v]通过我们在 中键入的透明部分显示[v]。输出被命名为[outv].
  • 现在,参数之一-map已更改为使用[outv](覆盖过滤器的输出)而不是[v](仅颜色键控showwaves输出)作为输出中的视频源。