实践过程中对AMR转PCM的总结:
1.amr转pcm,8k采样率与16k采样率的数据格式不同。8k采样率的数据有很多 0x7f 和 0x80
2.移植的音频程序输出的是8k采样率,8位数据
3.转出的格式是8k采样率,单声道,8位,无符号uint8_t数据类型
其它:
AMR转PCM使用的库:
opencore_amr
wav与pcm的字节区别:
https://www.jianshu.com/p/3f80fb907bd5
(下面的是我的废话,无参考价值,可以不用看)
我的思路:
官方有一个amr转pcm的例程。我也有一个移植了的例程,但是不能使用。我看着官方例程给的思路,然后对比移植好的程序的思路,看看有没有出入。但是一直很混乱,因为没有明白amr与pcm到底有什么区别,为什么那样干。于是我使用winHex软件打开一个acm的16进制,一个pcm的文件的16进制。我发现ACM的头有一个固定参数(#!AMR)。8k采样的,8位的,小端的(不确定8位数据有没有大小端)pcm数据大部分都是 0x7f与0x80这样的数据。我的程序中也有0x7f与0x80.于是我就想是不是程序输出的数据和我打开的这种类型的格式一样(8k采样,8位,小端),最后发现是一样。
教训:
有时候做一件东西,不一定非要先去弄细节,先明白大概原理,或者用简单的方式去复现程序要做的事,然后再去看程序,也许会有不一样的效果。比如我程序做的事就是把amr转pcm。那么我用了一个现成的软件把amr转了pcm,然后用winhex看了转后的文件有什么不同。当我再去看程序时候,感觉明朗了很多
联系:
有什么需要讨论的加我联系方式,一起讨论。QQ:848337706@qq.com