You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FFmpeg制作带背景图片的圆形波形视频?

解决FFmpeg带背景图的圆形波形视频生成问题

修正后的可运行单条命令

ffmpeg -i input.mp3 -i background.png -filter_complex "[0:a]showwaves=size=100x100:colors=white:draw=full:mode=p2p:r=30[v];[v]format=rgba,geq='p(mod((2*W/(2*PI))*(PI+atan2(0.5*H-Y,X-W/2)),W), H-2*hypot(0.5*H-Y,X-W/2))'[vout];[1:v]loop=-1:size=2,fps=30,format=rgba[bg];[bg][vout]overlay=(W-w)/2:(H-h)/2:shortest=1[outv]" -map "[outv]" -map 0:a -pix_fmt yuv420p output.mp4

原命令失效原因及修正点

  • 背景图时序不匹配:原命令中背景图是单帧资源,未设置循环播放,导致视频长度仅为1帧,和音频驱动的波形视频长度完全不兼容。添加loop=-1:size=2让背景图无限循环,fps=30统一帧率(与showwaves指定的r=30对应,避免帧率冲突)。
  • 通道格式不一致:给背景图添加format=rgba,确保和波形流的通道格式统一,避免叠加时圆形波形的透明区域失效,保证背景能透过波形的透明部分正常显示。
  • 视频长度强制对齐:在overlay参数中加入shortest=1,让最终视频长度与音频(最短流)保持一致,避免背景无限循环导致视频过长。

命令核心逻辑拆解

  1. [0:a]showwaves=...:从音频生成100x100的波形视频,指定帧率r=30统一时序基准。
  2. [v]format=rgba,geq=...:将波形视频转换为RGBA格式,通过geq滤镜裁剪出圆形显示区域。
  3. [1:v]loop=-1:size=2,fps=30,format=rgba[bg]:处理背景图,实现循环播放、统一帧率、匹配通道格式。
  4. [bg][vout]overlay=...:shortest=1:将圆形波形叠加到背景图中央,强制视频长度与音频对齐。

内容的提问来源于stack exchange,提问作者Ansh Rathod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:37:20