视音频学习计划
前言
初学视音频,并不能面面俱到,把每种协议、格式、编码都学一遍。这里计划在众多流媒体协议、视频格式、视音频编码格式中各挑出几种,在iOS端实现一些小功能,理论还是需要结合实际。
选择
视频播放流程图在《视频播放简单原理》已经介绍过:解协议->解封装->解编码->音画同步->输出。
对应的选择
- 解协议 >> rtmp & http
- 解封装 >> flv & mp4
- 解编码 >> H264 & AAC
- 输出 >> YUV & RGB & PCM
选择的原因
- rtmp(Real Time Messaging Protocol)是实时传输协议,即偏向于做直播这种有实时要求的内容,由于之前项目有过相关了解,想要更深入了解;
- http作为流媒体时,对flv文件格式的支持较好,更容易实现视频的点播观看,各大视频网站都采用;
- flv是Adob公司出品,无论是rtmp还是http对其的支持都比较好;
- mp4比较流行;
- H264比较流行,应用广泛;
- AAC比较流行,应用广泛;
- YUV & RGB & PCM比较流行,应用广泛;
学习规划
初步的计划是做一个利用摄像头和麦克风采集视音频,编码->封装->保存->解封装->解码->播放,这个过程主要学习编码与封装。后期加入实时推流、拉流、点播功能,学习流媒体协议。
- 摄像头采集图像
- 编码视频:YUV -> H264
- 解码视频:H264 -> YUV (播放)
- 编码音频:PCM -> AAC
- 解码音频:AAC -> PCM (播放)
- 同步音视频
- 封装