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

如何用FFmpeg生成时长为0的空WAV文件?解析-t参数异常

问题解答

1. 为何-t 0会生成无限长音频而非时长为0的WAV文件?

FFmpeg中-t参数用于指定输出媒体的时长,但当取值为0时,会被解析为无效的终止条件。而anullsrc是一个持续生成静音音频的滤镜源,本身没有内置停止机制,一旦-t 0无法触发停止逻辑,FFmpeg就会持续从anullsrc读取并写入音频数据,直到磁盘空间耗尽。

另外WAV格式的文件头需要记录文件总大小,当FFmpeg持续写入但未收到停止信号时,无法正确计算并写入文件头的大小字段,后续还会触发文件大小无效的报错。

2. 如何用FFmpeg生成时长为0的空WAV/音频文件?

可以通过指定输出0帧音频的方式,让FFmpeg生成带有正确格式头但无音频数据的空WAV文件,命令如下:

ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -frames:a 0 -y $output
  • -frames:a 0:明确指定输出0帧音频,FFmpeg会自动处理格式头的生成,最终得到时长为0的合规WAV文件。
  • 也可以直接基于空输入生成:
ffmpeg -f wav -i /dev/null -y $output

不过这种方式需要确保FFmpeg能正确识别空输入并生成标准WAV头,推荐优先使用第一种方法,更适配自定义声道、采样率的需求。

附:该场景确实较为罕见,常规业务中一般不会需要生成时长为0的音频文件,但针对这种边界情况,通过指定帧数量而非时长的方式能有效规避无限写入的问题。

内容的提问来源于stack exchange,提问作者fishshrimp鱼虾爆栈

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:15:00