视频直播连麦技术详解「建议收藏」

视频直播连麦技术详解「建议收藏」前言:随着带宽、Wifi的不断升级,手机的普及,直播技术不断突破,各种门槛在降低,全民直播时代已经来临。直播也深入到各行各业,比如说在线教育,还有财经行业等,也渐渐成为各行各业的标配。云帆加速自成立以来就一直致力于流媒体领域企业服务,尤其对于直播,目前已经推出了针对于不同场景的直播云解决方案,在保证广大用户使用体验的前提下,为客户节省更多的研发成本。无论是传统企业转型,或者是创业企业,云帆加速都…

大家好,又见面了,我是你们的朋友全栈君。

前言:随着带宽、Wifi的不断升级,手机的普及,直播技术不断突破,各种门槛在降低,全民直播时代已经来临。直播也深入到各行各业,比如说在线教育,还有财经行业等,也渐渐成为各行各业的标配。

云帆加速自成立以来就一直致力于流媒体领域企业服务,尤其对于直播,目前已经推出了针对于不同场景的直播云解决方案,在保证广大用户使用体验的前提下,为客户节省更多的研发成本。无论是传统企业转型,或者是创业企业,云帆加速都将为其直播化提供针对性的解决方案。目前云帆加速已经与流媒体领域50+行业top级客户建立合作关系,并提供服务。

据记者了解到,其中直播解决方案中的连麦这一块进行技术分解,其实对于连麦而言,有这么几个关键点:是否有足够低的延时,以保证实时互动、是否兼容所有手机终端来覆盖所有用户及协议的选择。

什么是连麦?

了解移动直播连麦实现架构,需要定义一下参与的角色,首先介绍客户端(如图1),按用户在连麦直播中的角色差异分别定义为:主播、连麦者(粉丝)、观众。


图片描述

主播,指当前正在直播的主播,相当于主持人,可以主动邀请用户连麦或批准当前观众的连麦请求,也可以关闭某个连麦者的连麦;主播端视频一般都是全屏显示。

连麦者(粉丝),指参与当前连麦的观众,可以向主播申请连麦,或接受主播的连麦邀请,进行音视频连麦,当不想连麦后,连麦者可以主动断开;连麦者的视频一般只在右侧的某个区域显示,视频尺寸较小,以不影响主播视频显示为好。

观众,是移动直播的观众。

下面介绍下移动直播视频云平台的结构,为简化模型不考虑数据存储及各类型服务器集群的情况,仅描述移动直播连麦所需要的最简单服务器类型,如图2:


图片描述

服务器集群,用于管理主播和主播、主播和连麦者的连线会话,实现音视频云端的调度和计算能力,具体会包括信令服务器,流媒体服务器集群等。

CDN网络,接收主播和连麦者发送过来的媒体数据,提供缓冲,存储和转发的能力,分发直播内容给观众。

下面介绍其特点,与主播的单向直播相比,连麦实现的技术难点增大很多,具体如下:

音频混流,主播将自己的声音与连麦者的声音做混音。

视频混流,主播将自己的画面与连麦者的画面做视频合成。

降噪,去除直播环境中的噪音,啸叫。

回声消除,消除扬声器和麦克风的近端回声。

低延迟互动,延迟抖动500ms~800ms之间,保证主播和连麦者之间能够实时音视频互动。

主播与粉丝间的连麦互动场景

参与移动直播连麦的架构中共涉及4个角色,分别是主播、连麦者、观众和服务器。从移动直播连麦互动场景中的角色来分析,包含2种角色间的连麦:

主播与粉丝连麦

主播与连麦者连麦,主播可以与其中的一位粉丝或多位粉丝互动,并且其他粉丝可以观看这个互动的过程。连麦互动这个功能瞬间可以提高直播平台普通用户的参与感与幸福感,增加用户粘性。

主播与其他主播连麦

主播与其他主播之间连麦,主播之间需要连麦互动拉人气,互相增加粉丝,带动主播间的粉丝、经济双赢。

理论上来说,这4个角色都可以负责音频视频的混流,即实现连麦的合成功能,从而确保每个观众看到连麦后的视频和听到音频。从成本角度考虑,在服务器端混流观众端延迟大,成本比较高,不具优势。我们只讨论主播端混流和观众端混流的两种方案。

主播与粉丝连麦互动解决方案

主播与粉丝间连麦互动的解决方案:

主播端混流

该实现思路要求主播分别把自己的视频数据与连麦粉丝的视频数据合成,然后把合成好的视频流、主播自己的的音频数据、连麦粉丝的音频数据推给CDN网络,并经由CDN分发给所有观众。故主播端手机负担的任务更重,对手机性能和网络性能要求也比普通直播时更高一些。主播与粉丝连麦,主播端混流部分的基本流程如图3所示:


图片描述·

主播、粉丝建立连麦会话后,均向CDN网络推原始音视频流。主播、连麦者从CDN网络获取对方的媒体数据。

主播从CDN网络拉取连麦者的音视频数据后,在主播端进行相应的混流工作。一方面用于自己的视频显示和声音播放,另一方面发给CDN网络,用于观众端拉流观看;连麦粉丝拿到主播视频、音频,进行回声消除、降噪等工作,用于自己的视频显示和声音播放。

主播把自己的视频数据、连麦粉丝的视频数据进行画面合成,替代主播原始流的视频画面,并将主播自己的音频数据、连麦粉丝的音频数据推到CDN网络,用于观众端拉流观看。主播进行的混流工作包括:画面合成、回声消除、降噪、混音。

观众端拉取主播端混合好的1路视频数据、2路音频数据后,观看合成画面。观看到的混流画面:A大窗、B小窗,如下图:


图片描述

主播与粉丝连麦,主播端混流方案的优劣势:

劣势:主播端压力大,主播端需要视频混流以及面对计算压力,对手机性能和网络性能要求也比普通直播时更高一些,不适合多人连麦。

优势:解决上行带宽瓶颈,推1路视频流,不存在主播端上行带宽瓶颈;成本低,它在两个方面降低成本:计算资源和网络带宽;

观众端混流

该实现思路要求观众分别拉主播、连麦者的音视频数据,然后在观众端进行混流工作。主播与粉丝进行连麦,观众端混流的部分的基本流程如图4所示:


图片描述

主播、粉丝建立连麦会话后,均向CDN网络推原始音视频流。

主播、连麦者从CDN网络使获取对方的媒体数据,在自己端进行回声消除、降噪等工作,用于自己的视频显示和声音播放,并发送自己的音视频数据给CDN网络以便观众端拉流并进行响应的混流工作。

观众端拉取2路视频数据、2路音频数据,并进行相应的混流工作。其混流工作包括:画面合成、回声消除、降噪、混音。

观众端混流后,观看到的混流画面:A大窗、B小窗显示。

主播与粉丝连麦,观众端混流方案的优劣势:

劣势:观众端压力大,观众需拉多路流进行混流,观众端的下行带宽压力大; 解码压力大,观众需解码多路流,开销比较高;

优势:简单易实现,可以快速搭建;支持多人连麦;

主播与主播间的连麦互动解决方案

观众端混流

该实现思路要求观众分别把拉取所有连麦主播的音视频数据,然后在观众端进行混流工作。主播与主播连麦,观众端进行混流的基本流程如图5所示:


图片描述

主播与主播建立连麦会话后,主播均向CDN网络推原始音视频流。

主播均从CDN网络使获取对方的媒体数据,在自己端进行回声消除、降噪等工作,用于自己的视频显示和声音播放,并发送自己的音视频数据给CDN网络以便观众端拉流并进行响应的混流工作。

观众端拉取2路视频数据、2路音频数据后,进行相应的混流工作。其混流工作包括:画面合成、回声消除、降噪、混音。

观众端混流后,观看合成画面。如果A主播与B主播在连麦前,C1作为A主播的观众,C2作为B主播的观众,连麦后,C1观看到的混流画面:A大窗、B小窗,C2观看到的混流画面:B大窗、A小窗。

主播与主播连麦,观众端混流方案的优劣势:

劣势:观众端压力大,观众需拉多路流进行混流,观众端的下行带宽压力大;解码压力大,观众需解码多路流,开销比较高;

优势:简单易实现,可以快速搭建;支持多人连麦。

云帆加速互动直播解决方案的优势

主播端合流方案都基于自研UDP私有协议,解决主播端合流引起的带宽瓶颈的问题

云帆加速基于UDP私有协议的主播端混流连麦互动方案,除了具有主播端混流连麦方案节省成本的优势,通过技术创新以及大量测试、实践,包含更多具有优势的技术特性:

解决了主播端混流的上行带宽瓶颈,主流的主播端混流方案是通过2路RTMP流实现。连麦前,主播向CDN网络推送1路音视频;连麦后,主播推送2路视频流,2路音频流(自己的音视频数据、连麦者的音视频数据)给CDN网络,在主播端混流,消耗的上行网络带宽比连麦前增加了一倍。

云帆加速的主播端混流方案是通过基于UDP私有协议的1路视频流实现。与主流方案的差异在于:

整个连麦互动是基于自研的UDP私有协议;在主播端混流后,用合成的视频画面替换主播原始流的视频画面,始终只推1路视频流到CDN网络,连麦后,仅增加了推送连麦者音频所消耗的上行带宽。

按照我国的网络国情,如果下行网络带宽是100M bps,那么上行网络带宽相对应一般是1M bps,好一点的会到4M bps。根据云帆加速的经验,移动端360P分辨率的高清视频,音视频流平均的码率是864 kbps,其中视频平均码率占到800 kbps。

主流主播端连麦方案在连麦后将会推两路流:1路主播音视频流、1路连麦者视频流,因此主流连麦方案推2路音视频的码率大概是1.73Mbps,而云帆加速主播端混流方案,始终推1路视频流、连麦后的增加连麦者的音频,总共码率是0.93 Mbps,解决了主流主播端混流方案的上行带宽瓶颈问题。

UDP可靠传输:所有主播端的上行推流不再依赖基于TCP的RTMP协议,而是使用云帆加速自研的基于UDP的高性能私有协议,传输层的QoS保障更加智能高效。

自适应码率、自适应帧率:使用基于网络状态的音视频码率自适应算法,根据当前网络的丢包、时延自适应降低或者升高音频和视频的码率和帧率,通过这个方法来降低网络的拥塞,提高通话质量;

可支持更多主播交互:目前支持2人视频,可扩展为多人主播、多人连麦互动、多人纯音频连麦互动;

支持大小窗口切换:在主播端支持自定义大小流切换,自主选择视频大小窗口的切换。

全程优化技术细节

连麦技术包含4大技术要点:网络、视频、音频、适配。我们的对这4个方面进行了全程优化。

网络优化

网络传输协议:方案支持TCP/自研UDP私有协议/自研UDP私有协议+RTMP 协议,我们建议采用UDP或者UDP+RTMP的方案。

选择TCP在网络状况可控的情况下是个不错的方案,但在大规模跨网和终端网络不稳定的情况下会出现卡顿,延迟,断线率高。

自研UDP私有协议:整个UDP传输层使用前向纠错FEC算法进行智能保护,最大限度上保证实时音视频通话的效果。根据我们的实际测试,在使用上诉QoS保障策略以后,音视频通话可以抗20%丢包和800ms的网络抖动。

HTTP DNS解析优化:本机缓存直播和播放使用域名的解析结果,对域名进行预解析,每次需要直播推流和播放的时候不需要再进行DNS过程。此处可节省几十到几百毫秒的打开延迟。

智能Qos保障:推流端会根据当前上行网络情况控制音视频数据发包和编码,同时会根据网络情况选择合适的策略控制音视频发送。比如网络很差的情况下,推流端会优先发送音频数据,保证用户能听到声音,在一定间隔内发关键帧数据,保证用户在一定时间间隔之后能看到一些画面的变化。

网络状态反馈:会对推流端的网络状态进行实时监测并进行上报反馈。

自适应码率、自适应帧率:使用基于网络状态的音视频码率自适应算法,根据当前网络的丢包、时延自适应降低或者升高音频和视频的码率和帧率,通过这个方法来降低网络的拥塞,提高通话质量;

弱网推流优化:基于UDP定制包头实现传输预测,主动丢包,合理补包,系统会根据网络情况和包的类型判断是否补包,进行最优补包。自研UDP拥塞机制,根据实时网络包反馈,会动态增加或者减低码率,即使在弱网情况下,也能确保推流不卡顿。如果推流端QoS异常,系统可实时检测进行自适应码率、帧率,或手动调整推流端码率、帧率。

视频优化

基于时域分层的H.264编码:通过大量测试调优,对网络抖动有更好的适应能力。

极速秒开:支持毫秒级启动画面,观看直播无需等待。在音视频解码前,通过预设解码器类型,省去探测文件类型时间;支持毫秒级启动画面,观看直播无需等待;即使在网络不好的时候,也能提供给用户流畅的直播观看体验。

音频优化

云端机型及网络适配:终端在推流、播放前会获取通过协议上报的当前机型的机型配置、网络情况、IP信息,不断的迭代和完善机型编解码适配库。

硬件编解码机型适配:通过不断完善的云端机型,云端会返回一个最适合的编解码策略配置;

服务器部署及智能调度

全球节点部署

· 国内多个BGP机房与三线机房,国内重要城市100%覆盖;
· 海外机房节点;
· 跨国代理光纤专线。

节点智能分配

· 对用户所在区域、运营商、ISP进行分析,进行智能分配;
· 服务节点实时负载;
· 服务节点实时网络状况监测;

服务可用性、稳定性

· 服务高可用:99%的高可用架构部署;
· 高性能稳定物理机;
· 宕机自动恢复与策略切换。

自研直播CDN系统及第三方CDN网络支持

云帆加速互动连麦方案不仅完美适配自研的直播CDN系统,也支持第三方CDN网络的接入。

小结:自2016年下半年来,直播行业就发生了很大的变化:连麦互动已经成为直播行业的标配。云帆加速作为流媒体领域的服务企业,一直秉持着为客户提供更高的价值,为用户传输不可估量的价值理念,为企业减负,为各行各业提供一站式直播解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162855.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python 删除文件、清空目录的方法总结

    python 删除文件、清空目录的方法总结Pythonos.remove()方法os.remove()方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。在Unix,Windows中有效以下实例演示了remove()方法的使用:#!/usr/bin/python#-*-coding:UTF-8-*-importos,sys#列出目录print”目录为:%s”%os…

  • windows获取窗口句柄

    windows获取窗口句柄1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。[html] viewplaincopy #include <Windows.h>  #include <stdio.h>  #include <string.h>  #…

  • linux的ftp命令大全_linux tar命令详解

    linux的ftp命令大全_linux tar命令详解ftp主机名/IP会提示输入用户名和密码匿名登录:用户名输入:anonymous密码输入:一个邮箱格式的任意字符串ascii#设定以ASCII方式传送文件(缺省值)bell#每完成一次文件传送,报警提示.binary#设定以二进制方式传送文件.bye#终止主机FTP进程,并退出FTP管理方式.case#当为ON时,用MGET命令拷贝的文件名到本地…

  • 建立git服务器_git部署代码到服务器

    建立git服务器_git部署代码到服务器参考网上资料搭建git服务器过程记录如下:需求硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到。软件需求:git-core,gitosis,openssh-server,openssh-client安装配置git服务器安装git和openssh:a@server:~$sudoapt-getinstallgit-coreopenssh-servero…

  • 网络电视测试软件,2018三款智能电视屏幕检测软件,当贝市场良心推荐「建议收藏」

    2018三款智能电视屏幕检测软件,当贝市场良心推荐2018年03月01日18:08作者:厂商投稿编辑:鸿雁分享买电视后,很多朋友会发现,虽然电视是从厂家那里发的最新的货,但还是有不同层次的瑕疵,但电视机的保修期有限,该怎么查出所有电视上存在的问题呢?小编这里就整合出了三个软件,可以查出电视坏点、漏光等问题,为大家造福。智能电视用户可以在当贝市场中安装以下软件检测。第一个:电视屏幕大师电视屏幕大师…

  • DEDECMS系统安全篇之移data目录到Web根目录以外听语音

    DEDECMS系统安全篇之移data目录到Web根目录以外听语音

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号