详细内容

直播APP开发的正式过程

服务器: 处理(转码、录制、截图、鉴黄)后分发给用户播映端

互动体系: 谈天室、礼物体系、zan



1.搜集、2.滤镜处理、3.编码、4.推流、5.CDN分发、6.拉流、7.解码、8.播映、9.谈天互动


相关于上面图中每个技能点刨开来说都很繁琐 ,也很难掌握,我会在下面的【相关技能常识点归纳】中给与大致叙述;因为触及音视频的编码解码、美颜功能的算法,帧的处理等许多问题,能从底层自己开发的完好功能的肯定是大牛!






1、运用第三方直播SDK快速的开发

阿里云: 供给低推迟、高清晰、 高并发支撑的直播服务,帮您从容应对业务突发峰值。广泛运用于 游戏直播、娱乐直播、泛日子直播、 教育类、 长途医疗、 企业长途视频会议等典型场景,

七牛云:七牛直播云是专为直播渠道打造的全球化直播流服务和一站式完结SDK端到端直播场景的企业级直播云服务渠道.

2、自研还是运用第三方直播SDK开发?

第三方SDK开发:开发周期短,前期投入少,从长远看,第三方费用较高,占很大一笔开销, 相对来说自研可以节约本钱,技能成面比直接用SDK相对可控。

模块四、相关技能常识点归纳 (袁峥Seemygo共享)



AVFoundation:AVFoundation是用来播映和创立实时的视听媒体数据的结构,一起供给Objective-C接口来操作这些视听数据,比方编辑,旋转,重编码

* 1.2 视频、音频硬件设备 *

拾音器:声响传感器: 用于声响搜集和处理的进程,把声响转化成电信号。

视频采样数据: 一般都是YUV,或RGB格局,搜集到的原始音视频的体积是十分大的,需求通过紧缩技能处理来提高传输效率

2.视频处理(美颜,水印)

视频处理原理:因为视频最终也是通过GPU,一帧一帧烘托到屏幕上的,所以咱们可以运用OpenGL ES,对视频帧进行各种加工,然后视频各种不同的作用,就好像一个水龙头流出的水,通过若干节管道,然后流向不同的目标

这个结构完结的,.

* 视频处理结构 *

OpenGL:OpenGL(全写Open Graphics Library)是个界说了一个跨编程言语、跨渠道的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用便利的底层图形库。



FFmpeg :是一个跨渠道的开源视频结构,能完结如视频编码,解码,转码,串流,播映等丰厚的功能。其支撑的视频格局以及播映协议十分丰厚,几乎包括了一切音视频编解码、封装格局以及播映协议。-Libswresample:可以对音频进行重采样,rematrixing 以及转化采样格局等操 作。

-Libavformat:用于对视频进行封装/解封装。

-Libpostproc:用于进行视频的一些后期处理。

-Libavfilter:供给滤镜功能。

X264 :把视频原数据YUV编码紧缩成H.264格局

AudioToolbox :苹果自带的音频硬解码和硬编码API

* 3.2 视频编码技能 *




H.264/AVC:一种视频紧缩办法,选用事先猜测和与MPEG中的P-B帧相同的帧猜测办法紧缩,它可以依据需求产生适合网络情况传输的视频流,还有更高的紧缩比,有更好的图象质量

留意1: 假如是从单个画面清晰度比较,MPEG4有优势;从动作连贯性上的清晰度,H.264有优势

留意3: 因为264的完结愈加灵敏,它把一些完结留给了厂商自己去完结,尽管这样给完结带来了许多优点,但是不同产品之间互通成了很大的问题,造成了通过A公司的编码器编出的数据,有必要通过A公司的解码器去解这样为难的事情

H.265/HEVC: 一种视频紧缩办法,依据H.264,保存原来的某些技能,一起对一些相关的技能加以改进,以改进码流、编码质量、延时和算法杂乱度之间的联系,到达最优化设置。H.265 是一种更为高效的编码规范,可以在同等画质作用下将内容的体积紧缩得更小,传输时更快更省带宽

I帧: (关键帧)保存一副完好的画面,解码时只需求本帧数据就可以完结(因为包括完好画面)

P帧 :(不同帧)保存这一帧跟之前帧的不同,解码时需求用之前缓存的画面叠加上本帧界说的不同,生成最终画面。(P帧没有完好画面数据,只要与前一帧的画面不同的数据)

B帧: (双向不同帧)保存的是本帧与前后帧的不同,解码B帧,不仅要获得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加获得最终的画面。B帧紧缩率高,但是解码时CPU会比较累

帧内(Intraframe)紧缩: 当紧缩一帧图画时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,帧内一般选用有损紧缩算法

帧间(Interframe)紧缩: 时刻紧缩(Temporal compression),它通过比较时刻轴上不同帧之间的数据进行紧缩。帧间紧缩一般是无损的

muxing(合成):将视频流、音频流甚至是字幕流封装到一个文件中(容器格局(FLV,TS)),作为一个信号进行传输。

* 3.3 音频编码技能 *


多码率:观众所处的网络情况是十分杂乱的,有或许是WiFi,有或许4G、3G、甚至2G,那么怎么满足多方需求呢?多搞几条线路,依据当时网络环境自界说码率。列如:常常看见视频播映软件中的1024,720,高清,标清,流通等,指的便是各种码率。

* 3.5 视频封装格局 *

为什么要用TS: 这是因为两个TS片段可以无缝拼接,播映器能接连播映

FLV: 一种流媒体封装格局,因为它构成的文件极小、加载速度极快,使得网络观看视频文件成为或许,因而FLV格局成为了当今主流视频格局

4.推流

* 4.1 数据传输结构 *

* 4.2 流媒体数据传输协议 *

RTMP协议用于目标、视频、音频的传输,这个协议建立在TCP协议或许轮询HTTP协议之上。



SRS:一款国人开发的优秀开源流媒体服务器体系

nginx: 免费开源web服务器,常用来装备流媒体服务器。

* 5.2数据分发 *

CDN:代理服务器,相当于一个中介。

2.源站存储流媒体数据

4.CDN的服务器呼应恳求,若节点上没有该流媒体数据存在,则向源站继续恳求流媒体数据;若节点上已经缓存了该视频文件,则跳到第6步。

6.CDN将流媒体数据发送到客户端

回源:当有用户访问某一个URL的时分,假如被解析到的那个CDN节点没有缓存呼应的内容,或许是缓存已经到期,就会回源站去获取查找。假如没有人访问,那么CDN节点不会主动去源站拿.



这种群集技能可以用最少的出资获得接近于大型主机的性能。

QoS(带宽办理):限制每一个组群的带宽,让有限的带宽发挥最大的功效

6.拉流

直播协议挑选:即时性要求较高或有互动需求的可以选用RTMP,RTSP

关于有回放或跨渠道需求的,引荐运用HLS

直播协议对比:


HLS: 由Apple公司界说的用于实时流传输的协议,HLS依据HTTP协议完结,传输内容包括两部分,一是M3U8描绘文件,二是TS媒体文件。可完结流媒体的直播和点播,首要运用在iOS体系HLS是以点播的技能办法来完结直播HLS是自适应码率流播,客户端会依据网络情况主动挑选不同码率的视频流,条件允许的情况下运用高码率,网络繁忙的时分运用低码率,而且主动在二者间随意切换。这对移动设备网络情况不稳定的情况下保障流通播映十分有协助。

完结办法是服务器端供给多码率视频流,而且在列表文件中注明,播映器依据播映进度和下载速度主动调整。

HLS与RTMP对比: HLS首要是延时比较大,RTMP首要优势在于延时低HLS协议的小切片办法会生成许多的文件,存储或处理这些文件会造成许多资源糟蹋







demuxing(分离)

)中, 分解出视频、音频或字幕,各自进行解码。

* 7.2 音频编码结构 *


硬解码:用GPU来解码,削减CPU运算 优点:播映流通、低功耗,解码速度快,  * 缺陷:兼容不好

软解码:用CPU来解码优点:兼容好   * 缺陷:加大CPU担负,耗电增加、没有硬解码流通,解码速度相对慢

8.播映

ijkplayer:一个依据FFmpeg的开源Android/iOS视频播映器API易于集成;

支撑硬件加速解码,愈加省电



在直播体系中的首要作用是完结观众与主播、观众与观众之间的文字互动.

七牛云直播流程

开篇,将从全体介绍直播中的各个环节。

1.搜集


音频数据既能与图画结合组合成视频数据,也能以纯音频的办法搜集播映,后者在许多老练的运用场景如在线电台和语音电台等起着十分重要的作用。音频的搜集进程首要通过设备将环境中的模拟信号搜集成 PCM 编码的原始数据,然后编码紧缩成 MP3 等格局的数据分发出去。常见的音频紧缩格局有:MP3,AAC,OGG,WMA,Opus,FLAC,APE,m4a 和 AMR 等。

音频搜集和编码首要面对的挑战在于:延时灵敏、卡顿灵敏、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等。

在音频搜集阶段,参考的首要技能参数有 :





size = 8000 x 2 x 16bit x 0.02s = 5120 bit = 640 byte

图画搜集



图画传输格局:通用印象传输格局(Common Intermediate Format)是视讯会议(video conference)中常运用的印象传输格局。

图画格局:通常选用 YUV 格局存储原始数据信息,其中包括用 8 位表明的黑白图画灰度值,以及可由 RGB 三种颜色组合成的彩色图画。

传输通道:正常情况下视频的拍照只需 1 路通道,跟着 VR 和 AR 技能的日渐老练,为了拍照一个完好的 360° 视频,或许需求通过不同视点拍照,然后通过多通道传输后合成。

分辨率:跟着设备屏幕尺度的日益增多,视频搜集进程中原始视频分辨率起着越来越重要的作用,后续处理环节中运用的一切视频分辨率的界说都以原始视频分辨率为根底。视频搜集卡能支撑的最大点阵反映了其分辨率的性能。

采样频率:采样频率反映了搜集卡处理图画的速度和才能。在进行高度图画搜集时,需求留意搜集卡的采样频率是否满足要求。采样率越高,图画质量越高,一起保存这些图画信息的数据量也越大。

以上,构成了一个视频搜集的首要技能参数,以及视频中音频和图画编码的常用格局。而关于直播 App 开发者来说,了解这些细节尽管更有协助,但实践开发进程中或许很少可以关注搜集环节中技能参数的操控,而是直接在 SDK 中将搜集后的数据传递给下一个「处理」和「编码」环节。

2.处理

视频或许音频完结搜集之后得到原始数据,为了增强一些现场作用或许加上一些额定的作用,咱们一般会在将其编码紧缩前进行处理,比方打上时刻戳或许公司 Logo 的水印,祛斑美颜和声响混杂等处理。在主播和观众连麦场景中,主播需求和某个或许多个观众进行对话,并将对话成果实时共享给其他一切观众,连麦的处理也有部分作业在推流端完结。

敞开式规划


如上图所示,处理环节中分为音频和视频处理,音频处理中详细包括混音、降噪和声响特效等处理,视频处理中包括美颜、水印、以及各种自界说滤镜等处理。

「80% 的主播没有美颜根本没法看。」不光是美颜,许多其它的视频处理如含糊作用、水印等也都是在这个环节做。现在 iOS 端比较闻名的是 GPUImage 这个库,供给了丰厚端预处理作用,还可以依据这个库自己写算法完结更丰厚端作用。Android 也有 GPUImage 这个库的移植,叫做 android-gpuimage。一起,Google 官方开源了一个巨大的库,覆盖了 Android 上面许多多媒体和图形图画相关的处理。







基本原理

空间冗余:图画相邻像素之间有较强的相关性

时刻冗余:视频序列的相邻图画之间内容相似

编码冗余:不同像素值出现的概率不同

视觉冗余:人的视觉体系对某些细节不灵敏

常识冗余:规律性的结构可由先验常识和布景常识得到










/ZKKLiveAPP_Swift3.0 (swift更新到现在越加简练 , 假如感觉不错请给予鼓舞 )


联系热线:400-000-0000
工作时间:周一至周日 9:00-22:00
公司邮箱:954948136@qq.com
公司地址:江苏省南京市浦口区

COPYRIGHT @ 2018 . ALL RIGHTS RESERVED.  版权所有 某某网络科技

业务范围

新闻动态

关于我们

关注我们

技术支持: 繁承科技 | 管理登录
QQ seo seo