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

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

我希望从 .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

但是我如何添加背景图片?

谢谢。

答案1

您需要将图像添加为另一个输入,然后可以使用类似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将一个维度缩放为 1280,并按比例缩放另一个维度以保持纵横比。
  • [bg][v]overlay[outv]正在获取静态图像视频[bg]以及我们刚刚生成的视频流showwaves并命名[v]它们并叠加,以便中的图像[1:v]透过我们在中键入的透明部分显示出来[v]。输出名为[outv]
  • 现在,其中一个-map参数已被更改为使用[outv](覆盖过滤器的输出)而不是[v](仅仅是色键showwaves输出)作为输出中的视频源。

相关内容