android录制音频通过网络传输到服务器播放

来源:互联网 发布:淘宝客呼醒淘宝 编辑:程序博客网 时间:2024/06/06 11:47

         暂时假象的2种场景,一种是android实时录制音频,通过编码rtp打包到服务器,服务器接收并转发,客户端能够实时播放。这个是单向音频传输的想法,与spydroid处理音频类似,但由于spydroid本身的音频在我小米1s上测试不成功,故自己考虑用其他方式来实现。为什么没有把spydroid源码分析系列写下去,主要原因是,spydroid源码本身还存在不少问题。比如h263编码在我机子android minu2.2上测试正常,而h264编码通过VLC播放黑屏。我借用同事三星手机,android2.3.3却出现测试h264正常,h263没反应的情况。因为视频采用的硬编码,不同机型的兼容性不同,故音频不采用AMR编码或者AAC编码,貌似AMR适合低版本的android系统,而AAC适合高版本的android系统。我决定采用第三方编码库,考虑了很久,放弃了iblc,打算采用speex编码库。

           思路想法:

1、audioRecorder录制音频,格式为未压缩的PCM格式

2、speex编码压缩,rtp打包传输到服务器。编译后的speex的so库网上有很多,自己就不用考虑那么多,自己拿来用,通过jni调用它就ok了

3、服务器接收数据,客户端VLC通过rtsp请求服务器,听到实时录制的声音。

       为了测试正确性,先把录制的音频保存为spx格式,看是否能够正常播放。这一步已经测试成功,参考网上的一个例子。GaussR工程。

        rtp打包发送到服务器,服务器端先建立sdp文件播放音频,用来测试正确性。如果能够听到声音,服务器编写代码,接收数据并转发。

 

      第二种场景是语音聊天,和sipdroid很类似,2客户端头通过与服务器建立通信,知道对方的ip,端口,通过udp吧接收的数据直接发送到对方。编解码库还是采用speex,它很强大,可以消除噪音、回音等。

    

      接下来是编写代码,给自己鼓气,加油

 

原创粉丝点击