PCM数据保存的小技巧

音频处理时,有时需要将采集的PCM数据保存成文件,以供分析。
在保存PCM文件时,遇到了如下问题: 本机播放音乐,设置为混音模式,用dsound采集音频,然后保存采集到的PCM数据。
用Cool Edit Pro打开pcm文件, 结果发现保存的数据都是刺啦刺啦的声音。


pcm文件

放大后

再放大

发现数据是异常的。具体原因是什么呢?
后来发现是保存的时候,文件保存的模式不正确。
当前使用的模式为默认的文本模式:

FILE *fpOutputPCMFile = fopen(".\\output_t.pcm", "w+");

将以上代码中的w+修改为wb+:

FILE *fpOutputPCMFile2 = fopen(".\\output_a.pcm", "wb+");

再次采集音频数据, 音频正常。


正常音频数据

为什么会出现这个现象呢?

w+ 与 wb+的区别

可以发现,在文本模式下,以文本方式打开文件时,fwrite函数每碰到一个0x0A时,就在它的前面加入0x0D.其它内容不做添加操作

采集音频时,同时以文本模式和二进制模式保存PCM数据,用BeyondCompare以16进制模式打开文件进行对比。


数据对比

References:

http://blog.csdn.net/guyue6670/article/details/6681037

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容