一种媒体流发送方法、装置、设备和系统制造方法及图纸

技术编号:26072398 阅读:66 留言:0更新日期:2020-10-28 16:46
公开了一种媒体流发送方法、装置、设备和系统,用于为进入直播间的客户端提供直播媒体流,所述方法包括:代理服务器分别接收同一代理客户端发送的第一直播间请求消息和第二直播间请求消息,分别接收媒体服务器通过代理服务器向第一客户端发送的第一直播媒体流和向第二客户端发送的第二直播媒体流,代理服务器在确定所述第一客户端的角色为主用户、第二客户端的角色为仆用户的情况下,仅将第一直播媒体流发送给代理客户端,以使代理客户端将该第一直播媒体流发送给第一客户端和第二客户端。本方法对于同一直播间的所有客户端,代理服务器只需要发送一份直播媒体流给代理客户端,耗费一份广域带宽,所以降低了WAN网链路的负载,减小资源开销。

【技术实现步骤摘要】
一种媒体流发送方法、装置、设备和系统
本申请涉及视频播放领域,尤其是涉及一种媒体流发送方法、装置、设备和系统。
技术介绍
视频观看包括直播和点播两种方式。其中,对于视频点播方式,用户在观看的时候,可以随时选择快进或者回退视频内容,而对于直播而言却不能选择。所谓直播,可以概括地理解为是将每一帧数据打上时序标签后,再进行流式传输的过程。具体地,采集装置比如摄像机、麦克风等源源不断地采集音视频信息,然后将这些信息经过编码、封包、推流等处理后,再经过分发网络进行传输,播放端不停地下载数据并按时序进行解码播放。视频直播整个流程可以分为采集、编码、推流、转码、分发、解码/渲染等一系列过程。主流的互联网视频直播厂家一般采用单播传输协议来传输视频,所以对于N个用户正在观看视频,就会有N路视频流。此外,对于企业中开展的视频直播,要求在支持直播视频的同时还要支持演示文档共享和文字评论等功能,在企业直播的Web页面中一边显示视频内容,一边还要延时共享文档和文字评论内容,以满足用户需求,提升用户体验。为了提升用户体验、节省骨干网络带宽,直播平台一般会部署直播内容分发网络(ContentDeliveryNetwork,CDN)。所述直播CDN是一个分布式的内容分发平台,支持多级架构,可以将用于缓存的服务器分层分级部署,进而为不同地域的用户提供就近服务。在直播CDN分发音视频流的过程中,对于视频的推流和分流过程一般使用实时消息协议(RealTimeMessagingProtocol,RTMP),或者称实时消息传输协议;对于分发过程则一般使用RTMP、HLS(HTTPLiveStreaming)和超文本传输协议(HyperTextTransferProtocol,HTTP)-闪视频(FlashVideo,FLV),简称“HTTP-FLV”三种协议。其中,HLS是苹果公司基于HTTP的流媒体传输协议,主要应用于iOS设备包括iPhone、iPad、iPodtouch以及MacOSX提供音视频直播服务和录制内容(点播)等服务。HLS的最大特点是:它并不是一次性请求完整的数据流,而是会在服务器端将流媒体数据切割成连续的时长较短的小文件,并通过索引文件按序访问小文件。客户端只要不停的按序播放从服务器接收到的这些小文件,就能实现播放音视频。如图1所示,在直播CDN时,内容源(contentsource)将音视频媒体流通过RTMP发送给企业数据中心(EnterpriseDataCenter,EDC),其中EDC中包括Web服务器(Webserver)和多个媒体服务器(Mediaserver),EDC中的Web服务器负责响应客户端(PC)的直播观看请求,对用户进行鉴权,并且根据用户的位置就近分配一个媒体服务器来提供服务。该被选择的媒体服务器会根据预设策略将音视频的媒体流发送给下一级的区域数据中心(RegionDataCenter,RDC),RDC中的媒体服务器在接收到该媒体流(直播内容)之后,会再按照预设策略将其发送给下一级的位于机房(ServerRoom,SR)中的媒体服务器,最后由机房中的媒体服务器缓存上级的媒体服务器分发的媒体流(直播内容)并直接为用户提供直播服务。在这个过程中,上一级RDC中的媒体服务器需要向直播间中每个请求获取媒体流的客户端发送直播媒体流,使得上一级的媒体服务器要向直播间里的每个用户都发送直播媒体流,当进入直播间的用户数量较多时,需要占用大量的广域网(wideareanetwork,WAN)资源来传输直播媒体流,导致网络开销较大。
技术实现思路
本申请实施例提供了一种媒体流发送方法、装置、设备和系统,用于减小媒体服务器向同一直播间的客户端发送媒体流的资源开销,具体地,本申请实施例公开了以下技术方案:第一方面,本申请提供了一种媒体流发送方法,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:代理服务器分别接收同一代理客户端发送用于请求进入直播间的第一直播间请求消息和第二直播间请求消息,其中所述第一直播间请求消息来自第一客户端,所述第二直播间请求消息来自第二客户端;代理服务器分别接收媒体服务器通过所述代理服务器向所述第一客户端发送的第一直播媒体流和向所述第二客户端发送的第二直播媒体流;代理服务器根据所述第一直播间请求消息确定所述第一客户端的角色,并根据所述第二直播间请求消息确定所述第二客户端的角色;所述代理服务器在确定所述第一客户端的角色为主用户、所述第二客户端的角色为仆用户的情况下,仅将所述第一直播媒体流发送给所述代理客户端,以使所述代理客户端将所述第一直播媒体流发送给所述第一客户端和所述第二客户端。本方面提供的方法,对于仆用户角色的第二客户端,在请求获取直播媒体流时,代理客户端只需将缓存在本地的主用户角色的第一客户端请求的第一媒体流直接发送给该第二客户端,从而避免了代理服务器再向代理客户端发送直播媒体流,无需代理服务器为每个通过该代理客户端进入直播间的客户端发送直播媒体流,本方法减少了代理服务器与代理客户端之间发送媒体流的流量,有效地降低出口带宽,节约了资源开销。结合第一方面,在第一方面的一种可能的实现方式中,所述第一直播间请求消息中包括代理客户端的标识,和,所述第二直播间请求消息中包括所述代理客户端的标识;所述方法还包括:代理服务器根据所述第一直播间请求消息包括的所述代理客户端的标识,和,所述第二直播间请求消息包括的所述代理客户端的标识,确定所述第一直播间请求消息和第二直播间请求消息来自同一代理客户端。本方面通过在第一直播间请求消息或第二直播间请求消息携带代理客户端的标识,使得代理服务器在转发消息和响应时能够确定接收端对象,便于消息收发。结合第一方面,在第一方面的另一种可能的实现方式中,所述代理服务器根据所述第二直播间请求消息确定所述第二客户端的角色,包括:代理服务器确定在接收到所述第二直播间请求消息时,所述直播间中是否存在通过所述代理客户端进入所述直播间的角色为主用户的客户端;如果存在,则确定所述第二客户端的角色是仆用户。本实现方式中,对于单一主用户的技术场景,代理服务器只需判断直播间中是否存在主用户,即可以确定进入直播间的客户端的身份角色,能够快速地识别出客户端的角色,并进行标记。对应地,如果不存在所述主用户的客户端,则确定所述第二客户端的角色是主用户。结合第一方面,在第一方面的又一种可能的实现方式中,所述代理服务器将所述第一直播媒体流发送给所述代理客户端之后,还包括:所述代理服务器接收代理客户端发送的退出直播间请求消息,所述退出直播间请求消息用于请求所述第一客户端退出所述直播间;所述代理服务器在确定将所述第二客户端作为新的主用户时,将第二客户端的角色从所述仆用户变更为主用户;以及将向第二客户端发送的第一直播媒体流切换为第二直播媒体流。本实现方式中,当主用户身份的第一客户端退出直播间时,利用新的主用户角色的第二客户端身份向媒体服务器请求并获取直播媒体流,从而保证仍然在直播间中的第二客户端观看媒体内容不受影响,保证直播间中第二客户端的用户观看直播的本文档来自技高网
...

【技术保护点】
1.一种媒体流发送方法,其特征在于,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:/n代理服务器分别接收同一代理客户端发送的用于请求进入直播间的第一直播间请求消息和第二直播间请求消息,其中所述第一直播间请求消息来自第一客户端,所述第二直播间请求消息来自第二客户端;/n所述代理服务器分别接收媒体服务器通过所述代理服务器向所述第一客户端发送的第一直播媒体流和向所述第二客户端发送的第二直播媒体流;/n所述代理服务器根据所述第一直播间请求消息确定所述第一客户端的角色,并根据所述第二直播间请求消息确定所述第二客户端的角色;/n所述代理服务器在确定所述第一客户端的角色为主用户、所述第二客户端的角色为仆用户的情况下,仅将所述第一直播媒体流发送给所述代理客户端,以使所述代理客户端将所述第一直播媒体流发送给所述第一客户端和所述第二客户端。/n

【技术特征摘要】
1.一种媒体流发送方法,其特征在于,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:
代理服务器分别接收同一代理客户端发送的用于请求进入直播间的第一直播间请求消息和第二直播间请求消息,其中所述第一直播间请求消息来自第一客户端,所述第二直播间请求消息来自第二客户端;
所述代理服务器分别接收媒体服务器通过所述代理服务器向所述第一客户端发送的第一直播媒体流和向所述第二客户端发送的第二直播媒体流;
所述代理服务器根据所述第一直播间请求消息确定所述第一客户端的角色,并根据所述第二直播间请求消息确定所述第二客户端的角色;
所述代理服务器在确定所述第一客户端的角色为主用户、所述第二客户端的角色为仆用户的情况下,仅将所述第一直播媒体流发送给所述代理客户端,以使所述代理客户端将所述第一直播媒体流发送给所述第一客户端和所述第二客户端。


2.根据权利要求1所述的方法,其特征在于,所述第一直播间请求消息中包括代理客户端的标识,和,所述第二直播间请求消息中包括所述代理客户端的标识;
所述方法还包括:所述代理服务器根据所述第一直播间请求消息包括的所述代理客户端的标识,和,所述第二直播间请求消息包括的所述代理客户端的标识,确定所述第一直播间请求消息和所述第二直播间请求消息来自同一代理客户端。


3.根据权利要求1或2所述的方法,其特征在于,所述代理服务器根据所述第二直播间请求消息确定所述第二客户端的角色,包括:
所述代理服务器确定在接收到所述第二直播间请求消息时,所述直播间中是否存在通过所述代理客户端进入所述直播间的角色为主用户的客户端;
如果存在,则确定所述第二客户端的角色是仆用户。


4.根据权利要求3所述的方法,其特征在于,所述代理服务器将所述第一直播媒体流发送给所述代理客户端之后,还包括:
所述代理服务器接收代理客户端发送的退出直播间请求消息,所述退出直播间请求消息用于请求所述第一客户端退出所述直播间;
所述代理服务器在确定将所述第二客户端作为新的主用户时,将所述第二客户端的角色从所述仆用户变更为主用户;
所述代理服务器将向所述第二客户端发送的第一直播媒体流切换为所述第二直播媒体流。


5.根据权利要求4所述的方法,其特征在于,所述代理服务器向所述第二客户端发送的所述第一直播媒体流的最后一帧与向所述第二客户端发送的所述第二直播媒体流的第一帧为相邻帧;
所述代理服务器将向所述第二客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,还包括:
所述代理服务器根据所述第一直播媒体流和所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;
所述代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第二客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧;
所述代理服务器在确定所述第一切换帧和所述第二切换帧之后还包括,所述代理服务器将来自所述第一客户端的退出直播间请求消息转发给所述媒体服务器。


6.根据权利要求1或2所述的方法,其特征在于,根据所述第二直播间请求消息确定第二客户端的角色,包括:
所述代理服务器在接收到所述第二直播间请求消息时,判断通过所述代理客户端进入所述直播间的角色为主用户的客户端的数量是否达到预设上限,所述预设上限大于等于2;
如果达到所述预设上限,则确定所述第二客户端的角色是仆用户。


7.根据权利要求6所述的方法,其特征在于,还包括:
如果所述直播间中角色为主用户的客户端的数量不为0,且没有达到所述预设上限,则确定所述第二客户端的角色是备份主用户。


8.根据权利要求6所述的方法,其特征在于,在所述第一客户端是主要主用户,所述第二客户端是仆用户的情况下,还包括:
所述代理服务器接收来自所述第一客户端的退出直播间请求消息;
所述代理服务器在确定将所述第二客户端作为新的备份主用户时,将所述第二客户端的角色从所述仆用户变更为备份主用户;
所述代理服务器以图像组GOP为单位缓存接收的所述第二直播媒体流。


9.根据权利要求7所述的方法,其特征在于,在所述第一客户端是主要主用户,所述第二客户端是备份主用户的情况下,还包括:
所述代理服务器以GOP为单位缓存接收的所述第二直播媒体流;
所述代理服务器根据所述第一直播媒体流和缓存的所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧。


10.根据权利要求9所述的方法,其特征在于,还包括:
所述代理服务器接收来自所述第一客户端的退出直播间请求消息;
所述代理服务器在确定将所述第二客户端作为新的主要主用户时,将所述第二客户端的角色从所述备份主用户变更为主要主用户;
所述代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧;
所述代理服务器根据所述第一切换帧和所述第二切换帧将向所述第二客户端发送的第一直播媒体流切换为所述第二直播媒体流,其中,所述代理服务器向所述第二客户端发送的所述第一直播媒体流的最后一帧为所述第一切换帧,向所述第一客户端发送的所述第二直播媒体流的第一帧为所述第二切换帧。


11.根据权利要求1-10任一项所述的方法,其特征在于,还包括:
所述代理服务器以GOP为单位缓存所述第一直播媒体流。


12.一种媒体流发送方法,其特征在于,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:
代理客户端分别接收第一客户端发送的用于请求进入直播间的第一直播间请求消息,和,第二客户端发送的用于请求进入所述直播间的第二直播间请求消息;
所述代理客户端通过代理服务器向媒体服务器发送所述第一直播间请求消息和所述第二直播间请求消息;
所述代理客户端接收所述代理服务器发送的第一直播媒体流,所述第一直播媒体流是所述媒体服务器通过所述代理服务器向所述第一客户端发送的媒体流,所述第一客户端的角色为主用户,所述第二客户端的角色为仆用户;
所述代理客户端将所述第一直播媒体流发送给所述第一客户端和所述第二客户端。


13.根据权利要求12所述的方法,其特征在于,
所述代理客户端通过代理服务器向媒体服务器发送所述第一直播间请求消息之前还包括:所述代理客户端将所述代理客户端的标识添加到所述第一直播间请求消息中;
所述代理客户端通过代理服务器向媒体服务器发送所述第二直播间请求消息之前还包括:所述代理客户端将所述代理客户端的标识添加到所述第二直播间请求消息中。


14.根据权利要求12或13所述的方法,其特征在于,所述代理客户端接收所述代理服务器发送的第一直播媒体流之后,还包括:
所述代理客户端以图像组GOP为单位缓存所述第一直播媒体流。


15.根据权利要求12-14任一项所述的方法,其特征在于,所述代理客户端将所述第一直播媒体流发送给所述第二客户端之前,还包括:
所述代理客户端调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:所述代理客户端向所述第二客户端发送的所述第一直播媒体流的第一帧的时间戳为0,并且,向所述第二客户端发送的所述第一直播媒体流的相邻帧的时间戳连续。


16.根据权利要求12-15任一项所述的方法,其特征在于,在所述第一客户端请求退出直播间的情况下,还包括:
所述代理客户端接收所述代理服务器发送的第二直播媒体流,所述第二直播媒体流是所述媒体服务器通过所述代理客户端发送给第二客户端的媒体流,所述第二客户端是角色从仆用户变更为主用户的客户端;
所述代理客户端将所述第二直播媒体流发送给所述第二客户端。


17.根据权利要求16所述的方法,其特征在于,所述代理客户端将所述第二直播媒体流发送给所述第二客户端之前,还包括:
所述代理客户端调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:所述代理客户端向所述第二客户端发送的所述第二直播媒体流的第一帧的时间戳与向所述第二客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。


18.一种媒体流发送装置,其特征在于,所述装置包括:
接收单元,用于分别接收来自同一代...

【专利技术属性】
技术研发人员:乔乃强周军张明礼开毅
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1