网易云信:直播体验深度优化方案——连麦互动直播

2023-12-29 01:40

本文主要是介绍网易云信:直播体验深度优化方案——连麦互动直播,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 前言

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

图片描述
(移动直播火爆)

当前国内大多数的直播应用,使用的是单主播模式,主播与观众仅仅使用文字、点赞、礼物等方式进行互动。在主播直播时,观众如果能够与其进行实时的视频互动,给观众连麦露脸的机会,这将大大提高用户的参与感与幸福感,增加用户粘性。而且市面上能够提供这种连麦互动直播功能的应用还非常少,这也将成为2016下半年各直播应用的主要竞争领域。


  • 连麦互动直播是什么

为了更直观的阐述互动直播是什么,举个简单的例子。传统直播就像看“新闻联播”,观众只能收看这个节目,偶尔能通过手机短信发信息与节目组进行互动。当然现在基于互连网的直播已经先进得多,可以使用互联网发送文字、点赞、送礼物,消息的实时性也大大提高,但本质上与看“新闻联播”的体验类似。

而互动直播就像到达芒果台快乐大本营的录制现场,观众坐在录制现场的观众席上,可以看节目,同时还有机会被邀请到台上和主持人互动,当然主持人可以邀请多名观众上台进行互动,而互动的内容其他观众也能看到。

图片描述
(连麦互动直播)

图片描述
(传统移动直播)

连麦互动直播相比传统单向直播,给了观众更直接的参与感以及与主播音视频实时互动的满足感,对提升直播应用的活跃度和粘性都有明显作用。


  • 连麦互动直播功能流程

图片描述
(连麦互动直播功能流程图)

① 主播正常开始直播,普通观众看到主播的单人直播画面;
② 需要连麦的观众发起连麦请求,进入连麦申请列表;
③ 主播从连麦申请列表中选择一名或多名观众进行连麦操作,主播与连麦观众进行实时音视频互动,同时互动直播系统生成“合成画面”;
④ 普通观众看到直播画面为包含主播与连麦观众的“合成画面”;
⑤ 连麦结束,恢复主播单人直播模式。


  • 连麦互动直播实现方案

接下来我们探讨一下连麦互动直播的具体实现方案,这部分将主要阐述互动实时性高且具备真实可行性的两种方案。这两种方案网易云信在项目中都有实践,下面会详细分析各自的优缺点。

为了实现互动实时性高的连麦,首先需要有一套实现了类似微信、Skype及Facetime的多人音视频实时通话系统。这套实时通话系统可以选择自主研发或者基于开源软件如:Google的WebRTC做二次开发,网易云信自主研发了一套基于私有协议的多人实时通话系统,下面简单介绍多人实时通话系统的一些重点技术细节。

多人音视频实时通话系统为了降低通话时延,我们使用UDP协议作为传输层协议,众所周知UDP协议是不可靠,为了提高弱网下的实时音视频的通话效果,需要使用相关方案来做QoS保障,主要包括:

a)使用基于网络状态的音视频码率自适应算法,根据当前网络的丢包、时延自适应降低或者升高音频和视频的码率和帧率,通过这个方法来降低网络的拥塞,提高通话质量;
b)使用智能Jitterbuf算法来平滑网络抖动,同时内部使用音频编码的丢包补偿(PLC)算法进一步提升通话质量;
c)使用基于多层参考的视频编解码器,降低视频丢包后的卡顿;
d)整个UDP传输层使用前向纠错FEC算法进行智能保护,最大限度上保证实时音视频通话的效果。根据我们的实际测试,在使用上诉QoS保障策略以后,音视频通话可以抗20%丢包和600ms的网络抖动。

多人音视频实时通话系统为了在保障质量的前提下尽量降低通话流量,音频编解码主要以Opus为主,Opus融合吸收了CELT和SILK编码的各种优点,具备高音质,高压缩率,高抗丢包等特性,非常适合移动网络。视频编解码我们使用OpenH264,OpenH264编解码性能优秀,同时具备:动态码率、动态帧率及时域分层等多项适合移动网络实时通话的特性。同时我们使用了自主研发的降噪算法,配合回声消除、自动增益和舒适噪音等音频处理算法来进一步保证音频的质量。

现在用户对于视频的清晰度要求越来越高,我们的多人实时通话系统能够支持720p,720p下纯软件编解码对CPU开销过大,因此在可以开启硬件编解码的机器上,对于需要720p清晰度的都尽量使用硬件编解码。对于苹果手机硬件编解码基本上只与iOS的版本相关,而Android情况就会复杂得多,不仅与手机硬件相关,还和各个手机的ROM相关,为了解决这个问题需要去做适配。我们在网易强大的移动应用测试部门的配合下,为大多数的Android设备做了适配。

没有覆盖全球的服务器部署与网络拓扑搭建,是不可能构架出一套完善的多人音视频实时通话系统的。依赖网易云在全球范围内的机房节点,我们搭建了多个多线接入网络拓扑,部署了高可用的服务器集群,并利用智能分配算法与路由策略,为跨省、跨运营商、跨国的多人实时通话提供优质的传输通道。

要实现效果理想的连麦互动直播,一套强大完善的多人实时通话系统是前提。在简单介绍完一套强大的多人实时通话系统的需要具备的特点后,接着我们就可以讨论下连麦互动直播的具体实现方案了。

方案一:

传统的直播流程是:主播客户端采集并编码音视频数据以后,直接使用RTMP协议推流到CDN,其它观众使用对应的拉流地址向CDN拉取音视频流。

该方案使用实时通话系统来进行主播和观众的实时互动连麦,通过实时通话通道主播端收到观众端发送的音频和视频数据,主播端将自己的声音和观众的声音做混音,并将自己的画面与观众的画面做视频合成,最后将混合的声音和画面推流到CDN流媒体服务器。架构图如下:

图片描述

方案优点:

主播和连麦观众使用了实时音视频来进行连麦互动,实时性高,观众看到的合成画面里主播和观众的互动也是同步实时的。
方案对原有直播推流客户端改动不大,服务端都不需要修改。方案整体的实现简单,利用现有的系统和SDK就可以快速搭建。

我们在网易BOBO Windows端实现的连麦互动直播就是采用这种方案,该方案在2015年下半年上线后运行稳定。这个方案虽然简单可行但对于移动端来说就有两个比较致命的问题:

一、 主播端的带宽压力很大,从架构图中可以看出,主播端必须通过实时通话系统发送一份音视频数据给连麦观众,同时还需要推送一路流到CDN流媒体服务器。所以相比单人直播,连麦后主播端的上行流量将变为原来的两倍。这个两倍的流量在Windows端稳定的有线网络环境下影响不大,但在上行带宽本来就有限移动网络下,将会大大影响直播的效果。

二、 主播端的视频编解码压力很大,与造成带宽压力大的原因一样,主播必须编码一路视频给连麦观众,同时需要合成并编码一路推到CDN,两次编码对于移动端的性能压力非常大,经过真机测试对于720p的分辨率的连麦互动直播仅在旗舰机型上可以勉强支撑,但发热和耗电会大大增加。
由于上述两个问题,我们认为方案一在移动场景下是不太适用的。

方案二:

为了解决方案一的问题,我们团队用3个月时间来做技术攻关,设计并开发了一个替代方案。架构图如下:

图片描述

本方案作为优化替代方案,方案的关键是:主播不再直接推流到CDN流媒体服务器,而是基于实时音视频通话系统,由实时音视频的中转服务器转发给互动直播服务器,再由互动直播服务器处理后推流到CDN流媒体服务器。

多人音视频实时通话系统,可以实现多人的实时互动,而且多人模式下所有的数据包都是通过音视频中转服务器中转。音视频中转服务器在转发给参与客户端的同时,转发一份到互动直播服务器,互动直播服务器对收到的语音进行混音,同时对视频画面做混合处理,处理完毕以后再推流到CDN流媒体服务器。通过这种方案,将方案一中由主播端做的混音混合及推流操作,转嫁由互动直播服务器来承担。

方案优点:

主播和连麦观众使用了实时音视频来进行连麦互动,实时性高,普通观众看到的合成画面里主播和观众的互动也是同步实时的。
可以实现多人连麦互动直播,功能差异化明显。
所有客户端的上行推流不再依赖基于TCP的RTMP协议,而是使用网易自研的基于UDP的高性能私有协议,传输层的QoS保障更加智能高效。
方案一中主播端的带宽和性能压力不复存在,本方案非常适合移动端的连麦互动直播。

当然本方案虽然有很多优点,但是实现起来也是最困难的。首先本架构涉及到实时通话系统与互动直播系统两大系统的融合,架构和代码复杂度高。特别是互动直播系统,由于要处理视频的混合,对服务器端代码的性能和硬件要求都很高。我们为了解决这个问题,使用了网易机房里多台高性能物理机作为连麦互动直播服务器,并且不断优化服务器端代码架构和处理流程,通过不断的优化,最终满足了业务需求。综上,我们认为本方案是当前最适合移动端的连麦互动直播方案。


  • 展望未来

2016年作为移动直播元年,全球范围内的开发者和公司都在思考如何提供更加优质的服务。我们认为内容永远都是直播发展的王道,作为研发工程师的职责就是为内容的传输保驾护航,提供高清、流畅且延迟低的直播内容。而差异化的功能将成为直播应用的亮点,其中拥有连麦互动的直播应用将会在增加用户的参与度、幸福感的同时提高用户粘性,连麦互动直播的重要性也就不言而喻了。

科技永远都是第一生产力,当前VR虚拟现实技术与直播一样火爆。而VR与直播结合的VR直播能够让观众身临其境,它独特的互动方式或许在不久的将来,就会在直播领域掀起新一轮的变革。而互动直播在未来将是一个以泛生活和场景化直播为主题,充分结合VR技术,全面开启新闻、旅游、教育、医疗等全场景沉浸式“直播+”时代。

(原文:http://netease.im/blog/lmhdzb/)

这篇关于网易云信:直播体验深度优化方案——连麦互动直播的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/547969

相关文章

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操