实战推演带你实现一个支持万人同时在线的直

北京青春痘好的医院 http://m.39.net/news/a_9084445.html
本文我们将第三模块所讲的知识做一次梳理,让你在整体上了解“万人直播”到底是怎样实现的。我们将从万人直播的整体架构、主播客户端架构、观众客户端架构和流量统计这四个方面向你讲述万人直播的构建。通过这几个方面的介绍,我想你就知道了一个真正的“万人直播”是如何构建起来的。万人直播架构下面这张万人直播架构图与《31

一对多直播系统RTMP/HLS,你该选哪个?》一文中介绍的直播架构图很类似,它们之间最大的不同在于真正的万人直播系统中并不会只使用一家CDN网络,而是接入多家CDN网络。在使用它们时,你可以按照一定的比例将“节目”分配到不同的CDN网络上。多家CDN网络的管理一般是由信令服务器控制的。当要接入某家CDN网络时,你可以通过信令服务器的注册界面进行注册。在注册界面中,一般要求填入CDN厂商的名字、分配比例、CDNAPI操作地址等信息。比如,当某个主播要分享一个节目时,信令服务器首先根据分配比例决定使用哪个CDN网络,然后获得该CDN网络的API操作地址。获取到CDN网络的API操作地址后,它就可以调用该CDN网络提供的HTTP/HTTPSAPI进行操作了,创建域名、生成直播地址、生成拉流地址等等。有了这些地址后,就可以将音视频流推送到CDN网络,观众端获取到观看地址后就可以“观看”节目了。除了接入多家CDN网络之外,其他功能与我们之前文章中介绍的是一样的,这里我就不再赘述了。主播客户端架构了解了万人直播架构后,接下来我们再看一下主播端的架构。之前我们介绍过,如果在PC端进行直播的话,直接使用OBS工具就可以了,这个工具是一个非常专业的PC端推流工具,功能非常强大,很多主播都使用该工具进行推流。但如果是移动端的话,就需要我们自己来实现了。主播端的架构如下图所示,按层级分为三层,即传输层、编码与展示层和采集层。下面我们对各层级的模块分别做下说明。传输层,包括了信令处理和RTMP数据传输。信令处理与业务逻辑关系紧密,比如创建房间、获得推流地址、聊天、送礼物等都属于信令处理的范畴。RTMP数据传输就更简单了,当从信令模块获取到推流地址后,就可以将编码后的音视频数据通过RTMP协议推送给CDN网络了。编码与展示层,该层包括的功能比较多,包括音频检测、音频编码、视频编码、视频预览以及视频美颜。接下来,我们再对这每个功能模块做一下说明。音频检测,主要用于在直播开始前检测音频设备是否可用。音频编码,用于将音频采集模块采集的PCM数据进行压缩编码。常见的音频编码有AAC、MP3、Opus等。一般情况下使用AAC编码方式。另外,编码也分为两种,一种是软编,一种是硬编。所谓软编,就是指通过CPU执行压缩算法进行编码,会对CPU造成很大损耗;硬编,是指通过GPU或固定的集成电路进行数据的压缩,它可以将CPU资源节省出来。视频编码,用于将视频采集模块采集的YUV数据进行压缩编码。常见的视频编码有H/H、VP8/VP9等。大多数情况下,我们都使用H对视频进行编码。视频编码同样分为软编和硬编。在移动端,一般我建议使用硬件编码,这样可以大大节省CPU资源。视频预览,将采集的视频展示出来,以便让主播看到从移动端采集到的视频数据的效果。由于视频帧每秒要刷新很多次,并且视频的数据都比较大,所以在处理视频渲染时如果没有处理好,会引起性能问题,如手机反应迟顿、发烫等问题。一般情况下,我们都会使用OpenGLES/Metal对视频渲染进行加速,从而解决反应迟顿、发烫等问题。视频美颜,美颜目前可以说是娱乐直播的必备功能,尤其是对于美女主播就显得更为重要。如美白、瘦脸、长腿等这些功能是美女主播最喜欢用的功能。这种特效通常也是通过OpenGL/Metal来实现的。当然,随着技术的发展,现在一些AR技术也逐渐应用于各种视频效果中,如雨滴、飘雪等等。采集层,包括音频采集和视频采集。这两个功能模块非常简单,一个用于采集音频数据,另一个用于采集视频数据。它们都是与硬件打交道。除了上面这些内容外,在主播端还会有数据统计模块。比如什么时候创建房间、什么时候开始推流、推流时音视频的码率是多少等等,这些信息都是由数据统计模块记录的。有了这个模块之后,一是便于我们分析问题,二是便于我们进行计费核算,在与各CDN厂商结算费用时会非常有用。观众端架构介绍完主播端的功能后,接下来我们再来看看观众端(如下图)。观众端与主播端是很类似的,但实际上我们自己并不会将每个模块都亲手实现,因为对于观众端来说,大部分模块都属于播放器的功能。因此,我们在实现观众端的时候,只需要实现信令处理模块、数据统计模块,并将播放器集成进来就可以了。对于移动端,我们一般都使用Ijkplayer作为观众端播放器。Ijkplayer是由bilibili公司开源的项目,地址为:


转载请注明:http://www.twoac.com/wyyy/12449.html


  • 上一篇文章:
  • 下一篇文章:
  • .