Android语音

MINA-自带有心跳协议

ILBC

VoIP

SOCKET-TCP

SOCKET-UDP   500+B

RTP RTCP ->RSTP

NAT的四种类型及检测http://blog.sina.com.cn/s/blog_5669faf70100xz54.html

UPD心跳与TCP心跳的比较

UDP打洞技术http://blog.csdn.net/hxhbluestar/article/details/102387

粘包问题

音频格式的理解:

音频的格式定义了从音波到数字化信号的量化过程中的一些参数以及对量化后的2进制值的处理算法,这些参数中最重要的三个就是采样频率(多久时间间隔采样一次),量化的分辨率(每次采样获取的信号值用多大的空间进行存储),声道数目。然后通过一些有损或者无损的算法对元数据进行压缩,消除一些噪点声音等的处理。使得文件体积变小

用Android中处理音频来举例

你可以用AudioRecorder来采集数据获取PCM源数据,然后用某些开源的编解码对采取的元数据进行进一步的处理,比如ilbc(Android自带的用于流媒体的库),在编码完成后给这个编码后的语音文件定义一个格式名称,比如.lbc文件,然后当相应的解码器识别是.lbc文件时就知道该如何进行解码了(其过程类似加密解密,当然编解码本身也可能是对语音进行加密解密操作)

你也可以用MediaRecorder来录制音频,MediaRecorder相当于为开发者提供了一个非常方便的封装,他封装了元数据的采集工作和用一些知名的音频编解码格式对音频进行处理(比如.wav .amr等)所以开发者可以减少很多的工作量,不需要再自己去实现编解码的过程了,但是也会出现相应的问题,比如编码后的音频传输到iphone手机上,而iphone默认的解码不识别Android端的编码格式,所以用开源编解码库来实现编解码操作可以实现各个平台的统一!


UDP和TCP传输

UDP相对于TCP而言,是缺少一个可靠的丢失重发机制,因此可以立即返回,所以你觉得快
UDP属于发射后不管,但是从IP层来说,它的效率和TCP相比,几乎相同


TCP为什么慢呢?就是因为需要 发射 确认 这样一个循环过程,所以慢


现在喜欢用UDP代替TCP的原因主要是 TCP的重发机制不完美,等待时间不合理,响应经常偏慢


UDP的问题主要在于丢包,如果你的API层协议规定部分数据可以丢失,那么UDP的响应速度会是最好的选择
同样,如果规定绝对不可以丢包,那么需要你自己在API或者引擎里负责处理UDP的可靠传输
一般测试下,在相对可靠的环境里,UDP的丢包率很低,因此即使采用确认模式传输,速度也很快
但是,如果在INTERNET上,例如 电信到CNC线路,丢包率是偏高的,效率会严重降低,CPU开销剧烈增加[主要是确认机制导致的]

以上纯属个人观点,转载请声明出处:http://blog.csdn.net/softmanfly/article/details/12243701

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值