MediaPlayer 播放视频时,先通过 setDataSource() 接口设置视频源,然后再开始播放。而对于 NuPlayer 来说,拿到数据只是第一步,后续需要经过解复用,解码,渲染和音视频同步等一系列复杂的过程,最终完成视频的播放。
一、播放准备阶段
1、NuPlayer::Source
NuPlayer 拿到 setDataSource() 设置的数据后首先去解封装,解封装模块的重要作用是将封装好的音视频源文件,通过不同的封装协议,解析成码流后,送到解码器解码。NuPlayer 中和解封装相关的类有:
- NuPlayer:: Source:解封装模块的基类,定义了解封装的基本接口。
- GenericSource:本地文件相关。
- HTTPLiveSource:HLS 流媒体使用的解封装类。
- RTSPSource:SDP 协议媒体流使用的