WAV格式音频转G.711A

        有个项目,要求从微信录音,远程传输到终端设备广播。终端只支持G.711A格式,而从微信获取的音频文件是AMR格式(具体获取见微信开发文档),所以就需要音频转码。以前没有做过音频开发,对各种格式不了解,花了几天学习AMR、WAV、G.711等格式编解码,定下技术方案:把AMR转码成WAV,然后提取PCM数据,再压缩成G.711A。在AMR转WAV时,没弄明白AMR格式中每帧数据去掉帧头后那段数据该怎么编解码,不得已只好用ffmpeg转成WAV临时解决。


WAV格式:

                //wav文件格式:
                //0-3字节:RIFF标识
                //4-7字节:文件长度
                //8-11字节:WAVE标识
                //12-15字节:fmt 标识,最后有个空格符
                //16-19字节:文件内部格式信息块大小
                //20-21字节:音频编码方式,1表示PCM格式
                //22-23字节:声道数,单声道1,双声道2
                //24-27字节:采样率,比如44100
                //20-31字节:音频传输速率,单位字节
                //32-33字节:每次采样的字节数,例如,双声道16位,就是4字节
                //34-35字节:采样值的精度,8bit 16bit 24bit
                //[附加数据 2字节]
                //[可选块 12字节]
                //36-39字节:data标识
                //40-43字节:音频数据长度

//...................:PCM音频数据


获取音频数据部分代码:

                int channel = (data[23] << 8) + data[22];


                //获取每次采用的字节数
                int bytesPerSample = (data[33] << 8) + data[32];

                //查找data标记
                int index = 36;
                for (; index < data.Length; index++)
                {
 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值