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

FFmpeg跨淡入输入时长小于1秒生成空输出问题咨询

问题原因及解决方案

核心原因

这是FFmpeg 4.2~4.4版本中acrossfade滤镜的已知兼容性bug,触发条件为淡入时长设置为0、且第一个输入流时长小于1秒:

  • 旧版本acrossfade内置了硬编码的最小帧缓冲校验逻辑,默认要求第一个输入流至少包含1秒的音频帧,当你设置跨淡入时长d=0时,该校验逻辑没有被正确绕过,小于1秒的输入会被判定为无效流,直接丢弃所有输出帧,导致最终输出文件为空。
  • FFmpeg 4.2版本出现段错误是同一问题引发的空指针异常,滤镜尝试读取不存在的第一输入流缓冲帧时触发崩溃。

可行解决方案

  • 方案1:跨淡入时长为0时直接替换为concat滤镜拼接音频。当你的逻辑判断不需要跨淡入时,直接用concat逻辑更简单也不会触发bug,滤镜部分可以改为:
[0]atrim=duration=0.28[atrim_0];[atrim_0][1]concat=n=2:v=0:a=1[final]
  • 方案2:在atrim后新增asetpts滤镜重置时间戳,可绕过旧版本的校验逻辑,FFmpeg 4.4下测试可正常输出:
[0]atrim=duration=0.28,asetpts=PTS-STARTPTS[atrim_0];[atrim_0][1]acrossfade=d=0:c1=tri:c2=tri[final]
  • 方案3:升级FFmpeg到5.0及以上版本,该bug已经在5.0版本正式修复,原命令可直接正常运行。

内容的提问来源于stack exchange,提问作者Sonia Seddiki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:57:01