ios视频直播系列开坑(一)

  视频直播最近很火,也来跳坑,开更!

  先简单说一下直播的大致流程,好有个理解。整个过程分为三个部分,采集端--服务器--播放端,重点也就是采集端和播放端。

先说采集端,一般流程:采集--编码--打包--推流。

采集:1、创建AVCaptureSession,

        2、输入对象AVCaptureDeviceInput 

        3、输出对象AVCaptureVideoDataOutput

       4、输出代理方法 captureOutput(_:didOutputSampleBuffer:fromConnection:)

      这里输出SampleBuffer其中pixelBuffer就是未编码的帧数据流,接下来就是对编码

pixelBuffer:未编码前存放数据结构,详细可以参考这一篇iOS8系统H264视频硬件编解码说明 -


编码:编码一般分硬编码和软编码,现在说硬编码,流行!

提问:为什么要编码?

解答:【我的理解(待完善)】

视频H.264帧太大,编码主要获取视频流的SPS(序列参数集) 和 PPS(图像参数集)。


可以参考牛人的意见iOS 系统中,H.264 视频流可以硬件解码吗? 具体如何实现? - 信息技术(IT) - 知乎

outputPixelBuffer存放编码后数据帧。


打包: 一般都是打包成flv格式,格式简单,网络传输比较快,

  打包这个真不会(待完善)


推流:目前很多sdk都是基于librtmp的RTMP传输协议,

【待完善】


有一个牛人写的demo,可以参考理解。GitHub - chenliming777/LMLiveStreaming: IOS直播开源,音频AAC视频H264硬件编码,支持美颜,支持flv rtmp两种传输方式,支持弱网丢帧,动态切换码率,分辨率

你可能感兴趣的:(ios视频直播系列开坑(一))