iOS音视频(直播 音频 视频)直播相关

iOS 直播技术总结。

2020-10-11  本文已影响0人  Cocojiang

本文仅仅盘点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)

上一篇下一篇

猜你喜欢

热点阅读