源码:http://androidxref.com/9.0.0_r3/xref/frameworks/av/media/libmediaplayerservice/nuplayer/
1. 模块关系
Android 播放框架的模块关系如下:
其中 Nuplayer::Source 分如下三种:
2. 控制流程
(1) setDataSource
作用:根据文件类型,创建具体的 Nuplayer::Source
流程:以本地播放为例。
说明:
数据源和创建的 Nuplayer::Source 类型对应关系如下:
(2) prepare
作用:准备数据源。
流程:
如果是HttpLive视频:
如果是RTSP视频:
如果是本地或普通网络视频:
(3) start
作用:创建解码模块和同步模块,启动流程。
流程:
说明:
3.数据流程
在App调用 MediaPlayer的start后,整个流程运转起来,数据流转图如下:
前端的NuPlayer::Source分三种情况:
如果是HttpLive视频:
如果是RTSP视频:
如果是本地或普通网络视频:
4. AV 同步
(1) Nuplayer::Renderer在收到Audio解码数据后:
(2) Nuplayer::Renderer在收到Video解码数据后: