本文仅仅盘点iOS端直播技术的搭建
话不多说先上图,让大家对直播技术有一个全局的认识。
手残 简单划了一下,如果有不对的地方请私信我,大概技术用到的就这么多 ,其他的也没有罗列出来,比如说聊天系统,礼物系统,总结一下,一个完整的直播 需要 采集->处理->编码->推流 - >拉流 - > 播放 细分的话 就更多了。接下来就让我为大家慢慢梳理这些知识吧!本篇最后有惊喜。
1采集
iOS上采集音视频主要用到AVFoundation这个框架。 对于这个框架详细的介绍请移步 这里,里面介绍的非常详细。一定要仔细看完。如果观众老爷不想看的话,我在这里简单的阐述下。
AVFoundation 的几个类
1 捕捉会话:AVCaptureSession
2捕捉设备:AVCaptureDevice
3捕捉输入设备:AVCaptureDeviceInput
4捕捉设备输出:AVCaptureOutPut
图片输出:AVCaptureStillImageOutPut
视频输出:AVCaputureMovieFileOutput
音频数据输出 :AVCaputureAudioDataOutput
视频数据输出 :AVCaputureVideoDataOutput
5捕捉连接: AVCaptureConnection
6捕捉预览: AVCaptureVideoPreviewLayer
说了这么多类其实也很抽象,代码在这里,请自行阅读.
2.采集完的视频的处理
关于GPUImage 的介绍在这个章节里 ,欢迎观看 。 顺便提一句,GPUImage 也可以采集数据,另外GPUImage 只能处理滤镜上面的东西,如果你需要做到 大眼,瘦脸 的话,可能很麻烦,需要用到人脸识别 和算法,这里有一遍大眼的文章,欢迎大家阅读。
3.音视频的编码与压缩。
这里有一个音视频编码和解码的demo 欢迎观看 顺便说下 这里是编码与解码(图片上,是国内知名女大神写的)
关于为什么要进行编码和解码,和编解码的注意事项在这里:
4推流
这里着重介绍下这个RTMP
实时消息传输协议,Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开 放协议,因为是开放协议所以都可以使用了。RTMP协议用于对象、视频、音频的传输。这个协议建立在TCP协议或者轮询HTTP协议之上。RTMP协议就像一个用来装数据包的容器,这些数据可以是FLV中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的
对于推流,有一个很好 而且很全面的框架 包含了 采集,滤镜 ,编码 , 这就是大名顶顶的 LFLiveKit。在Github 上,请自行去下载观看,而且及其简单。 看到这里是不是有些观众老爷激动了,有这玩意你怎么不早说,😂。但是要全自定义,就要一步一步来搭建这个直播,这些流程还是要走的。 具体的代码欢迎大家补充,需要服务器做配合不方便写。
5.拉流
这个不想多说 ijkplayer,大厂小厂都在用。有大佬集成过的fameWork,网上有很多,请自行搜索。
直播是一个非常大的功能,说简单简单,说复杂复杂,说简单是因为我们站在巨人的肩膀上编程,说复杂是因为我们对他底部的那一套东西,原理,概念很陌生 。 写的不对的地方,欢迎提出来。还有推流那个地方 ,如果自行搭建的推流代码我没写 ,有大神 的话,帮忙补充下。(message 封装 trunk)
网友评论