android 音频编解码1

本文介绍了Android平台上的多媒体编解码技术,重点讲解了官方MediaCodec API的使用流程,并推荐了几款第三方编解码库,如opus、Speex及iLBC-Android等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Android 官方的 MediaCodec API
该 API 是在 Andorid 4.1 (API 16) 版本引入的
MediaCodec 使用的基本流程是:
1
2
3
4
5
6
7
8
9
10
11
- createEncoderByType/createDecoderByType
- configure
- start
- while(1) {
- dequeueInputBuffer
- queueInputBuffer
- dequeueOutputBuffer
- releaseOutputBuffer
}
- stop
- release
1,从 input 缓冲区队列申请 empty buffer [dequeueInputBuffer]
2,把需要编解码的数据拷贝到 empty buffer,然后放入 input 缓冲区队列 [queueInputBuffer] 
3,MediaCodec 模块从 input 缓冲区队列取一帧数据进行编解码处理
4,编解码处理结束后,MediaCodec 将原始数据 buffer 置为 empty 后放回 input 缓冲区队列,将编解码后的数据放入到 output 缓冲区队列
5,从 output 缓冲区队列申请编解码后的 buffer [dequeueOutputBuffer]
6,对编解码后的 buffer 进行渲染/播放
7,渲染/播放完成后,再将该 buffer 放回 output 缓冲区队列 [releaseOutputBuffer]
第3方库:
(1) opus 编解码库
opus 官网地址: https://www.opus-codec.org
注:如今 Android 5.0 已经官方支持 opus 格式了,关于 Android 支持的多媒体格式列表可以查看 Android developer guide: 《Supported Media Formats》
(2) Speex 编解码库
老牌的音频处理库,不仅是编解码,还提供了包括音频去噪、 回声消除 、静音检测等功能,官网地址: http://www.speex.org
(3) ffmpeg
iLBC-Android
iLBC 是著名的 WebRTC 项目的音频编解码模块,iLBC-Android 是从中抽取 iLBC 模块移植到 Android 平台的个人项目,地址: https://github.com/lukeweber/iLBC-Android
参考

转载于:https://www.cnblogs.com/elesos/p/5924598.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值