android 音频编解码1
2016-08-16 22:14
387 查看
1. Android 官方的 MediaCodec API
该 API 是在 Andorid 4.1 (API 16) 版本引入的
MediaCodec 使用的基本流程是:
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
参考
http://ticktick.blog.51cto.com/823160/1760191
该 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 |
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
参考
http://ticktick.blog.51cto.com/823160/1760191
相关文章推荐
- Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)
- 怎样用AACLib V1.0在Android上音频编码解码
- Android音频开发(5):音频数据的编解码
- EasyPlayer Android音频解码库(第一部分,ffmpeg-android的编译)
- Android音频编解码和混音实现
- Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)
- EasyDarwin开源音频解码项目EasyAudioDecoder:EasyPlayer Android音频解码库(第二部分,封装解码器接口)
- Android音频开发(5):音频数据的编解码
- android MediaCodec 音频编解码的实现——转码
- EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)
- Android 本地视频播放器开发 —— ffmpeg解码视频文件中的音频
- IOS和Android支持的音频编解码
- Android的音频解码原来是直接调用的本地C方法直接通过硬件解码
- Android、ios 音频编解码 音频口通信 音频通信
- Android音频编解码和混音实现
- Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)
- Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)
- Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)
- Android音频开发:音频数据的编解码
- EasyPlayer Android音频解码库(第二部分,封装解码器接口)