直播间源码搭建最简单的iOS直播推流之代码架构概述

直播间源码搭建最简单的iOS直播推流之代码架构概述

推流流程

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

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

我的代码严格按照上述流程编写。这些逻辑也适用于市面上出现的几乎所有的推流代码。

我把上述流程及源代码画了2个图。里面有详细的流程及使用的技术。

推流流程图

 

直播间源码搭建最简单的iOS直播推流之代码架构概述

 

 

代码结构类图

 

直播间源码搭建最简单的iOS直播推流之代码架构概述