当前位置: 首页 > 工具软件 > chat-im > 使用案例 >

IM语音聊天

匡翰
2023-12-01

IOS、安卓IM语音聊天开发初探部分心得——本地音频处理篇(下)

前文书咱们说到IOS下如何录制一个wav格式的音频,然而现在的情况确实安卓不支持wav格式,于是有看官说了,你个二百五,就不能选个安卓支持的格式录制么,我很负责任的说,苹果和谷歌掐架,苦的就是我们这帮苦逼的技术人员。。。安卓的格式苹果全不支持,看好是全不,不是全部,反过来苹果的格式,安卓也不惯着。。。。

当然上有政策下有对策是万年不变的真理,Ios与安卓的音频互通是难不倒我们伟大的程序员的,而目前解决这个问题方案有很多种但大致以下3种方式,且听我细细道来。

第一种方案对于服务器负荷较大,不论是安卓端亦或是IOS端都将音频传输到服务器,通过服务器进行转换再进行转发。这种做法可以不受系统限制,但是信息量较大时对服务器负荷较大,对服务器端的要求很高。据传闻,微信就是采用这种方式进行的语音IM交互

第二种方案是不论IOS端还是安卓端都统一使用相同的第三方音频库进行编解码处理,然后再进行网络传输,优点是可供选择的音频库非常多,可以根据自己不同的需求选择各种各样的音频格式,但是因为不论是IOS端还是安卓端都需要对其进行i编码解码处理,而项目初期并没有设计这方面的需求所以如果双端都进行修改修改量实在太大。同样据传闻,同为语音IM的成熟案例微米就是依靠Speex的三方开源库来完成的,这种格式体积小,能降噪,是目前比较受推崇的方式。

我采用的是第三种方式,amr格式的音频文件是安卓系统中默认的录音文件,也算是安卓支持的很方便的音频文件,IOS系统曾经是支持这种格式的文件,自4.3以后才取消了对amr的支持(原因应该不需要我多说。。。),可见,amr格式的音频文件并非IOS处理不了的,因为有了这样的概念和潜意识的植入,我就开始一门心思在网络上找寻各种各样的实例以及demo,我要做的就是把问题尽量都解决在IOS端。终于功夫不负有心人,最终让我得以成功的在IOS端成功的转换出安卓端可以使用的amr文件。接下来,我们就说说如何在IOS端完成wav与amr文件的互转。

首先推荐给大伙提供一个demo在下面的连接下载。此demo转载自中国开源社区,本人发自内心的向发布者Jeans大人致以最崇高的敬意。

http://www.oschina.net/code/snippet_562429_12400

demo下载打开项目后将如下四个源码文件以及两个库文件拖入自己的项目,引用AudioToolbox.framework、CoreAudio.framework以及AVFouncation.framework即可完成类库的导入

 类似资料: