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

Python调用ffmpeg转ogg为wav时如何添加pcm_s16le编解码器标签0x0001

问题原因

你当前代码中指定输出格式为s16le,这是无封装的原始PCM裸流,本身不存在容器头结构,自然不会携带WAV格式对应的编解码器标签。而直接执行ffmpeg -i sample.ogg sample.wav时,ffmpeg会自动使用wav容器封装输出内容,写入的标准WAV头中就包含你看到的([1][0][0][0] / 0x0001)编解码器标识。

修改方案

只需要将输出格式从s16le改为wav即可,修改后代码如下:

import subprocess
import ffmpeg

args = (
        ffmpeg
        .input('pipe:')
        .output('pipe:', format='wav', acodec='pcm_s16le')
        .get_args()
       )
# 新增stderr配置避免ffmpeg日志输出干扰结果
p = subprocess.Popen(['ffmpeg'] + args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
wav = p.communicate(input=bindata)[0]

修改后输出的就是带完整WAV头的标准字节流,元数据中会正常显示对应的编解码器标签,全程也不会写入硬盘文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:06:05