用ffmpeg把8秒视频做成乒乓循环,踩了两个坑

举报
yd_215032336 发表于 2026/11/10 02:10:15 2026/11/10
【摘要】 昨天用 ffmpeg 给一个 8 秒的沙滩视频做循环,踩了个坑记一下。事情是这样,手头有段海边拍的视频,想做成一个 40 秒左右的治愈系短片配音乐发出去。直接循环播放的话,8 秒一跳太生硬了,就想着用 ffmpeg 的 reverse 把视频倒放再接回去,这样正放-倒放-正放,乒乓循环,看起来就是连续的潮水涨落,没有跳变。命令本身很简单,一条 filter_complex 就搞定:[0:v]...

昨天用 ffmpeg 给一个 8 秒的沙滩视频做循环,踩了个坑记一下。

事情是这样,手头有段海边拍的视频,想做成一个 40 秒左右的治愈系短片配音乐发出去。直接循环播放的话,8 秒一跳太生硬了,就想着用 ffmpeg 的 reverse 把视频倒放再接回去,这样正放-倒放-正放,乒乓循环,看起来就是连续的潮水涨落,没有跳变。

命令本身很简单,一条 filter_complex 就搞定:[0:v]reverse,split[a][b];[a][b]concat。第一次跑的时候卡了半天,后来发现是 8 秒的视频倒放要把整段都载入内存,机器内存小直接被 OOM 杀掉了。加了个 scale 先把分辨率降下来再 reverse,十几秒就跑完了。

另外一个坑是 zoompan。我想给画面加个缓慢放大的效果,一开始写了 d=5,结果画面是定格了一帧一帧放大,看着像 PPT。查了半天才知道 zoompan 的 d 参数是"每张输入图生成几帧",对视频流要写 d=1,让它逐帧处理,配合 z 表达式里的 in 变量做缓推,这样才是连续的。

字幕也没少折腾。ASS 格式比 SRS 灵活,开场标题做大字号淡入,歌词挂底部,白字黑描边在亮背景上才看得清。字体指定 Noto Sans CJK SC,一开始系统里没装中文字体,渲染出来的歌词全是方块。

整体下来一个 40 秒的成片,从踩坑到出片花了一个多小时,大部分时间在读 ffmpeg 文档。这工具就是这样,命令记不住,但每次解决一个问题下次就快了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。