Reference
加载 assets 中的 MP3 文件
|
|
解码 MP3 数据
使用 NDK 解码
参考自定义媒体组件,数据解析包括提取器和解码器。
提取器进程会自动从 Google 提供的 APEX 软件包和 /system/lib[64]/extractors/ 加载提取器插件,如果默认的媒体提取器无法满足您的需求,您可以在 /system/lib[64]/extractors/ 中放置自定义提取器插件。
解码器会通过media.player
服务查找对应mime
的解码器。
运行时,获取解码器的输入缓冲队列和输出缓冲队列,将提取器处理后的数据放入输入缓冲队列,由解码器处理后的数据会被放入输出缓冲队列,从输出缓冲队列中取出的数据就是可以用于播放的数据。
|
|
时序图:
涉及的 NDK 中的源代码:
- NdkMediaExtractor.cpp
- NuMediaExtractor.cpp
- FileSource.cpp
- MediaExtractorFactory.cpp
- MediaExtractorPluginApi.h
- MediaExtractor.cpp
- InterfaceUtils.cpp
- RemoteMediaExtractor.cpp
- Utils.cpp
- NdkMediaFormat.cpp
- NdkMediaCodec.cpp
- MediaCodec.h
- MediaCodec.cpp
- MediaCodecList.cpp
- AHandler.cpp
- ALooper.h
- ALooper.cpp
- AMessage.h
- AMessage.cpp
使用 FFmpeg 解码
// TODO