[求助] 音频处理

newnonlee   2014-4-21 19:00 楼主
我现在想做一个音频压限器。就是对一个*.wav的音频,他是一个PCM编码的音频文件进行压限处理。我我现在想在PC机上用C语言仿真算法,我想将一个声音的大小直接减半,我需要怎么做呢?我先直接把读取的音频文件的数据除以2了,但是播放之后的声音全是噪音。那么想要改变音频的声音,将声音减小一般,我要用C语言怎么的去操作读取的音频文件的数据呢?

回复评论 (6)

确定是按照wav文件格式将相关的数据除以2了么?开头部分的格式定义不会也这样处理了吧?还是幅度位数16位还是8位?
没工作,没女人老婆,没宽带 ,  没钱
点赞  2014-4-21 19:54
你去查WMV文件格式呗,头部肯定不是数据。
点赞  2014-4-21 20:01
引用: wangfuchong 发表于 2014-4-21 19:54
确定是按照wav文件格式将相关的数据除以2了么?开头部分的格式定义不会也这样处理了吧?还是幅度位数16位还 ...

确定,我把他的头文件去了,没有处理头文件,他是24位采样的,3个字节为一个数据的,我每取6个字节的数据,前三个字节是左声道,后三个数据是右声道。分别对左右声道的存储数据除以2的。这是头文件的。 QQ截图20140421203600.jpg
点赞  2014-4-21 20:39
引用: laxch123 发表于 2014-4-21 20:01
你去查WMV文件格式呗,头部肯定不是数据。

嗯,我看了wav的头文件。没有处理头文件。如果头文件改变了的话肯定不能播放的。我只处理了出具部分的。我想请教一下24bit的wav音频是每三个字节为一个数据单位存储不?能指导指导我做不?谢谢了
点赞  2014-4-21 20:41
引用: wangfuchong 发表于 2014-4-21 19:54
确定是按照wav文件格式将相关的数据除以2了么?开头部分的格式定义不会也这样处理了吧?还是幅度位数16位还 ...

开头部分我没有处理。我只处理了数据部分,它是一个24bit的数据,每6个字节为一个数据块,前三个字节为左声道的数据,后三个字节为右声道的数据。我理解的对不?能指导知道我做不?或者你用C语言试试看这样能不能行的同呢?
点赞  2014-4-21 20:43
那就不知道了,像高低字节方向没有搞错这类问题看来你也不会犯的吧
没时间,否则真会给你试一下

说不定还是仔细检查检查,也许不注意的代码细节出了问题?
没工作,没女人老婆,没宽带 ,  没钱
点赞  2014-4-21 23:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复