十几年前音视频发展越来越迅速,随着最近几年5G的到来,音视频的应用已经涉及到医疗、教学、娱乐等方面。而本人做为一个iOS开发者,在最近一段时间稍微接触了一下,仅以此文记录所学。
推拉流流程
采集 → 编码 → 封装 → 推流 → 服务器 → 拉流 → 解封装 → 解码 → 渲染
其实推流与拉流为互逆过程
采集
对于音频而言采集到的是PCM数据
对于视频而言采集到的一般都是YUV或RGB的数据
编码
PCM编码后一般变成了AAC格式的数据,当然也可能是MP3或其他格式
视频数据经过编码后,一般变成了H264或H265(11.0系统之后便支持了H265编码)的数据
封装
封装就是把音视频的数据生成一个音视频同步的文件,当然了还可以附带一些信息,比如字幕。
封装之后一般是flv格式的数据
推流
把封装好的数据推送到服务器
拉流、解封装、解码
和上面是逆过程
渲染
把音视频数据播放出来
上述相关知识点某个点都可以展开详细说,所以就不放在本文里了,本文相当于一个目录。
下面是我之前在语雀写的文章,仅供参考,错误之处,请不啬指出
https://www.yuque.com/docs/share/d77df1cb-7d6d-43db-bcb3-4b49d4151f6b?# 《YUV》
https://www.yuque.com/docs/share/0953bbdb-856d-4b4a-9096-8bb830f56bfc?# 《H264》
https://www.yuque.com/docs/share/aa5486f4-153a-42c2-8a81-b70e9fccc0db?# 《初识FLV》
https://www.yuque.com/docs/share/b74fb92b-24d6-4039-8904-33f67badd842?# 《RTMP》