毫无疑问直播是当前移动互联网最热门的领域之一,在超强热度的引导下直播领域也吸引了大量的商业资本。在各大直播应用万花齐放的时刻,也正是直播应用面临的真正风口。站在这个风口上,直播应用只把握好风向标,推出具备高用户粘性的差异化功能,才能在这个不断推陈出新的时代站稳脚跟,获得不可动摇的地位。

《连麦互动直播方案全实践》系列文章基于网易云信的摸索和实践,从场景、流程到方案、架构,对直播体验深度优化方案——“连麦互动直播”进行了全面的讲解和介绍。

相关阅读推荐:

连麦互动直播方案全实践1:什么是连麦互动直播?

连麦互动直播方案全实践2:网易云信连麦互动直播方案的演变过程

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

实时音视频系统

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

我们来看下实时音视频的架构图:

各平台客户端使用客户端sdk接入实时音视频系统,包括:iOS,Android,PC和嵌入式设备。

客户端与业务服务器集群维持一条APP协议长连接,使用加密的tcp私有协议作为交互协议,主要用于相关业务的发起、通知推送等等。业务服务器集群包括用户加速接入的边缘连接服务器,包括用于为用户智能分配全球媒体服务器节点的分配服务器。客户端通过APP协议从分配服务器获得媒体服务器地址以后,就进入实时音视频的媒体和网络流程。

为了更直观的说明,架构图里展示的是单向流程。左侧是发送方,右侧是接收方。发送方的编解码进行音视频采集、音视频预处理,然后进行音视频的编码,随后进入网络层,在做完私有协议的封包、传输可靠性的保障以后,使用加密的udp私有协议作为传输层协议,将数据包发送到分配服务器根据智能算法分配的媒体服务器集群。通过边缘加速节点到达核心媒体中转服务器,媒体中转服务器负责将数据包转发给同一会话的其他用户。

接着我们来看接收方。接收方同样使用加密udp私有协议,接收方的网络层收到媒体中转服务器发过来的数据包,自底向上首先进行私有协议解包,然后做相关的网络层QoS保障。网络层处理结束以后将完整的音视频编码数据回调编解码层。在编解码层中,首先进行音视频的解码,然后相关音视频后处理,最后将处理完的音频进行播放,并在界面中绘制出视频画面。

这样就完成了一次音视频数据的单向交互,反向的流程一致。另外我们看媒体服务器集群中除了最关键的是中转服务器。还有录制存储服务器用户将通话过程中的音频和视频录制下来,并存储到云端。而统计分析服务器用于分析统计用户的通话质量与系统的运行状态,为优化实时音视频的通话效果很有帮助,同时对于节点分配服务器的策略也有相应参考。

实现的这套实时音视频系统的几大技术要点,主要包括下面四个部分:网络、音频、视频和适配。

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

互动直播服务器

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

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

互动直播服务器的要点主要是:融合实时系统与直播系统;实时处理视频的合成;保证互动同步性以及高性能硬件。

下面我们来简单看一下互动直播服务器的多线程异步架构。

互动直播服务器主要由一个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%的服务器使用了配备万兆网卡的高性能物理机。同时对于服务器宕机、网络切断,都使用了相应的恢复和策略切换,所有这些都为了我们实时音视频服务的高可用。

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

转载于:https://www.cnblogs.com/wangyiyunxin/p/9245974.html

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

  1. 连麦互动直播方案全实践2:网易云信连麦互动直播方案的演变过程

    毫无疑问直播是当前移动互联网最热门的领域之一,在超强热度的引导下直播领域也吸引了大量的商业资本.在各大直播应用万花齐放的时刻,也正是直播应用面临的真正风口.站在这个风口上,直播应用只把握好风向标,推出 ...

  2. 连麦互动直播方案全实践1:什么是连麦互动直播?

    毫无疑问直播是当前移动互联网最热门的领域之一,在超强热度的引导下直播领域也吸引了大量的商业资本.在各大直播应用万花齐放的时刻,也正是直播应用面临的真正风口.站在这个风口上,直播应用只把握好风向标,推出 ...

  3. 网易云信吴桐:连麦互动直播方案全实践

    演讲 | 吴桐 人物名片:网易云信多媒体资深技术架构师.网易云信音视频实时通话项目与互动直播项目技术负责人,负责项目的架构和实现.加入网易后,先后参加了网易UU网游加速器.易信音视频实时通话等项目. ...

  4. ​周锦民:腾讯在线教育视频互动直播间技术实践

    本文来自腾讯云技术沙龙,本次沙龙主题为在线教育个性化教学技术实践 演讲嘉宾:周锦民 | 2011年毕业进入腾讯, 现任在线教育部在线教育后台中心高级工程师,多年linux后台开发工作经验,目前主要负责 ...

  5. 技术实践 | 聊聊网易云信的信令网络库实践

    导读:信令作为实时音视频技术架构中的重要一环,是对建立实时音视频通信起到关键桥梁性的作用. 文|丁永锋 网易云信资深客户端开发工程师 本文将从信令的概念着手,分享在网易云信新一代音视频技术架构下,信令 ...

  6. 网易云信亮相WOT, 打造“IM+连麦互动直播”云服务

    8月26日,World Of Tech2016移动互联网技术大会在北京拉开序幕,包括Google.百度.网易.滴滴在内的众多国内外知名互联网公司纷纷亮相.WOT移动互联网技术大会专注于互联网IT技术领 ...

  7. 连麦互动直播 将成直播体验深度优化的必然形式

    视频流媒体文件从电视专网广播到PC公网点播,再到手机移动网络直播的转变,显然已经是2016年不能再热的话题.短短不到一年时间,市场上出现几百家直播APP,内容触及真人秀.赛事.旅游.电商.海淘.教育. ...

  8. 即构推出小程序连麦直播方案,与iOSAndroid APP互通连麦!

    2017年12 月 26 日,微信小程序正式对外开放了实时音视频录制及播放能力.符合类目要求(见下方表格)的小程序自助开通后,可自建或使用云服务,实现单向和互动的音视频功能,如视频直播.互动直播.在线 ...

  9. 互动直播的技术细节和解决方案实践经验谈

    1. 互动直播背景 2. 连麦流程.功能与技术指标 2.1. 连麦的业务流程 2.2. 互动直播的功能 2.3. 技术指标 2.4. 应用领域 3. 主流的技术方案 3.1. 互动直播技术领域 3.2 ...

最新文章

  1. FTServer 1.1 发布,多语言全文搜索服务器
  2. tomcat中间件的默认端口号_等保2.0涉及的Apache Tomcat中间件(下)
  3. android realmax sdk,RealMax推出全新开源AR SDK 框架ARToolKit
  4. goods.java_javaweb网上书城项目 1.用户管理:注册会员 - 下载 - 搜珍网
  5. 【AI视野·今日CV 计算机视觉论文速览 第173期】Wed, 25 Dec 2019
  6. 图像学习-HOG特征
  7. 利用matlab沙堡存在时间更久,最长沙堡保存策略
  8. mssql数据库基本语句总结(2)
  9. python生成linux执行文件_比较Python中两个PyInstaller生成的Linux可执行文件
  10. 数据库索引:位图索引
  11. 同态加密中无符号数之间比较大小
  12. Spring Boot资源获取失败:class path resource cannot be opened because it does not exist
  13. 通过Python自动化玩腾讯微证券领长牛
  14. dw中css目标规则命名,css 常用样式命名规则
  15. android-自定义ImageView-圆形图片绘制代码详解
  16. 微信小程序css设置本地背景图片
  17. java获取请求ip的方法
  18. ChatGPT和DALLE-2级联后,输出效果震撼了…
  19. 成都市计算机企业管理学校,成都2021年计算机管理院校排行榜
  20. 简单远程服务器日志归档查询脚本

热门文章

  1. 空指针,段错误,这场面试我栽倒在这里了!
  2. 快速求区间和的有趣算法——树状数组
  3. Sublime Text的使用-Mac
  4. 对象存储与块存储、文件存储等对比
  5. 导出勾选密码永不过期的AD账户信息
  6. Facebook Docusaurus 中文文档 安装指南
  7. squid一些其它配置
  8. Python写各大聊天系统的屏蔽脏话功能原理
  9. shell--特殊位置参数变量及常用内置变量
  10. 标准化工作取得新突破 窄带物联网商用指日可待