推流直播技术

推流流程
使用rtmp协议(其他协议也类似)推流的大体流程如下:

通过系统相机捕获视频及声音,该美颜的美颜,该滤镜的滤镜。
捕获的视频帧为yuv格式,音频帧为pcm格式。
将捕获的音视频数据,传入一个串行队列(编码队列),在队列中进行编码操作。
将yuv格式视频数据,转成h264格式视频帧;将pcm格式音频数据,转成aac格式音频帧。
将转好的h264及aac格式数据,转成flv视频帧。放入编码缓冲区,待发送。继续获取视频帧并编码。
建立rtmp连接到服务器,成功后,创建另一个串行队列(发送队列)。
rtmp协议,需要在首帧发送 sps/pps和AudioSpecificConfig这2种特别的帧数据。
发送了首帧之后,发送队列不停从编码队列中获取flv视频帧,发送至rtmp服务端。
结束直播,关闭推流,释放资源。

推流流程图


image.png

代码结构类图

image.png

一张yuv格式的图像,占用字节数为 (width * height + (width * height) / 4 + (width * height) / 4) = (width * height) * 3 / 2
一张RGB格式的图像,占用字节数为(width * height) * 3

参考:
https://www.jianshu.com/p/30b82f1e61a9

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容