连麦互动直播方案全实践 3:网易云信连麦互动的实现方案

字节航标
• 阅读 2207

毫无疑问直播是当前移动互联网最热门的领域之一,在超强热度的引导下直播领域也吸引了大量的商业资本。在各大直播应用万花齐放的时刻,也正是直播应用面临的真正风口。站在这个风口上,直播应用只把握好风向标,推出具备高用户粘性的差异化功能,才能在这个不断推陈出新的时代站稳脚跟,获得不可动摇的地位。
《连麦互动直播方案全实践》系列文章基于网易云信的摸索和实践,从场景、流程到方案、架构,对直播体验深度优化方案——“连麦互动直播”进行了全面的讲解和介绍。

相关阅读推荐:
连麦互动直播方案全实践1:什么是连麦互动直播?
连麦互动直播方案全实践2:网易云信连麦互动直播方案的演变过程

接下来我们来看看网易云信全新的连麦互动直播方案具体是怎么实现的?我们从架构图中可以看出,整个连麦互动直播主要由两大模块组成,实时音视频系统和互动直播服务器系统。

连麦互动直播方案全实践 3:网易云信连麦互动的实现方案

实时音视频系统

首先我们来看一下实时音视频系统。实时音视频其实就是基于网络的,能够进行音频或者视频,低延迟的双人或者多人之间的实时通话。像 Skype, Facetime,微信,易信都提供了实时音视频通话功能。在互动直播中,实时音视系统主要是为了实现低延迟连麦功能。

我们来看下实时音视频的架构图:
连麦互动直播方案全实践 3:网易云信连麦互动的实现方案

各平台客户端使用客户端 SDK 接入实时音视频系统,包括:iOS,Android,PC 和嵌入式设备。
客户端与业务服务器集群维持一条 APP 协议长连接,使用加密的 TCP 私有协议作为交互协议,主要用于相关业务的发起、通知推送等等。业务服务器集群包括用户加速接入的边缘连接服务器,包括用于为用户智能分配全球媒体服务器节点的分配服务器。客户端通过 APP 协议从分配服务器获得媒体服务器地址以后,就进入实时音视频的媒体和网络流程。
为了更直观的说明,架构图里展示的是单向流程。左侧是发送方,右侧是接收方。发送方的编解码进行音视频采集、音视频预处理,然后进行音视频的编码,随后进入网络层,在做完私有协议的封包、传输可靠性的保障以后,使用加密的 UDP 私有协议作为传输层协议,将数据包发送到分配服务器根据智能算法分配的媒体服务器集群。通过边缘加速节点到达核心媒体中转服务器,媒体中转服务器负责将数据包转发给同一会话的其他用户。
接着我们来看接收方。接收方同样使用加密 UDP 私有协议,接收方的网络层收到媒体中转服务器发过来的数据包,自底向上首先进行私有协议解包,然后做相关的网络层 QoS 保障。网络层处理结束以后将完整的音视频编码数据回调编解码层。在编解码层中,首先进行音视频的解码,然后相关音视频后处理,最后将处理完的音频进行播放,并在界面中绘制出视频画面。
这样就完成了一次音视频数据的单向交互,反向的流程一致。另外我们看媒体服务器集群中除了最关键的是中转服务器。还有录制存储服务器用户将通话过程中的音频和视频录制下来,并存储到云端。而统计分析服务器用于分析统计用户的通话质量与系统的运行状态,为优化实时音视频的通话效果很有帮助,同时对于节点分配服务器的策略也有相应参考。
实现的这套实时音视频系统的几大技术要点,主要包括下面四个部分:网络、音频、视频和适配。

连麦互动直播方案全实践 3:网易云信连麦互动的实现方案

有了上面实时音视频部分的介绍,我们就为连麦互动直播的低延迟连麦打下坚实的基础了。

互动直播服务器

互动直播服务器的功能主要是:

  1. 进行互动直播中主播与连麦者的画面合成;
  2. 对接 CDN 流媒体服务器

互动直播服务器的要点主要是:融合实时系统与直播系统;实时处理视频的合成;保证互动同步性以及高性能硬件。
下面我们来简单看一下互动直播服务器的多线程异步架构。

连麦互动直播方案全实践 3:网易云信连麦互动的实现方案

互动直播服务器主要由一个 IO 主线程、多个工作子线程和多个推流线程池组成。
IO 主线程负责创建 UDP 监听 fd,并注册可读事件到 eventloop 事件循环中。中转服务器将音视频数据转发到主线程监听的端口上,eventloop 可读事件回调,IO 主线程负责读取内核UDP缓存中的将数据包,并根据哈希算法放入到与工作子线程一一对应的临时队列中。当内核缓存被读空以后,IO 主线程会触发 eventloop 监听在 eventfd 可读事件的各个工作子线程。然后通过闭包的方式将各个主线程临时队列里的数据派发到相应的工作子线程中处理。
工作子线程从队列中依次取出数据包,对数据进行协议解包,进入协议分发器,进行业业务逻辑的拆分,对于音频数据进行丢包处理,然后会由 jitterbuffer 算法来平滑抖动并解码成 pcm 数据;对于视频会同样会进行丢包处理,然后进行视频解码成 yuv 数据,视频部分还会做一步和音频的同步操作。之后会进行每个房间的多路音频 pcm 数据的混音和多路视频 yuv 的混合。混音结束以后会将 pcm 数据再编码为 aac 然后调用 aac 推流,视频 yuv 数据编码为 H264 以后调用 H264 的推流。
推流线程池负责讲 aac 和 h264 的裸数据按照 FLV 的格式进行封装,然后使用推流网络IO将音视频包使用使用 RTMP 协议推送到 CDN 流媒体服务器。
普通观众可以使用 RTMP 拉流地址向 CDN 流媒体服务器拉取音视频流完成连麦互动直播的收看。
我们看到我们只有一个 IO 线程来处理 IO 读操作,这样做的目的主要是保证我们的 IO 不受音视频编解码的影响,我们会把 IO 线程绑定在特定的 CPU 上。
工作子线程也会绑定对应的 CPU 核心,这么做也是为了提高性能。绑定以后,性能大概可以提高20%。主要是因为工作子线程是超高计算密集型的,对 CPU 的压力很大,如果不绑定,线程就有可能在不同的核心上切换,导致相应的性能损失。

服务器部署和智能分配

讲完了上面两大系统各自的功能和实现细节以后,我们还缺少什么呢?
我们的服务是要部署在我们服务器上,而服务器的部署和分配在连麦互动直播里至关重要,那我们接下来就来看服务器部署和智能分配方面有哪些要点。
首先为了能够为全球的用户提供优质服务,全球范围的节点部署是必不可少的。以网易云信的经验,依赖网易在全球的机房,我们在国内部署多个 BGP 机房和三线机房,对于海外我们部署了海外节点,特别为了优化跨国聊天,我们还使用跨国代理的光纤专线。
第二,在有了这么多节点以后,就需要由一个节点的智能分配策略。需要根据用户的地理位置、用户的运营商 ISP 类型为用户分配最佳接入的节点。当然分配的时候还需要考虑服务节点的实时负载情况和实时的网络状况。
第三,单纯的服务端的节点分配是不够的,客户端还需要配合使用智能选路策略。根据各链路的丢包和时延,智能选择最佳链路。同时当某条链路中断后,还会切换到另一条链路上。链路的切换是透明的,对上层用户无感知,也就是通话不会受到影响。
第四,为了保证整个实时音视频服务的高可用,我们的所有服务器均使用高可用的架构部署,由于音视频服务器对网卡是高需求,我们 80% 的服务器使用了配备万兆网卡的高性能物理机。同时对于服务器宕机、网络切断,都使用了相应的恢复和策略切换,所有这些都为了我们实时音视频服务的高可用。

以上就是网易云信全新连麦互动直播方案的具体实现方法,欢迎大家留言,与我们互动交流。


随着即时通讯以及音频处理和压缩技术的不断发展,效果更好、适用范围更广、性能更高的算法和新的技术必将不断涌现,如果你有好的技术或者分享,欢迎关注网易云信官方博客和 GitHub:

关注更多技术干货内容:网易云信博客
欢迎关注网易云信 GitHub
欢迎关注网易云信官网
点赞
收藏
评论区
推荐文章
WeiSha100 WeiSha100
3年前
直播课堂系统搭建源码
这是一个直播课堂源码,在线直播教学,师生互动零距离,弹性带宽,可满足千人在线,除了有直播课堂,还有在线学习,刷题,考试以及支付功能。源码完整,搭建起来比较简单,可二次开发,源码及文档分享给大家。测试功能如下,除了有直播功能,其他功能也挺全的,可以下载源码搭建研究哦1、直播课堂:可以屏幕共享,电子白板,文字交流,过程录制可上传对应章节转为点播回放,直播课时可设
Wesley13 Wesley13
3年前
P2P技术如何拯救一家直播网站
!(https://oscimg.oschina.net/oscnet/23810a4a1fef4d659388100f4228782b.jpg)众所周知运维成本是直播网站最大的成本组成,运维成本则主要体现在带宽,而伴随主播与用户对视频清晰度以及连麦的需求不断提升,直播带宽也在与日俱增。本文整理自学霸君音视频技术负责人袁荣喜在LiveVi
Wesley13 Wesley13
3年前
5G 时代,从视频互动特效技术看未来趋势
疫情期带来了在线娱乐行业的爆棚式发展,也让行业本身更加审视在交互体验上的突破价值。优酷团队开始了对互动视频体验的全新升级,升级集中体现在三个方面:直播化、游戏化、特效化。_本文根据阿里巴巴的资深算法专家李静,在云栖大会的《5G时代,优酷新型视频互动特效技术实践》的演讲整理而成,为大家分享优酷在互动视频领域的创新技术。__
Wesley13 Wesley13
3年前
P2P技术如何将实时视频直播带宽降低75%?
本文内容来自学霸君资深架构师袁荣喜的技术分享。1、前言实时视频直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。现阶段直播技术在传输方面分为两块:CDN:负责流媒体的分发传输;连麦系统:负责解
Wesley13 Wesley13
3年前
IM开发快速入门(二):什么是IM系统的实时性?
本文在编写时参考了博客作者“鹿呦呦”和在线课程“即时消息技术剖析与实战”的相关资料,一并表示感谢。1、引言随着移动互联网络的发展,IM技术的应用已经不仅限于聊天应用本身,它早已融入各种应用形态中,比如:直播中的主播互动、联网游戏中的玩家互动、外卖/打车应用中的实时位置共享、在线教育应用中的互动白板等。在这些风格迥异的应用场景下,IM技术
Stella981 Stella981
3年前
Android中悬浮小窗播放视频的实现方案
现在有不少的直播或者带有直播功能的APP除了正常的可全屏竖屏的播放页面外,常常附带一个功能:在退出播放页面(通常是直播)后,显示悬浮的小窗口继续播放直播流,这个小窗口一般可拖动,在应用退到后台后仍然可以显示。这几天刚好做到这种功能,刚开始也不知道怎么做,到网上想找实现思路,个人认为关键的在于如何不断开流继续播放这点,其实这个也就很简单,不过奇葩的是到gith
一朵云 一朵云
2年前
CDN在互联网直播中的运用与性能优化
随着互联网技术的不断发展,互联网直播已成为人们获取信息、娱乐、学习等多种需求的重要途径之一。然而,在直播过程中,由于网络延迟、卡顿等问题,观众的观看体验往往受到影响。为了解决这些问题,内容分发网络(CDN)技术被广泛应用于互联网直播领域,本文将探讨CDN在互联网直播中的运用与性能优化。
互动直播双11大促开启!!!快来! | 京东云技术团队
京麦麦互动直播是京东科技出品的商家店铺直播辅助工具,自2022年10月上线以来,成功地陪伴了6000商家的持续经营与成长,为广大商家提供724小时不间断、个性化的店铺数字人直播服务,有效帮助大家提升了商详页的CTR、直播间的观看转化率,以及15日引导成交