播放器原理
直观的讲,播放一个媒体文件一般需要5个基本模块,按层级顺序:
-
文件读取模块(Source)
-
解复用模块(Demuxer)
-
视频频解码模块(Decoder)
-
色彩空间转换模块(Color Space Converter)
-
音视频渲染模块(Render)
数据的流向如下图所示,其中 ffmpeg 框架包含了文件读取、音视频解复用的模块。
1.文件读取模块(Source)的作用是为下级解复用模块(Demuxer)以包的形式源源不断的提供数据流,对于下一级的Demuxer来说,本地文件和网络数据是一样的。在ffmpeg框架中,文件读取模块可分为3层:
- 协议层: pipe,tcp,udp,http等这些具体的本地文件或网络协议
- 抽象层:URLContext结构来统一表示底层具体的本地文件或网络