本文虽属原创,但是内容都是来自于网络,参考了大家的微博,以及论坛的总结。
在做语音对讲的时候,将会碰到录制语音格式的问题,因为要考虑自己开发设备的支持的格式,还要考虑其他设备操作系统的支持的格式,以及各自平台实现各格式的难易程度。
以前公司做语音这部分,解决方式是通过本地录制一个语音文件,在服务器进行编解码转换。当然每个平台也是选择自己最合适的编码格式。
现在平台主要是ios与android两个主流平台, wp的暂时没有考虑。
主要的录制格式有,mp3, AAC, iLBC, Speex, amr这几种,每个格式都各有特点,iLBC, Speex, amr 录制的文件大小都挺小的,挺适合网络传输的。
现将各录音格式的解决方式总结如下:
mp3: ios,android录制都 需要进行编码转换,使用lame第三方库,播放应该都可以直接播放
iLBC:ios支持编码解码, android 低版本不支持,不过有开源第三方库,可以进行录制编码,播放解码的处理
Speex:也是开源的第三方库,声称文件小,能降噪,需要ios,android客户端都进行编码解码处理
amr:ios 4.3之前的版本支持,以后版本都不支持amr格式,android设备支持该格式,采用这种格式,ios设备可用libOpenCore第三方库进行转换,播放时再进行解码成原始pcm进行播放。android设备可直接录制与播放
aac:两系统应该都支持的格式,但有说android设备有支持的不够好。没做测试,具体情况未知。
方案选择上,应该aac最方便,但是看网络上,好像讨论的对此不多,可能实际应用不是太广。其他的都各有千秋,可根据情况自己选择。具体实现,准备先采取mp3测试下看下效果如何。
第三方库编解码过程中,有两种方式,可以直接录制成文件后,再进行转换,也可以原始数据边录边转换,最后保存文件。都需要实际检验下,看效果如何