我挂在IAudioClient和IAudioRenderClient中以检索原始音频缓冲区。为了确定我之前在客户端上调用GetMixFormat的格式。这适用于大多数应用程序,如Firefox中的游戏或Flash Player。IAudioRenderClient :: ReleaseBuffer挂钩有时会扭曲音频(尝试查找原始音频的类型)
但是,从Google Chrome(Flash)捕获的音频失真。我附上了从Firefox和Google Chrome中捕获的相同音频流的简短示例。 GetMixFormat()报告IEEE_FLOAT,两个48k的通道。但是,在Audacity中导入它们并使用这些参数时,只有Firefox播放器可以正常播放。事实上,为了使图形在Chrome浏览器上正确显示,我必须将其导入为已签名的PCM(尽管如此仍然存在扭曲)。
任何想法为什么GetMixFormat错误或Google Chrome代码片段使用的是什么格式?作为一个说明,我发现Chrome示例包含1个完整帧(0xF00字节),然后只有一个帧(0x780字节),其余填充0,即使函数报告写入0xF00字节。但即使删除零数据,我也无法获得任何地方。 Chrome以某种方式改变缓冲区?
文件:
- http://lms-dev.com/files/so/audio_ff.raw
- http://lms-dev.com/files/so/audio_chrome.raw
- http://lms-dev.com/files/so/audio_chrome_skip_empty_frame.raw
任何帮助,非常感谢!提前致谢。