我捕获了原始音频数据流及其WAVEFORMATEXTENSIBLE结构。 WAVEFORMATEXTENSIBLE如下图所示:
按照 wav 文件的标准,我尝试将原始位写入 wav 文件。我要做的是:
写“RIFF”。
写一个 DWORD。(文件大小 - sizeof("RIFF") - sizeof(DWORD))。
=== WaveFormat 块 ===
写“WAVEfmt”
写一个 DWORD。(WAVEFORMATEXTENSIBLE 结构的大小)
编写 WAVEFORMATEXTENSIBLE 结构。
===事实块===
写“事实”
写一个 DWORD。( 4 )
写一个 DWORD。(流中的样本数,应该是 sizeof(rawdata)*8/wBitsPerSample )。
=== 数据块 ===
写“数据”
写一个 DWORD(原始数据的大小)
写入原始数据。
从以上步骤得到wav文件后,我用媒体播放器播放了wav文件,没有声音,用大胆播放会给我一个失真的声音,我可以听到这是我想要的正确音频,但声音是被噪音扭曲。
原始数据可以在这里找到
我生成的wav文件在这里
这让我很困惑,因为当我使用相同的方法将 IEEE-float 数据转换为 wav 文件时,它工作得很好。