Android ilbc 语音对话示范(三)程序流程

 BY http://blog.csdn.net/ranxiedao 谢绝转载!

上一篇文章中详细讲述了 ilbc 在Android平台的移植和编译,现转到Java层,实现音频的采集和处理操作,本示范中的程序流程图如下:

  顺便提一下:因为是在Ubuntu下写的博客,所以没有一个现成的工具来绘制流程图,后来网上找到一个在线绘图网站:

  http://creately.com/ 感觉非常不错,绘制功能强大,推荐给大家,需要注册才能使用。  

 

   图解:

 1. 发送端有三个主要的类:AudioRecorder(负责音频采集),AudioEncoder(负责音频编码),AudioSender(负责 将编码后的数

发送出去); 这三个类中各有一个线程,录制开始后,这三个线程一起运行,分别执行各自的任务, AudioRecorder采集音频后,添加到

AudioEncoder 的音频数据的List中,而AudioEncoder 的编码线程不断从List头部取出数据,调用 ilbc 的底层\函数进行编码,编码

后的数据则又添加到下一级的AudioSender的 List中,AudioSender又不断从头部取出数据,然后发送出去;

2. 使用Android 系统自带的 AudioRecord 这个类来实现音频数据的采集,注意要在AndroidManifest.xml文件中加上权限

android.permission.RECORD_AUDIO ,使用 AudioRecord 时,一定要配置好一些音频参数,比如采样频率, 采样格式等,具体将

续代码中详细写出;采集方法是 AudioRecord 中的  read(samples, 0, bufferSize) ;

 3. AudioEncoder 对数据编码一次后,交付给AudioSender 让其发送到服务器,发送方采用 UDP 协议,采集一次数据 长度为960B,

码后长为100B ,所以一个 UDP 包就非常小,既节省带宽,又减少丢包率;

 4. 接收端有三个主要的类:AudioReciever(负责接收UDP 包),AudioDecoder(负责解码音频),AudioPlayer(负责音频播放),

致流 在上图中已经详细给出,这里不做说明了,只不过就是 发送方流程的逆序。播放音频使用的是Android中的AudioTrack 这个类,

使用write(byte[] data , int sampleOffset ,int sampleLength)  方法能够直接播放音频数据流

 5. 发送方有三个线程,接受方也有三个线程,一一对应,下一篇正式开始贴代码 ;



  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值