FFmpeg showwaves滤镜:如何修改波形颜色(附Shell代码)
如何修改FFmpeg生成的音频波形颜色
我帮你梳理下修改波形颜色的正确方法,你的原命令其实绕了个弯——先生成黑色波形再抠除黑色来做透明叠加,其实我们可以直接让showwaves滤镜生成指定颜色的波形,同时保留透明背景,效果更好也更简单。
直接修改波形颜色的优化命令
ffmpeg -y -i $local_mp3 -loop 1 -i $local_image -filter_complex "[0:a]showwaves=s=1280x720:mode=line:colors=0xFF0000:bgcolor=0x00000000,format=yuva420p[v];[1:v][v]overlay[outv]" -map "[outv]" -map 0:a -vcodec libx264 -pix_fmt yuv420p -profile:v main -level 4.0 -acodec aac -strict -2 -shortest -movflags +faststart output.mp4
关键修改说明
- 指定波形颜色:通过
colors=0xFF0000参数设置波形颜色,这里用的是红色的十六进制代码,你可以替换成任何你想要的颜色:- 蓝色:
0x0000FF - 绿色:
0x00FF00 - 半透明紫色:
0x80008080(最后两位是透明度,00完全透明,FF完全不透明)
- 蓝色:
- 透明背景设置:添加
bgcolor=0x00000000让波形的背景完全透明,这样叠加到背景图上不会有多余色块,省去了原命令里的colorkey滤镜,避免了抠色边缘不干净的问题。 - 移除冗余滤镜:删掉了原命令中的
colorkey步骤,因为直接设置透明背景更高效可靠。
如果你想保留原抠色逻辑(不推荐)
要是你坚持用原来的抠色方式,只需要同步修改showwaves的波形颜色和colorkey的目标颜色就行。比如把波形改成蓝色,就把showwaves的默认黑色换成0x0000FF,同时把colorkey=0x0000FF:0.01:0.1。但这种方式容易出现波形边缘残留或抠除过度的问题,还是推荐上面的透明背景方案。
内容的提问来源于stack exchange,提问作者fab23
相关产品推荐
相关产品推荐

