如何使用ffmpeg将g729编码的立体声WAV文件转换为可播放格式
解决方案
核心问题原因
你使用-f g729参数强制将输入文件识别为裸G729数据流,但你的文件是封装在WAV容器中的G729编码音频,该参数会让FFmpeg跳过WAV文件头解析,直接把头部数据当成音频帧解码,最终输出噪音,日志中的pitch_delay_int 144 is too large、corrupt input packet报错都是由此导致的,并非源文件损坏。
另外你提到源文件是立体声,但你的命令没有指定输入声道配置,FFmpeg默认将G729流识别为单声道,也会导致解码异常。
可尝试的转码命令
- 第一步先移除强制格式参数,让FFmpeg自动识别WAV容器:
ffmpeg -i input.WAV -ac 2 output.WAV
- 如果上述命令仍无法正常解码,手动指定输入音频的参数匹配你的源文件属性:
ffmpeg -ar 8000 -ac 2 -b:a 17448 -i input.WAV output.WAV
- 如果还是失败,可先提取WAV中的G729裸流再解码:
# 第一步提取裸G729流 ffmpeg -i input.WAV -acodec copy -f g729 raw.g729 # 第二步解码裸流 ffmpeg -f g729 -ar 8000 -ac 2 -i raw.g729 output.WAV
转码完成后的output.WAV就可以正常播放,也能接入你的Python语音识别代码使用。
内容的提问来源于stack exchange,提问作者Leonardo Soares
相关产品推荐
相关产品推荐

