强制ffmpeg输出WAV_FORMAT_PCM

时间:2015-10-29 22:47:26

标签: ffmpeg wav

ffmpeg(使用版本2.8.1)输出的包含高于48000的采样率(例如88200或96000)的任何wav文件的格式代码似乎将具有WAV_FORMAT_EXTENSIBLE格式而不是WAV_FORMAT_PCM。即使它是具有16位深度的2通道源,或者使用-ac 2 -acodec pcm_s16le强制执行这些设置。

为什么ffmpeg这样做?是否有任何命令行选项强制WAV_FORMAT_PCM被写为格式,无论采样率如何?重新采样太慢了。如果没有可用的命令行选项,我在哪里可以开始查看源代码?

1 个答案:

答案 0 :(得分:1)

我无法找到任何参考原因,也许它并不常见。 MSDN页面仅提及多个频道和高分辨率。

相关代码位于libavformat/riffenc.c

  waveformatextensible = (enc->channels > 2 && enc->channel_layout) ||
                           enc->sample_rate > 48000 ||
                           enc->codec_id == AV_CODEC_ID_EAC3 ||
                           av_get_bits_per_sample(enc->codec_id) > 16;