播放器定义
- 播放器:是指能读取、解析、渲染 存储在 本地 或者 服务器 上的音视频文件的 软件,或者电子产品
- 功能特性
- 读取(IO):“获取” 内容 -> 从 “本地” or “服务器” 上获取
- 解析(Parser):“理解” 内容 -> 参考 “格式&协议” 来 “理解” 内容
- 渲染(Render):“展示” 内容 -> 通过扬声器/屏幕来 “展示” 内容
播放基本流程
播放流程图
数据解析图
- 第一步是获取数据
- 此步属于协议层
- 可分为从远程获取和从本地获取,远程需要先下载
- 拿到数据后,需要先解协议
- 从数据源读取数据有多种标准协议,比如常见的有:File,HTTP(s),RTMP,RTSP 等
- 输出二进制的数据
- 第二步是解析封装格式
- 此步属于封装数据层
- 不同的封装格式相当于不同的容器,用来盛放视频数据
- 常见的视频封装格式有:hls、mp4、mkv等
- hls格式:可边下载边播放,需先下载.m3u8文件(ts文件列表),然后就可以边下边播ts分片了,用ts去封装视频,优点是可以指定下载那段的m3u8文件
- mp4格式:虽然也可边下载边播放,但是必须先下载头文件,视频文件大的话头文件及比较大,所以不适合上视频封装
- 解析后得到音频流/视频流及音视频的媒体信息
- 第三步是解析音频流/视频流的编码格式
- 此步属于编解码层
- 编码是为了压缩体积,方便传输
- 常见的视频封装为h264/hevc等
- 常见的音频封装为aac等
- 解析后得到原始的 YUV 和 PCM 数据
- 一帧帧的像素图片(yuv数据)
- 音频pcm格式的数据
- 属于像素层
- 第四步是将解析得到的音频和视频数据进行渲染播放
- 负责视频数据的绘制和渲染
- AVSync,把音频和视频同步播放