CN114666614A - 一种媒体流发送方法、装置和设备 - Google Patents
一种媒体流发送方法、装置和设备 Download PDFInfo
- Publication number
- CN114666614A CN114666614A CN202210153159.1A CN202210153159A CN114666614A CN 114666614 A CN114666614 A CN 114666614A CN 202210153159 A CN202210153159 A CN 202210153159A CN 114666614 A CN114666614 A CN 114666614A
- Authority
- CN
- China
- Prior art keywords
- client
- media stream
- live
- frame
- proxy server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 163
- 230000004044 response Effects 0.000 claims description 53
- 238000012545 processing Methods 0.000 claims description 32
- 230000015654 memory Effects 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 description 32
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 5
- 230000011664 signaling Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 101000946275 Homo sapiens Protein CLEC16A Proteins 0.000 description 2
- 102100034718 Protein CLEC16A Human genes 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100122750 Caenorhabditis elegans gop-2 gene Proteins 0.000 description 1
- 101100476639 Caenorhabditis elegans gop-3 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1822—Conducting the conference, e.g. admission, detection, selection or grouping of participants, correlating users to one or more conference sessions, prioritising transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1818—Conference organisation arrangements, e.g. handling schedules, setting up parameters needed by nodes to attend a conference, booking network resources, notifying involved parties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/611—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/239—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
- H04N21/2393—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/27—Server based end-user applications
- H04N21/274—Storing end-user multimedia data in response to end-user request, e.g. network recorder
- H04N21/2743—Video hosting of uploaded data from client
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47208—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting near-video-on-demand content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/15—Conference systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2203/00—Aspects of automatic or semi-automatic exchanges
- H04M2203/50—Aspects of automatic or semi-automatic exchanges related to audio conference
- H04M2203/5027—Dropping a party from a conference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2203/00—Aspects of automatic or semi-automatic exchanges
- H04M2203/50—Aspects of automatic or semi-automatic exchanges related to audio conference
- H04M2203/5045—Selection of bridge/multipoint control unit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2203/00—Aspects of automatic or semi-automatic exchanges
- H04M2203/50—Aspects of automatic or semi-automatic exchanges related to audio conference
- H04M2203/5081—Inform conference party of participants, e.g. of change of participants
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2183—Cache memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/222—Secondary servers, e.g. proxy server, cable television Head-end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Human Computer Interaction (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
公开了一种媒体流发送方法、装置和设备,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:代理服务器接收来自第一客户端的用于请求进入直播间的第一直播间请求消息,根据所述第一直播间请求消息确定第一客户端的角色,如果第一客户端的角色是仆用户,则将代理服务器上缓存的第一直播媒体流发送给第一客户端,其中第一直播媒体流是媒体服务器通过代理服务器发送给第二客户端的媒体流,所述第二客户端的角色是主用户。本方法媒体服务器只需要发送一份直播媒体流给代理服务器,代理服务器就能够将该直播媒体流复制并分发给直播间的所有仆用户的客户端,减少了发送媒体流的流量,有效地降低出口带宽,节约了资源开销。
Description
技术领域
本申请涉及视频播放领域,尤其是涉及一种媒体流发送方法、装置和设备。
背景技术
视频观看包括直播和点播两种方式。其中,对于视频点播方式,用户在观看的时候,可以随时选择快进或者回退视频内容,而对于直播而言却不能选择。所谓直播,可以概括地理解为是将每一帧数据打上时序标签后,再进行流式传输的过程。具体地,采集装置比如摄像机、麦克风等源源不断地采集音视频信息,然后将这些信息经过编码、封包、推流等处理后,再经过分发网络进行传输,播放端不停地下载数据并按时序进行解码播放。视频直播整个流程可以分为采集、编码、推流、转码、分发、解码/渲染等一系列过程。
主流的互联网视频直播厂家一般采用单播传输协议来传输视频,所以对于N个用户正在观看视频,就会有N路视频流。此外,对于企业中开展的视频直播,要求在支持直播视频的同时还要支持演示文档共享和文字评论等功能,在企业直播的Web页面中一边显示视频内容,一边还要延时共享文档和文字评论内容,以满足用户需求,提升用户体验。
为了提升用户体验、节省骨干网络带宽,直播平台一般会部署直播内容分发网络(content delivery network,CDN)。所述直播CDN是一个分布式的内容分发平台,支持多级架构,可以将用于缓存的服务器分层分级部署,进而为不同地域的用户提供就近服务。
在直播CDN分发音视频流的过程中,对于视频的推流和分流过程一般使用实时消息协议(real time messaging protocol,RTMP),或者称实时消息传输协议;对于分发过程则一般使用RTMP、HLS(HTTP live streaming)和超文本传输协议(hyper text transferprotocol,HTTP)-闪视频(flash video,FLV),简称“HTTP-FLV”三种协议。其中,HLS是苹果公司基于HTTP的流媒体传输协议,主要应用于iOS设备包括iPhone、iPad、iPod touch以及Mac OSX提供音视频直播服务和录制内容(点播)等服务。HLS的最大特点是:它并不是一次性请求完整的数据流,而是会在服务器端将流媒体数据切割成连续的时长较短的小文件,并通过索引文件按序访问小文件。客户端只要不停的按序播放从服务器获取到的这些小文件,就能实现播放音视频。
如图1所示,在直播CDN时内容源(content source)将音视频媒体流通过RTMP发送给企业数据中心(enterprise data center,EDC),其中EDC中包括Web服务器(Web server)和多个媒体服务器(media server),EDC中的Web服务器负责响应客户端的直播观看请求,对用户进行鉴权,并且根据用户的位置就近分配一个媒体服务器来提供服务。该被选择的媒体服务器会根据预设策略将音视频的媒体流发送给下一级的区域数据中心(regiondata center,RDC),RDC中的媒体服务器在接收到该媒体流(直播内容)之后,会再按照预设策略将其发送给下一级的位于机房(server room,SR)中的媒体服务器,最后由机房中的媒体服务器缓存上级的媒体服务器分发的媒体流(直播内容)并直接为用户提供直播服务。
在这个过程中,上一级RDC中的媒体服务器需要向直播间中每个请求获取媒体流的客户端发送直播媒体流,使得上一级的媒体服务器要向直播间里的每个用户都发送直播媒体流,当进入直播间的用户数量较多时,需要占用大量的广域网(wide area network,WAN)资源来传输直播媒体流,导致网络开销较大。
发明内容
本申请实施例提供了一种媒体流发送方法、装置和设备,用于减小媒体服务器向同一直播间的客户端发送媒体流的资源开销,具体地,本申请实施例公开了以下技术方案:
第一方面,本申请实施例提供了一种媒体流发送方法,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:代理服务器接收来自第一客户端的用于请求进入直播间的第一直播间请求消息;所述代理服务器根据所述第一直播间请求消息确定第一客户端的角色;如果所述第一客户端的角色是仆用户,则将所述代理服务器上缓存的第一直播媒体流发送给所述第一客户端,其中所述第一直播媒体流是媒体服务器通过所述代理服务器发送给第二客户端的媒体流,所述第二客户端的角色是主用户。
本方法,利用代理服务器在获取角色为主用户的客户端请求的直播媒体流时,缓存部分媒体流片段在本地,当角色为仆用户的客户端进入直播间并请求直播媒体流时,将缓存在本地的媒体流直接发送给该角色为仆用户的客户端,从而避免了媒体服务器再向代理服务器发送直播媒体流。因此,根据本申请第一方面提供的方法,无需媒体服务器为每个通过该代理服务器加入直播间的客户端发送直播媒体流,减少了发送媒体流的流量,有效地降低出口带宽,节约了资源开销。
结合第一方面,在第一方面的一种可能的实现方式中,根据所述第一直播间请求消息确定第一客户端的角色,包括:确定在接收到所述第一直播间请求消息时所述直播间中是否存在角色为主用户的客户端;如果存在,则确定所述第一客户端的角色是仆用户。
结合第一方面,在第一方面的另一种可能的实现方式中,将所述代理服务器上缓存的第一直播媒体流发送给所述第一客户端之前,还包括:所述代理服务器接收来自所述第一客户端的第一媒体请求消息,不转发所述第一媒体请求消息给所述媒体服务器;所述代理服务器向所述第一客户端发送第一媒体响应消息,所述第一媒体响应消息用于通知所述第一客户端允许获取媒体流。
结合第一方面,在第一方面的又一种可能的实现方式中,所述第一媒体请求消息中包括第一客户端的标识;所述代理服务器将所述第一直播媒体流发送给所述第一客户端之后,还包括:所述代理服务器接收来自所述第二客户端的退出直播间请求消息;在确定将所述第一客户端作为新的主用户时,将所述第一客户端的角色从所述仆用户变更为主用户;所述代理服务器向所述媒体服务器发送第二媒体请求消息,所述第二媒体请求消息中包括所述第一客户端的标识;所述代理服务器接收所述媒体服务器根据所述第二媒体请求消息发送的第二直播媒体流,以及将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流。
结合第一方面,在第一方面的又一种可能的实现方式中,根据所述第一直播间请求消息确定第一客户端的角色,包括:所述代理服务器确定在接收到所述第一直播间请求消息时所述直播间中角色为主用户的客户端的数量是否达到预设上限,所述预设上限大于1;如果达到所述预设上限,则确定所述第一客户端的角色是仆用户。本实现方式中,在多个主用户的场景下,代理服务器不需要为每个通过该代理服务器加入直播间的用户向该代理服务器发送直播媒体流,而是仅将缓存在本地的主用户请求的直播媒体流分发个各个仆用户角色的客户端,从而减少了发送媒体流的流量,节约了资源开销。
结合第一方面,在第一方面的又一种可能的实现方式中,如果所述直播间中角色为主用户的客户端的数量不为0且没有达到所述预设上限,则确定所述第一客户端的角色是备份主用户。
结合第一方面,在第一方面的又一种可能的实现方式中,在所述第一客户端是仆用户的情况下,还包括:所述代理服务器接收来自所述第二客户端的退出直播间请求消息;在确定将所述第一客户端作为新的备份主用户时,将所述第一客户端的角色从所述仆用户变更为备份主用户;所述代理服务器向所述媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中包括所述第一客户端的标识;所述代理服务器接收所述媒体服务器根据所述第三媒体请求消息发送的第三直播媒体流。
结合第一方面,在第一方面的又一种可能的实现方式中,在所述第二客户端为主要主用户,所述第一客户端是所述备份主用户的情况下,还包括:所述代理服务器将所述第一直播媒体流发送给所述第一客户端。
结合第一方面,在第一方面的又一种可能的实现方式中,在所述第一客户端是备份主用户的情况下,还包括:所述代理服务器接收来自所述第一客户端的第四媒体请求消息;将所述第四媒体请求消息发送给所述媒体服务器;接收所述媒体服务器根据所述第四媒体请求消息发送的第四直播媒体流。
结合第一方面,在第一方面的又一种可能的实现方式中,在所述第一客户端是备份主用户的情况下,还包括:所述代理服务器接收来自所述第二客户端的退出直播间请求消息,在确定将所述第一客户端作为新的主要主用户时,将所述第一客户端的角色从所述备份主用户变更为主要主用户;所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流。
结合第一方面,在第一方面的又一种可能的实现方式中,所述方法还包括:所述代理服务器调整所述第四直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第四直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
结合第一方面,在第一方面的又一种可能的实现方式中,所述代理服务器向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧为相邻帧;所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流之前还包括:所述代理服务器根据缓存的所述第一直播媒体流和所述第四直播媒体流识别分别属于所述第一直播媒体流和所述第四直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;所述代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第四直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧。
结合第一方面,在第一方面的又一种可能的实现方式中,还包括:所述代理服务器以图像组GOP为单位缓存所述第一直播媒体流。
结合第一方面,在第一方面的又一种可能的实现方式中,所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,还包括:所述代理服务器调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:所述代理服务器向所述第一客户端发送的所述第二直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
结合第一方面,在第一方面的又一种可能的实现方式中,所述代理服务器向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧为相邻帧;所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前还包括:所述代理服务器根据所述第一直播媒体流和所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;所述代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧;所述代理服务器在确定所述第一切换帧和所述第二切换帧之后还包括,将来自所述第二客户端的退出直播间请求消息转发给所述媒体服务器。
结合第一方面,在第一方面的又一种可能的实现方式中,所述代理服务器将所述第一直播媒体流发送给所述第一客户端之前,还包括:所述代理服务器调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:所述代理服务器向所述第一客户端发送的所述第一直播媒体流的第一帧的时间戳为0,并且向所述第一客户端发送的所述第一直播媒体流的相邻帧的时间戳连续。
第二方面,本申请实施例一种媒体流发送装置,所述装置包括:该装置包括用于执行上述第一方面以及第一方面的各种实现方式中方法步骤的单元。具体地,该装置包括获取单元和处理单元,此外,还可以包括存储模块等其他模块或单元。
第三方面,本申请实施例还提供了一种网络设备,包括收发器、处理器和存储器,所述处理器与所述存储器耦合,所述存储器用于存储指令;所述处理器用于调用所述指令使得所述网络设备执行前述第一方面以及第一方面各种实现方式中的媒体流发送方法。
进一步地,所述收发器,用于接收来自第一客户端的用于请求进入直播间的第一直播间请求消息;所述处理器,用于根据所述第一直播间请求消息确定第一客户端的角色;所述收发器还用于在所述第一客户端的角色是仆用户的情况下,将缓存的第一直播媒体流发送给所述第一客户端,其中所述第一直播媒体流是媒体服务器通过所述代理服务器发送给第二客户端的媒体流,所述第二客户端的角色是主用户。
可选的,在本方面的一种可能的实现方式中,所述处理器,具体用于确定在接收到所述第一直播间请求消息时所述直播间中是否存在角色为主用户的客户端;如果存在,则确定所述第一客户端的角色是仆用户。
可选的,在本方面的另一种可能的实现方式中,所述收发器,还用于在将所述代理服务器上缓存的第一直播媒体流发送给所述第一客户端之前,接收来自所述第一客户端的第一媒体请求消息,不转发所述第一媒体请求消息给所述媒体服务器;以及向所述第一客户端发送第一媒体响应消息,所述第一媒体响应消息用于通知所述第一客户端允许获取媒体流。
可选的,在本方面的又一种可能的实现方式中,所述第一媒体请求消息中包括第一客户端的标识;所述收发器还用于在将所述第一直播媒体流发送给所述第一客户端之后,接收来自所述第二客户端的退出直播间请求消息;所述处理器还用于在确定将所述第一客户端作为新的主用户时,将所述第一客户端的角色从所述仆用户变更为主用户;所述收发器还用于向所述媒体服务器发送第二媒体请求消息,所述第二媒体请求消息中包括所述第一客户端的标识;接收所述媒体服务器根据所述第二媒体请求消息发送的第二直播媒体流;所述收发器还用于将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流。
可选的,在本方面的又一种可能的实现方式中,所述处理器,具体用于确定在接收到所述第一直播间请求消息时所述直播间中角色为主用户的客户端的数量是否达到预设上限,所述预设上限大于1;如果达到所述预设上限,则确定所述第一客户端的角色是仆用户。
可选的,在本方面的又一种可能的实现方式中,所述处理器,还用于在所述直播间中角色为主用户的客户端的数量不为0且没有达到所述预设上限的情况下,确定所述第一客户端的角色是备份主用户。
可选的,在本方面的又一种可能的实现方式中,在所述第一客户端是仆用户的情况下,所述收发器还用于接收来自所述第二客户端的退出直播间请求消息;所述处理器还用于在确定将所述第一客户端作为新的备份主用户时,将所述第一客户端的角色从所述仆用户变更为备份主用户;所述收发器还用于向所述媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中包括所述第一客户端的标识,以及接收所述媒体服务器根据所述第三媒体请求消息发送的第三直播媒体流。
可选的,在本方面的又一种可能的实现方式中,在所述第二客户端为主要主用户,所述第一客户端是所述备份主用户的情况下,所述收发器还用于将所述第一直播媒体流发送给所述第一客户端。
可选的,在本方面的又一种可能的实现方式中,在所述第一客户端是备份主用户的情况下,所述收发器还用于接收来自所述第一客户端的第四媒体请求消息;将所述第四媒体请求消息发送给所述媒体服务器;以及接收所述媒体服务器根据所述第四媒体请求消息发送的第四直播媒体流。
可选的,在本方面的又一种可能的实现方式中,在所述第一客户端是备份主用户的情况下,所述收发器还用于接收来自所述第二客户端的退出直播间请求消息;所述处理器还用于在确定将所述第一客户端作为新的主要主用户时,将所述第一客户端的角色从所述备份主用户变更为主要主用户;所述收发器还用于将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流。
可选的,在本方面的又一种可能的实现方式中,所述处理器还用于调整所述第四直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第四直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
可选的,在本方面的又一种可能的实现方式中,所述收发器向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧为相邻帧;
其中,所述处理器还用于根据缓存的所述第一直播媒体流和所述第四直播媒体流识别分别属于所述第一直播媒体流和所述第四直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第四直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧。
可选的,在本方面的又一种可能的实现方式中,存储器用于以图像组GOP为单位缓存所述第一直播媒体流。
可选的,在本方面的又一种可能的实现方式中,所述处理器还用于调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:所述收发器还用于向所述第一客户端发送的所述第二直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
可选的,在本方面的又一种可能的实现方式中,所述收发器向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧为相邻帧;
所述处理器还用于根据所述第一直播媒体流和所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧;以及在确定所述第一切换帧和所述第二切换帧之后,通过所述收发器将来自所述第二客户端的退出直播间请求消息转发给所述媒体服务器。
可选的,在本方面的又一种可能的实现方式中,所述处理器还用于调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第一直播媒体流的第一帧的时间戳为0,并且向所述第一客户端发送的所述第一直播媒体流的相邻帧的时间戳连续。
可选的,所述网络设备为代理服务器。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质中存储有指令,当所述指令在计算机或处理器上运行时,用于执行前述第一方面以及第一方面各种实现方式中的方法。
第五方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,当所述指令被计算机或处理器执行时,可实现前述第一方面和第一方面各种实现方式中的方法。
第六方面,本申请实施例还提供了一种媒体流发送系统,所述系统包括至少一个客户端、代理服务器和媒体服务器,所述系统通过所述代理服务器实现前述第一方面以及第一方面的各种实现方式所述的媒体流发送方法。其中,所述代理服务器用于执行第一方面或第一方面的任一实现方式所述的媒体流发送方法。
可选的,所述代理服务器为上述第二方面或第二方面任一实现方式所述的媒体发送装置。
结合第六方面,在第六方面的一种可能的实现中,所述媒体服务器位于区域数据中心RDC中,所述RDC中还包括Web服务器,所述Web服务器用于为通过代理客户端进入直播间的客户端分配媒体服务器。
结合第六方面,在第六方面的另一种可能的实现中,所述系统还包括企业数据中心EDC和内容源。
可选的,所述媒体流发送系统为内容分发网络CDN系统。
另外,本申请实施例还提供了一种芯片系统,所述芯片系统包括处理器和接口电路,所述接口电路与所述处理器耦合,所述处理器用于执行计算机程序或指令,以实现前述第一方面以及第一方面各种实现方式中的方法;其中所述接口电路用于与所述芯片系统之外的其它模块进行通信。
本实施例的方法,利用代理服务器在获取角色为主用户的客户端请求的直播媒体流时,缓存部分媒体流片段在本地代理服务器,当角色为仆用户的客户端进入直播间并请求直播媒体流时,将缓存在本地的媒体流直接发送给该角色为仆用户的客户端,从而避免了媒体服务器再向代理服务器发送直播媒体流,本方法无需媒体服务器为每个通过该代理服务器加入直播间的客户端发送直播媒体流,减少了发送媒体流的流量,有效地降低出口带宽,节约了资源开销。
另外,本方法对于同一直播间的所有客户端,媒体服务器只需要发送一份直播媒体流给代理服务器,即只需耗费一份广域带宽来传输所述直播媒体流,相比于媒体服务器将所述直播媒体流发送给各个客户端所占用的传输资源来说,降低了广域网链路的负载,防止发送各个客户端在接收到直播媒体流后,播放时出现视频卡顿或其他影响,所以本方法还提高了用户观看体验。
附图说明
图1为本申请提供的一种直播系统架构的示意图;
图2为本申请实施例提供的一种视频直播单边代理系统架构的示意图;
图3为本申请实施例提供的一种媒体流发送方法的流程图;
图4为本申请实施例提供的一种媒体流发送方法的信令流程图;
图5为本申请实施例提供的另一种媒体流发送方法的信令流程图;
图6为本申请实施例提供的又一种媒体流发送方法的信令流程图;
图7为本申请实施例提供的又一种媒体流发送方法的信令流程图;
图8为本申请实施例提供的又一种媒体流发送方法的信令流程图;
图9为本申请实施例提供的一种媒体流发送装置的结构示意图;
图10为本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中的技术方案作进一步详细的说明。
在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的应用场景进行说明。
本申请的技术方案可应用于内容分发网络(content delivery network,CDN)系统中,该系统中包括代理服务器(proxy server),所述代理服务器用于代理用户的视频承载协议,标识通过该代理服务器进入直播间的所有客户端的角色,根据角色为主用户的客户端的媒体请求消息向媒体服务器获取直播媒体流,并将该直播媒体流分发给通过该代理服务器进入直播间的所有客户端。
在本申请的技术方案所应用的系统中,可能包括多个代理服务器,每个代理服务器均可执行本申请实施例中代理服务器所执行的操作。即,本申请实施例中的代理服务器可以是本申请实施例所应用的系统中的任一代理服务器。在本申请实施例中,后续所说的客户端均指的是通过该代理服务器进入该直播间的客户端,所述代理服务器标识通过该代理服务器进入该直播间的所有客户端的角色(如主用户、仆用户等),相应地,后续所说的直播间中角色为主用户的客户端指的是通过该代理服务器进入该直播间的客户端中被该代理服务器标识为主用户的客户端,同理地,角色为仆用户的客户端也是通过该代理服务器进入该直播间的客户端中被该代理服务器标识为仆用户的客户端。
其中,所述代理服务器可以为位于局域网边缘的设备,该局域网中的客户端通过该代理服务器进入直播间并通过该代理服务器获取该直播间的直播媒体流。
可选的,所述代理服务器可以部署在服务器上,或者以网络功能虚拟化(NetworkFunctions Virtualization,NFV)的形式部署在通用客户端设备(Universal CustomerPremise Equipment,uCPE)上。
进一步地,如图2所示,在本实施例提供的一种视频CDN系统中,该系统包括:内容源(content source)101、企业数据中心(enterprise data center,EDC)102、RDC 103、代理服务器104、至少一个客户端(client,C),比如第一客户端C1 105、第二客户端C2 106和第三客户端C3 107。其中,EDC 102中包括多个媒体服务器(media server)和Web服务器(Web server),RDC 103中包括多个媒体服务器和Web服务器。
其中,所述CDN直播是一个分布式的内容分发平台,支持多级架构,通过将多个缓存服务器进行分层分级部署,从而为不同地域的用户提供就近服务。其中,所述EDC中的用户在直播间观看直播时,分配的媒体服务器部署在RDC中,传输的直播媒体流通过多协议标签交换技术(Multi-Protocol Label Switching,MPLS)专线达到RDC。
进一步地,上述各个设备或网元的功能概况如下表1所示。
表1
本实施例提供了一种媒体流方法,用于解决RDC与SR之间传输直播媒体流给客户端时占用大量网络资源的问题,该方法应用于代理服务器,所述代理服务器用于为进入直播间的至少两个客户端提供直播媒体流,具体地,如图3所示,方法包括:
步骤101:代理服务器接收来自第一客户端的用于请求进入直播间的第一直播间请求消息。所述第一直播间请求消息中包括第一客户端的第一标识,例如客户端C1的IP地址。
步骤102:代理服务器根据所述第一直播间请求消息确定第一客户端的角色,所述第一客户端的角色可以是主用户(master user)或仆用户(slave user)。
具体地,步骤102包括:代理服务器判断在接收到所述第一直播间请求消息时,确定在接收到第一直播间请求消息时所述直播间中是否存在角色为主用户的客户端,如果存在,则确定第一客户端的角色是仆用户;如果不存在,则确定第一客户端的角色是主用户。具体可以通过接收该第一直播间请求消息时该直播间中的角色为主用户的客户端的数量来确定,如果所述数量达到预设上限,则确定当前的第一客户端为仆用户;否则,确定第一客户端为主用户。
所述预设上限指的是通过所述代理服务器进入所述直播间的客户端中被确定为主用户的客户端的数量上限。
另外,本实施例中,将所述角色为主用户的客户端,简称为:主用户的客户端;将所述角色为仆用户的客户端,简称为仆用户的客户端。本实施例中,根据预设上限的取值不同,可以分为两类,预设上限为1和预设上限大于1。
具体地,当所述预设上限为1时,设置的通过代理服务器接入直播间的所有客户端中,主用户客户端的数量为1,即只包括一个主用户,这种场景可称为单一主用户场景。当所述预设上限大于1时,即主用户客户端的数量大于等于2,具体可以包括一个主要主用户(main-master user)和多个备份主用户(secondary-master user),在这种场景可称为多个主用户场景。
进一步地,对于多个主用户的场景,确定所述第一客户端的角色包括:如果接收到第一直播间请求消息时,直播间中角色为主用户的客户端的数量为0,则确定所述第一客户端的角色为主要主用户;如果所述数量不为0且没有达到所述预设上限,则确定所述第一客户端的角色是备份主用户。
步骤103:在确定所述第一客户端的角色是仆用户的情况下,将代理服务器本地缓存的第一直播媒体流发送给所述第一客户端。
其中所述第一直播媒体流是媒体服务器通过代理服务器发送给主用户角色的客户端的媒体流,本实施例中,在单一主用户的技术场景中,第二客户端的角色为主用户。在多个主用户的技术场景中,所述第二客户端的角色具体为主要主用户。
在步骤103之前,还包括:代理服务器接收来自第二客户端的用于请求进入直播间的第二直播间请求消息,并从媒体服务器中获取第一直播媒体流,缓存第一直播媒体流,以及将所述第一直播媒体流通过代理服务器发送给第二客户端,如果获取该第一直播媒体流时该直播间中还有其他通过该代理服务器进入该直播间的客户端,该代理服务器还将该第一直播媒体流发送给其他客户端。在具体实现时,该第二客户端可以通过发送该第二直播间请求消息请求进入直播间并通过发送媒体请求消息请求直播媒体流,则代理服务器在接收第二客户端发送的媒体请求消息后向该媒体服务器转发该媒体请求消息以获取该第一直播媒体流。该客户端也可以通过发送该第二直播间请求消息请求进入直播间并请求直播媒体流,则代理服务器在接收到该第二直播间请求消息后向该媒体服务器转发该第二直播间请求消息以获取该第一直播媒体流。
可选的,代理服务器接收所述第一直播媒体流后,将该第一直播媒体流是以图像组(group of pictures,GOP)为单位缓存在本地,GOP可以指两个I帧之间的图像序列,所述I帧(frame)又称为内部画面(intra picture),一般指利用动态图像专家组(movingpicture experts group,MPEG)技术处理后的每个GOP的第一个帧,进一步地,所述MPEG技术处理包括对视频图像进行适度地压缩,使得第I帧可以作为随机访问的参考点,并且无需参考其他画面。
本实施例中以本地缓存3个GOP为例,例如这3个GOP缓存的直播媒体流的时间段分别是:t1-t2,t2-t3,t3-t4。
当第一客户端请求获取直播媒体流时,代理服务器判断并验证该第一客户端的角色是仆用户,则将缓存在本地的第一直播媒体流直接发送给第一客户端,从而避免代理服务器再向媒体服务器请求并获取直播媒体流,即媒体服务器只需要发送一份直播媒体流给代理服务器,代理服务器就能够将该直播媒体流复制并分发给直播间的所有仆用户的客户端,使得进入同一直播间的用户只需要耗费一份广域带宽,本方法减少了现有系统中RDC的媒体服务器与SR之间发送媒体流的流量,有效地降低出口带宽,节约了资源开销。
另外,本方法还同时降低广域网链路的负载,防止发送给客户端的直播视频播放卡顿和对其他业务的影响,所以本方法还提高了用户观看体验。
在单一主用户的场景下,所述第一客户端为仆用户,所述第二客户端为主用户,步骤103之前所述方法还包括:代理服务器接收第一客户端发送的第一媒体请求消息,由于第一客户端是仆用户,所以不转发该第一媒体请求消息给媒体服务器,所述代理服务器向第一客户端发送第一媒体响应消息,所述第一媒体响应消息用于通知第一客户端允许获取媒体流,进一步地,所述允许获取的媒体流为第一直播媒体流,所述第一直播媒体流是媒体服务器发送给主用户角色的客户端的媒体流。
此外,本实施例还包括:直播间中的主用户的客户端退出直播间,选择直播间中其他客户端作为新的主用户,并向该直播间中的客户端发送新的主用户的媒体流。具体地,所述方法包括:代理服务器接收来自第二客户端的退出直播间请求消息,代理服务器在确定将第一客户端作为新的主用户时,将第一客户端的角色从所述仆用户变更为主用户;代理服务器向媒体服务器发送第二媒体请求消息,所述第二媒体请求消息中包括第一客户端的标识,代理服务器接收媒体服务器根据所述第二媒体请求消息发送的第二直播媒体流;代理服务器将向该直播间中的客户端(包括所述第一客户端)发送的第一直播媒体流切换为所述第二直播媒体流。
本实现方式,在主用户的第二客户端退出直播间时,代理服务器选择将仆用户的第一客户端作为新的主用户,并利用第一客户端的身份请求和获取直播媒体流,代理服务器再将该直播媒体流复制和分发给直播间的其他客户端,从而保证直播间中的用户观看视频的流畅性。
其中,上述直播间中第一客户端和第二客户端的角色以及主用户客户端的数量都可以通过直播间用户关系表来确定,所述直播间用户关系表中记录每一个客户端的信息,每个所述信息包括:直播间请求消息,客户端的IP地址、端口号、用户角色、用户名;媒体服务器的IP地址、端口号;直播间名称等信息。代理服务器通过统计当前直播间中所有用户的直播间请求消息来确定主用户的数量,然后再通过主用户的数量和预设上限来确定第一客户端的角色。
另外,代理服务器在向直播间中的客户端(如第一客户端)发送直播媒体流(如第一直播媒体流、第二直播媒体流)之前,还包括调整所述直播媒体流的时间戳。具体地,方法还包括:根据公式y=x+Δt,调整媒体流的时间戳。其中,y表示调整后的时间戳,x表示调整前的时间戳,Δt表示时间差。
如果该媒体流为该客户端进入直播间后接收的第一路直播媒体流,如在步骤103中,第一直播媒体流为该第一客户端进入直播间后接收的第一路直播媒体流,代理服务器根据该公式调整媒体流的时间戳使得调整后的时间戳满足以下约束条件:
1、代理服务器向该客户端发送的该直播媒体流的第一帧的时间戳为0;
2、代理服务器向该客户端发送的该直播媒体流的相邻帧的时间戳是连续的,即发送的该直播视频流的相邻帧的时间间隔相同,该时间间隔为该直播视频流的帧率f的倒数。
由于该直播媒体流为该客户端进入直播间后接收的第一路直播媒体流,因此,Δt为代理服务器向该客户端发送的该直播媒体流的第一帧的调整前的时间戳的相反数。
如果该客户端已经接收过媒体流,即代理服务器向该客户端发送的媒体流由前一主用户的媒体流切换为当前主用户的媒体流,如,代理服务器将向第一客户端发送的第一直播媒体流切换为所述第二直播媒体流,代理服务器根据该公式调整当前主用户的媒体流的时间戳使得调整后的时间戳满足以下约束条件:
1、代理服务器向该客户端发送的前一主用户的媒体流的第一帧的时间戳与向该客户端发送的当前主用户的媒体流的最后一帧的时间戳连续;
2、代理服务器向该客户端发送的当前主用户的媒体流的相邻帧的时间戳是连续的。
例如,以一个主用户和多个仆用户角色的场景为例,假定代理服务器缓存的第一直播媒体流的GOP的时间长度为5秒(s),且本地缓存3个GOP,所述3个GOP的内容是实时更新的。第二客户端C2是第一个进入直播间的客户端,则在第0秒客户端C2的角色为主用户,并且在直播间中持续观看第一直播媒体流到第60s时长,此时,代理服务器在本地缓存的视频媒体流的3个GOP分别是:第45s-50s、第50s-55s、第55s-60s的媒体内容,这3个GOP为媒体服务器发送给客户端C2的媒体流片段,对应发送的每一帧的时间戳为客户端C2的相对时间。
第一客户端C1在第60秒时进入直播间,角色为仆用户,代理服务器需要将发送给客户端C2的且本地缓存的最新的第一直播媒体流发送给客户端C1,此时距离60s最近的直播媒体流是第3个GOP片段,缓存第55s-60s的媒体内容,其中55s为所述媒体服务器发送的帧的时间戳,所以,需要调整的时间差为Δt=y-x=0-55=-55s,即代理服务器在将第一直播媒体流发送给客户端C1时需要将时间戳减少55s,以便满足上述的约束条件,使得每个进入直播间的用户都能不用等待,即第0s时刻观看直播视频,达到直播间的用户都能“同时”观看视频的有益效果。
另外,当第二客户端C2退出直播间时,还需要调整视频媒体流的时间戳。具体地,如果在视频播放的第120s时客户端C2退出直播间,则代理服务器需要重新选择一个客户端作为新的主用户,假设本实施例中选择第一客户端C1作为主用户,然后代理服务器将原来发送给客户端C2的第一直播媒体流更换到发送给客户端C1的直播媒体流。对应的时间戳条件过程如下:
假设在第120s时,代理服务器本地缓存的3个GOP的媒体内容分别是:第105s-110s、第110s-115s、第115s-120s,经过10s后代理服务器缓存最新的GOP 1为第115s-120s的视频内容,该GOP 1中帧上的时间戳为客户端C2的相对时间,当客户端C2退出直播间后,代理服务器本地缓存了GOP 2和GOP 3分别是第0-5s、第5s-10s的媒体内容,且这两个GOP中帧上的时间戳为客户端C1的相对时间,所以计算调整的时间差为Δt=120-55-0=65s,即代理服务器发送给新的主用户客户端C1的直播媒体流在帧的时间戳上需要增加65s。
综合上述,可分为两种情况来计算调整的时间差,具体地,
情况1:客户端未接收过媒体流,即当前媒体流是该客户端进入该直播间之后接收的第一路媒体流,则时间差为Δt=0-t2=-t2,其中t2表示代理服务器接收来自媒体服务器的,且需要转发给客户端的媒体流的第一帧的时间戳。
情况2:客户端已经接收过媒体流,即代理服务器向该客户端发送的媒体流由前一主用户的媒体流切换为当前主用户的媒体流,则时间差为Δt=(t1+m)-t2,其中t2表示代理服务器在媒体流切换后向该客户端发送的媒体流(即当前主用户的媒体流)的第一帧修改前的时间戳,t1表示代理服务器在媒体流切换前向该客户端发送的媒体流(即前一主用户的媒体流)的最后一帧修改后的时间戳,对应的下一个视频帧的时间戳为t1+m,m=1/f,例如f=20fps,发送所述视频帧的时间间隔为m=1s/20=0.05s即50ms。
根据如上方法,代理服务器将向第一客户端发送的第一直播媒体流切换为第二直播媒体流之前,还包括:代理服务器调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:代理服务器向第一客户端发送的第二直播媒体流的第一帧的时间戳与向第一客户端发送的第一直播媒体流的最后一帧的时间戳连续。
进一步地,代理服务器向第一客户端发送的第一直播媒体流的最后一帧与向第一客户端发送的第二直播媒体流的第一帧为相邻帧。代理服务器将向第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前还包括:代理服务器根据第一直播媒体流和第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于第一直播媒体流和第二直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向第一客户端发送的第一直播媒体流的最后一帧与向第一客户端发送的第二直播媒体流的第一帧。代理服务器在确定所述第一切换帧和所述第二切换帧之后将来自第二客户端的退出直播间请求消息转发给所述媒体服务器。
本实施例中,代理服务器将主用户的直播媒体流发送给通过所述代理服务器进入所述直播间的每个客户端。每次切换主用户时,代理服务器将向每个客户端发送的前一主用户的直播媒体流切换为当前主用户的直播媒体流,即,针对每个客户端,停止向其发送前一主用户的媒体流,并开始向其发送当前主用户的直播媒体流。例如当客户端C1退出直播间时,代理服务器停止向客户端C1发送第一直播媒体流,向直播间中正在观看直播流的其他客户端发送新选择的客户端C2的第二直播媒体流,此时,客户端C2的角色变更为主用户。并且在发送新的媒体流时,代理服务器向任一客户端发送的当前主用户的直播媒体流的第一帧与向该客户端发送的前一主用户的直播媒体流的最后一帧相邻。即向客户端C2发送的第二直播媒体流的第一帧与原来发送的第一直播媒体流的最后一帧相邻。
在多个主用户的场景下,所述第二客户端为主要主用户,所述第一客户端为仆用户,所述客户端退出直播间的过程包括:代理服务器接收来自第二客户端的退出直播间请求消息,代理服务器在确定将第一客户端作为新的备份主用户时,将第一客户端的角色从所述仆用户变更为备份主用户;代理服务器向媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中包括所述第一客户端的标识,以及接收媒体服务器根据所述第三媒体请求消息发送的第三直播媒体流,并且以GOP为单位在代理服务器本地缓存所述第三直播媒体流。
本实施例中,对于备份主用户的客户端,代理服务器在获取直播媒体流后不转发给客户端,而是在本地缓存该直播媒体流片段,以便当该备份主用户的角色切换为主用户时,将该缓存的直播媒体流片段下发给直播间中的用户。
可选的,在所述多个主用户的场景下,如果所述第一客户端是备份主用户,且代理服务器通过第一客户端发送的第四媒体请求消息,从媒体服务器中获取第四直播媒体流,则当主要主用户的第二客户端退出直播间时,所述方法还包括:代理服务器在确定将第一客户端作为新的主要主用户时,将第一客户端的角色从所述备份主用户变更为主要主用户;代理服务器将向该直播间中的客户端(包括该第一客户端)发送的第一直播媒体流切换为所述第四直播媒体流。
其中,代理服务器调整第四直播媒体流的时间戳,使得调整后的时间戳满足:向第一客户端发送的所述第四直播媒体流的第一帧的时间戳与向第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
进一步地,代理服务器向第一客户端发送的所述第一直播媒体流的最后一帧与向第一客户端发送的所述第四直播媒体流的第一帧为相邻帧;代理服务器将向第一客户端发送的第一直播媒体流切换为所述第四直播媒体流之前还包括:代理服务器根据缓存的所述第一直播媒体流和所述第四直播媒体流识别分别属于第一直播媒体流和第四直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧。
代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于第一直播媒体流和第四直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向第一客户端发送的所述第一直播媒体流的最后一帧与向第一客户端发送的所述第四直播媒体流的第一帧。更具体地时间戳调整过程请详见上述实施例的描述,此处不再赘述。
本实施例中,对于多个主用户的技术场景,代理服务器从媒体服务器获取角色是主要主用户的客户端请求的直播媒体流,并将该直播媒体流下发给直播间中的所有用户,媒体服务器不需要为每个通过该代理服务器加入直播间的用户向该代理服务器发送直播媒体流,从而减少媒体服务器和代理服务器之间WAN网络的传输资源,节约了传输媒体流的开销。
另外,代理服务器还获取角色是备份主用户的客户端的媒体流,并缓存在本地,以准备在主要主用户的客户端退出直播间时切换使用。并且,在切换直播媒体流时对媒体流进行对齐以及调整时间戳,从而保证仍在直播间观看媒体内容的客户端无感知,保证了用户体验。
需要说明的是,本申请实施例所述的第一、第二、第三直播媒体流,或者更多的直播媒体流,都是来源于内容源发送的同一个直播媒体流,用于区分代理服务器根据不同客户端的媒体请求消息获取的直播媒体流。因为各个用户进入直播间的时刻不同,代理服务器向每个客户端发送的直播媒体流的时间戳会不同,因此,代理服务器在向客户端发送直播媒体流时,可以调整时间戳,使进入直播间的每个客户端都能够即时地观看到当前直播的媒体内容。
下面对本申请实施例提供的方法进行详细地说明。
实施例一
本实施例提供了一种视频直播媒体流发送的方法,该方法可应用于图2所示视频直播系统中,该方法包括了媒体服务器向进入直播间的第一客户端和第二客户端提供直播媒体流,且第一客户端和第二客户端都是通过同一代理服务器接入到直播间,进一步地,如图4所示,该方法共包括26个步骤(step,S),从S1至S26。
其中,从S1至S12为第一客户端(以下简称“客户端C1”)进入直播间并获取直播媒体流的过程;从S13至S26为第二客户端(以下简称“客户端C2”)进入直播间并获取直播媒体流的过程。
具体地,对于客户端C1进入直播间并获取直播媒体流的过程包括:
S1:内容源向EDC中的媒体服务器发送第一直播媒体流。
S2:EDC中的媒体服务器接收第一直播媒体流,并将该第一媒体流发送给下一级RDC中的媒体服务器。其中,在发送第一直播媒体流之前还包括:EDC中Web服务器对下一级RDC中的媒体服务器进行鉴权的步骤,当且仅当鉴权结果合格后,RDC中的媒体服务器将第一直播媒体流发送给RDC中的媒体服务器。
可选的,S2还包括:代理服务器(proxy server)根据第一直播媒体流的业务特征识别被代理的客户端对应的传输协议;其中,所述业务特征包括Web服务器的IP地址和端口号,例如对于超文本传输协议(Hyper Text Transfer Protocol,HTTP)协议,可配置的业务特征包括:Web服务器的IP地址和端口号。进一步地,还可以确定HTTP协议所对应的传输协议为传输控制协议(Transmission Control Protocol,TCP),以便利用该TCP协议传输媒体流。
S3:客户端C1向RDC中的Web服务器发送可以访问的媒体服务器的请求消息。进一步地,所述请求消息中包括:客户端C1的用户名、IP地址、直播间名称、客户端C1通过鉴权后得到的密钥Token等信息,其中IP地址用于确定客户端C1的位置。具体地,客户端C1将所述请求消息发送给代理服务器,然后代理服务器再将该请求消息转发至RDC中的Web服务器。
S4:RDC中的Web服务器接收所述请求消息,并向客户端C1发送可以访问的媒体服务器的响应消息,所述响应消息用于告知客户端C1其可以访问的媒体服务器。具体地,Web服务器根据所述请求消息确定能够为客户端C1提供媒体流服务的目标媒体服务器,所述目标媒体服务器为RDC中多个媒体服务器中的一个,然后将所述响应消息发送给客户端C1,所述响应消息中包括目标媒体服务器的相关信息,例如目标媒体服务器的统一资源定位符(Uniform Resource Locator,URL)信息、IP地址和端口号等。
可选的,Web服务器根据客户端C1发送的访问媒体服务器的请求消息中,携带的IP地址确定客户端C1的位置,并根据该位置信息选择与客户端C1距离较近的媒体服务器作为所述目标媒体服务器。
可选的,RDC中的Web服务器将所述响应消息通过代理服务器发送给客户端C1。其中,所述响应消息中携带所述目标媒体服务器的相关信息,例如目标媒体服务器的URL信息、IP地址和端口号等。
S5:客户端C1进入直播间,向代理服务器发送用于请求进入直播间的第一直播间请求消息,所述第一直播间请求消息表示客户端C1请求进入直播间。其中,第一直播间请求消息中包括客户端C1的用户名、IP地址、端口号、直播间名称、通过鉴权后得到的Token等。
S6:代理服务器接收客户端C1发送的第一直播间请求消息,并设置客户端C1的角色。一种可能的实现方式是,代理服务器根据当前接收到第一直播间请求消息后,主用户角色的客户端的总数来确定,如果总数小于等于第一阈值,则该客户端的角色为主用户;如果大于所述第一阈值,则为仆用户。本实施例中,假设第一阈值为1,客户端C1是第一个进入直播间的用户,则在当前时刻主用户角色的客户端数量等于第一阈值,确定客户端C1的角色是主用户。
或者,另一种可能的实现方式是,代理服务器在接收到所述第一直播间请求消息后,判断直播间中是否存在主用户的客户端,如果存在,则确定客户端C1的角色是仆用户;否则,客户端C1为主用户。
可选的,还包括:代理服务器在客户端C1进入直播间后,构建“直播间用户关系表”,所述“直播间用户关系表”中包括一条关于客户端C1的记录,具体地,记录的内容包括:客户端C1的IP地址、端口号、用户角色、用户名、RDC中选择的目标媒体服务器的IP地址和端口号、直播间名称等信息。其中所述客户端C1的IP地址可以是数据库中缓存的主键(primary key)。可理解地,当代理服务器接收到客户端发送的第一个进入直播间请求消息时,就根据所述直播间请求消息构建所述直播间用户关系表,以便记录直播间中各个客户端的状态。
本实施例中,主用户角色的客户端的数量为1,即通过该代理服务器进入直播间的客户端中只设置一个主用户,其余的客户端都是仆用户,这种技术场景可称为单一主用户场景。
S7:代理服务器转发所述第一直播间请求消息给RDC中的媒体服务器。
其中,上述步骤S6和S7之间顺序可以互换,本实施例对此不严格限制。
S8:RDC中的媒体服务器接收所述第一直播间请求消息,并发送第一直播间响应消息给客户端C1。所述第一直播间响应消息用于通知客户端C1进入直播间成功。具体地,S8中媒体服务器将所述第一直播间响应消息通过代理服务器转发给客户端C1。
S9:客户端C1向代理服务器发送第一媒体请求消息,所述第一媒体请求消息用于向媒体服务器请求获取第一直播媒体流。可选的,所述第一媒体请求消息中携带的客户端C1的第一标识,所述第一标识用于唯一标识所述客户端C1,本实施例中,所述第一标识包括客户端C1的IP地址和用户名等。
S10:代理服务器接收并转发第一媒体请求消息给RDC中的媒体服务器,所述媒体服务器为目标媒体服务器。因为所述第一媒体请求消息是来自主用户的客户端C1请求的,所以代理服务器将其转发给媒体服务器。
S11:所述媒体服务器接收所述第一媒体请求消息后,向客户端C1发送第一媒体响应消息。所述第一媒体响应消息用于通知客户端C1允许获得第一直播媒体流。在一种具体的实现中,代理服务器接收并转发第一媒体响应消息给客户端C1。
S12:所述媒体服务器向客户端C1发送第一直播媒体流。具体地,代理服务器实时地获取来自上一级EDC中的媒体服务器发送的第一直播媒体流,然后将该第一直播媒体流发送给代理服务器。所述代理服务器接收第一直播媒体流后,在本地以GOP为单位缓存该第一直播媒体流片段,比如缓存最新的3个GOP的媒体流片段,分别是:t1-t2,t2-t3,t3-t4,且每段缓存媒体流的时间间隔都相同,例如缓存每个GOP的时间长度为5秒,代理服务器将缓存的第一直播媒体流片段发送给客户端C1。
可选的,S12在向客户端C1发送第一直播媒体流的过程中,还需要调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:向客户端C1发送的第一直播媒体流的第一帧的时间戳为0,并且,向客户端C1发送的第一直播媒体流的相邻帧的时间戳是连续的。所述连续是指客户端C1接收的第一直播媒体流的相邻视频帧的时间间隔相同,所述时间间隔为帧率参数f的倒数。
下面介绍客户端C2进入直播间,并获取直播媒体流的方法。具体包括以下步骤:
S13:客户端C2向RDC中的Web服务器发送可以访问的媒体服务器请求消息,所述请求消息中包括客户端C2的用户名、IP地址、直播间名称、客户端C2通过鉴权后得到的密钥Token等信息。具体地,客户端C2通过代理服务器转发该请求消息给RDC中的Web服务器,且在代理服务器转发的过程中,代理服务器获取所述请求消息中携带的信息。
S14:RDC中的Web服务器接收所述请求消息,并向客户端C2发送响应消息,所述响应消息用于告知客户端C2其可以访问的媒体服务器。与前述步骤S4相同,Web服务器在多个媒体服务器中选择一个,用于为客户端C2提供媒体流服务,并将该选择的媒体服务器的相关信息,例如媒体服务器的URL信息、IP地址和端口号等通过所述响应消息发送给代理服务器。
S15:客户端C2向代理服务器发送用于请求进入直播间的第二直播间请求消息,所述第二直播间请求消息表示客户端C2请求进入直播间。其中,第二直播间请求消息中包括客户端C2的用户名、IP地址、端口号、直播间名称、通过鉴权后得到的Token等。
S16:代理服务器接收客户端C2发送的第二直播间请求消息,并设置客户端C2的角色。一种具体的实现方式是,代理服务器接收到第二直播间请求消息后,判断当前直播间中是否存在主用户的客户端,如果存在,则确定所述客户端C2的角色为仆用户。本实施例中,当前直播间中已经存在客户端C1为主用户,所以确定客户端C2为仆用户。
另外,S16还包括,代理服务器在“直播间用户关系表”中添加一条关于客户端C2的记录,与前述添加客户端C1的记录内容相似,对于客户端C2,记录的内容包括:客户端C2的IP地址、端口号、用户角色、用户名、目标媒体服务器的IP地址和端口号、直播间名称等信息。
可选的,该S16中统计当前直播间中客户端是主用户的数量,可以根据“直播间用户关系表”中记录的当前时刻获取的直播间请求消息的个数来确定,本实施例中代理服务器接收两个直播间请求消息,分别是来自客户端C1的第一直播间请求消息和来自客户端C2的第二直播间请求消息,数量大于1,所以确定所述客户端C2是仆用户。另外,还可以利用其他方式来确定主用户客户端的数量,本实施例对此不予限定。
S17:代理服务器接收并转发第二直播间请求消息给RDC中的媒体服务器。
S18:RDC中的媒体服务器接收所述第二直播间请求消息,并向客户端C2发送第二直播间响应消息,所述第二直播间响应消息用于通知客户端C2进入直播间成功。具体地,媒体服务器将所述第二直播间响应消息通过代理服务器转发给客户端C2。
S19:客户端C2向代理服务器发送第二媒体请求消息,所述第二媒体请求消息用于向媒体服务器请求获取直播媒体流。所述第二媒体请求消息中携带的客户端C2的第二标识,所述第二标识包括客户端C2的IP地址和用户名等。
其中,代理服务器不转发所述第二媒体请求消息给媒体服务器,因为所述第二媒体请求消息是仆用户角色的客户端C2发送的。
S20:代理服务器接收所述第二媒体请求消息,并向客户端C2发送第二媒体响应消息,所述第二媒体响应消息用于通知客户端C2允许获得第一直播媒体流。
S21:代理服务器向客户端C2发送本地缓存的第一直播媒体流,所述第一直播媒体流是以GOP形式缓存并下发的。进一步地,以GOP形式缓存的媒体流片段参见上述S12的描述,此处不再赘述。
可选的,在代理服务器发送第一直播媒体流给客户端C2时,还包括调整媒体流的时间戳,使得调整后的时间戳满足两个约束条件:1、客户端C2接收到第一直播媒体流的第一帧的时间戳为0;2、向客户端C2发送的第一媒体流视频的相邻帧的时间戳连续,即发送的时间间隔均是帧率参数f的倒数,具体的调整过程可参见上述实施例描述。
S22:RDC中的媒体服务器实时地向客户端C1发送第一直播媒体流;具体地,所述第一直播媒体流可通过代理服务器转发给客户端C1。所述第一直播媒体流是由直播间中的主用户角色的客户端C1发起并获得的。
S23:代理服务器接收到来自媒体服务器的第一直播媒体流之后,以GOP为单位将直播媒体流片段缓存在本地。本实施例中代理服务器在本地缓存3个GOP,还可以缓存更多或更少个数的GOP。
S24:代理服务器根据“直播间用户关系表”中记录的内容,确定直播间中主用户和仆用户的客户端数量,将缓存的第一直播媒体流片段进行复制,以便准备发送给直播间中的客户端。本实施例中当前直播间中只有两个客户端,客户端C1和客户端C2,其中客户端C1是主用户,客户端C2是仆用户。
S25:代理服务器向客户端C1发送第一直播媒体流。另外,还包括:代理服务器根据客户端C1接收到媒体流的视频帧的时间来调整第一直播媒体流中的时间戳。
S26:代理服务器向客户端C2发送第一直播媒体流。另外,还包括:代理服务器根据客户端C2接收到媒体流的视频帧的时间来调整第一直播媒体流中的时间戳。
并且,通过调整进入直播间用户观看视频帧的时间戳,使得直播间中的客户端C1和客户端C2能够“同步”地观看第一直播的媒体内容,提高用户体验。
本实施例的方法,利用代理服务器在获取主用户客户端请求的直播媒体流时,缓存部分媒体流片段在本地代理服务器,当由仆用户角色的客户端进入直播间并请求直播媒体流时,将缓存在本地的媒体流直接发送给该仆用户的客户端,从而避免了媒体服务器再向代理服务器发送直播媒体流,即媒体服务器只需要发送一份直播媒体流给代理服务器,代理服务器就能够将该直播媒体流复制并分发给直播间的所有仆用户的客户端,减少了发送媒体流的流量,有效地降低出口带宽,节约了资源开销。
另外,本方法对于同一直播间的所有客户端,媒体服务器只需要发送一份直播媒体流给代理服务器,即只需耗费一份广域带宽来传输所述直播媒体流,相比于媒体服务器将所述直播媒体流发送给各个客户端所占用的传输资源来说,降低了广域网链路的负载,防止发送各个客户端在接收到直播媒体流后,播放时出现视频卡顿或其他影响,所以本方法还提高了用户观看体验。
另外,本实施例的方法还可以将客户端C1的第一直播间请求消息与第一媒体请求消息合并成一个消息,且该合并后的消息具有所述第一直播间请求消息和第一媒体请求消息两部分功能,则在S6中判断客户端C1角色时,可以根据所述第一媒体请求消息的数量来统计当前进入直播间的主用户角色的客户端总数。同理地,客户端C2的第二直播间请求消息与第二媒体请求消息也可合并成一个消息。
此外,本实施例提供的方法还包括:当客户端C2的角色发生变化时,比如将仆用户角色变更为主用户,媒体服务器向客户端C2发送直播媒体流的过程。进一步地,如图5所示,从S27至S39是具体的方法流程,包括如下:
S27:客户端C1向代理服务器发送退出直播间请求消息,所述退出直播间请求消息用于通知媒体服务器客户端C1要退出直播间。所述退出直播间请求消息中包括客户端C1的用户名、IP地址、端口号、用户角色、直播间名称等信息。
S28:代理服务器接收来自客户端C1的退出直播间请求消息后,暂不转发该退出直播间请求消息给媒体服务器,因为此时以客户端C1为主用户角色请求的第一直播媒体流正在被客户端C2观看。另外,标记客户端C1的角色为退出(Exiting)用户,并记录在“直播间用户关系表”中。
S29:代理服务器从直播间的客户端中选择一个作为新的主用户,本实施例中,直播间中只有客户端C1和C2,且当客户端C1请求退出直播间时,选择剩余唯一的客户端C2作为新的主用户角色的客户端,并且将客户端C2的角色从仆用户变更为主用户,例如标记为slave-to-master用户。
S30:代理服务器向RDC中的媒体服务器发送用于获取媒体流的第三媒体请求消息,所述第三媒体请求消息中包括客户端C2的所述第二标识。所述第二标识用于唯一标识客户端C2。换句话说,所述第三媒体请求消息中的第二标识表示以客户端C2的角色向媒体服务器请求直播媒体流。
S31:RDC中的媒体服务器接收来所述第三媒体请求消息,并向客户端C2发送第三媒体响应消息,所述第三媒体响应消息用于通知客户端C2允许获得直播媒体流。
另外,媒体服务器接收到第三媒体请求消息中携带的第二标识,确定是客户端C2向媒体服务器发起获取直播媒体流的请求,并且还判断出当前请求消息中携带的第二标识与所述第一媒体请求消息中携带的第一标识不同,所述第一标识用于指示客户端C1,当前的第二标识用于指示客户端C2,表明发起直播媒体流请求的客户端从C1变更为C2。
S32:代理服务器不转发所述第三媒体响应消息,因为发起第三媒体请求消息的客户端的角色是slave-to-master用户,此时,将客户端C2的角色变更为主用户,并记载在“直播间用户关系表”的客户端C2对应的记录中。
S33:媒体服务器通过代理服务器向客户端C2发送第二直播媒体流。其中,所述第二直播媒体流与所述第一直播媒体流的内容相同,都是来自于内容源。
S34:代理服务器接收第二直播媒体流,并将该第二直播媒体流以GOP为单位缓存在本地。
另外,还包括:代理服务器利用对齐算法对齐准备发送给客户端C1和C2的直播媒体流。具体地,过程包括:代理服务器每接收到第一直播媒体流的一个I帧,将该I帧与本地缓存的第二直播媒体流的I帧进行比较,并且,每接收到第二直播媒体流的一个I帧,将该I帧与本地缓存的第一直播媒体流的I帧进行比较,如果通过上述比较过程找到分别属于第一直播媒体流和第二直播媒体流且媒体内容相同的I帧(后续分别称为I帧a和I帧b),则确定这两个直播媒体流对齐。可以理解的是,I帧a和I帧b为相同视频帧,进而根据I帧a和I帧b确定切换点,即确定向各客户端发送的第一直播媒体流的最后一帧(后续称为切换帧x)和向各客户端发送的第二直播媒体流的第一帧(后续称为切换帧y),切换帧x与切换帧y为相邻帧。具体可以将第一直播媒体流中I帧a后的第n帧确定为切换帧x,并且将第二直播媒体流中I帧b后的第n+1帧确定为切换帧y,其中n为大于或等于0的整数。由于I帧a和I帧b为相同视频帧,I帧a后的第n帧和I帧b后的第n+1帧自然为相邻帧。
S35:代理服务器根据客户端C2当前观看到的视频帧的相对位置,调整第二直播媒体流的时间戳,使得发送给客户端C2的视频帧满足:客户端C2接收的第二直播媒体流的第一帧的y和第一直播媒体流的最后一帧x的时间戳连续,对应的时间间隔为帧率参数f的倒数。具体的调整过程,可参见上述实施例的描述,此处不再赘述。
本实施例中,当主用户角色的客户端C1退出直播间时,利用新的主用户的客户端C2请求并获取第二直播媒体流,并调整第二直播媒体流与原来发送的第一直播媒体流之间的时间差,使得代理服务器在向客户端C2发送第二直播媒体流时无缝对接原来正在播放的第一直播媒体流的媒体内容,避免了客户端C2观看的视频内容出现重复播放或少播放的画面,影响客户端C2的观看体验。
S36:代理服务器转发所述退出直播间请求消息给RDC中的媒体服务器。
S37:媒体服务器接收到所述退出直播间请求消息后,向客户端C1发送退出直播间响应消息,所述退出直播间响应消息用于通知客户端C1退出成功。具体地,所述退出直播间响应消息通过代理服务器转发给客户端C1。
S38:代理服务器从“直播间用户关系表”中删除客户端C1对应的记录。其中,上述S37和S38之间无严格时序关系,可以互换。
S39:代理服务器转发所述退出直播间响应消息给客户端C1。
另外,还包括:代理服务器将所述第二直播媒体流发送给直播间中,正在观看视频的客户端C2。
本实施例提供的方法,当主用户的客户端退出直播间时,代理服务器从直播间中选择新的客户端作为新的主用户,并以该新的主用户角色继续请求直播媒体流,当以新的主用户获取直播媒体流,并调整完视频帧的时间戳后,将该新获取的直播媒体流发送给直播间中继续观看视频的客户端,避免了主用户的客户端离开时对其他客户端的影响,本方法可避免切换直播媒体流时导致的视频内容重复播放或者少播放的缺陷,使得直播间中的其他用户对媒体流的切换无感知,提高了用户体验。
实施例二
本实施例提供了另一种直播媒体流发送方法,该方法应用于多个主用户角色的技术场景,其中所述多个主用户是指直播间中设置的主用户角色的客户端的数量(即预设上限)大于等于2,进一步地,包括一个主要主用户,可标识为main-master用户,以及多个备份主用户,可标识为secondary-master用户,另外还包括至少一个角色是仆用户的客户端。该方法中的请求进入直播间,和获取直播媒体流的过程与前述实施例一相同,但不同之处在于,对于客户端角色的标识,变更以及直播媒体流的分发。
本实施例在实施例一的基础上,还包括第三客户端C3,且设置直播间中主用户角色的数量为2,即预设上限为2,在这种情况下,每个客户端进入直播间并请求获取直播媒体流的过程:如图6所示,包括如下:
S1至S12,为客户端C1进入直播间,并请求获取直播媒体流的过程。该过程与实施例一中的S1至S12相同,区别仅在于S6中建立“直播间用户关系表”时,将客户端C1的角色标记设置为主要主用户(main-master用户)。其余的步骤可参见上述实施例一的描述,此处不再赘述。
其中,在代理服务器获取来自媒体服务器发送的第一直播媒体流时,以GOP为单位缓存若干个第一直播媒体流片段在本地,并实时地更新并发送给客户端C1。
S13至S29,为客户端C2进入直播间,并请求获取直播媒体流的过程。具体地包括:
S13和S14:客户端C2进入直播间,发起获取可以访问的媒体服务器的请求消息,并获得响应消息的过程,与实施例一中的S13和S14相同,不再赘述。
S15:客户端C2向代理服务器发送第二直播间请求消息。
S16:代理服务器接收客户端C2发送的第二直播间请求消息后,统计当前直播间的直播间请求消息的数量,并根据该统计的数量确定客户端C2的角色。本实施例中,代理服务器获取两个直播间请求消息,分别来自客户端C1和C2;且所述数量等于预设上限2,则确定客户端C2的角色是备份主用户(secondary-master用户)。或者,代理服务器获取在接收到所述第二直播间请求消息时,直播间中角色为主用户的客户端的数量达到预设上限,所以确定客户端C2的角色是仆用户。
可选的,如果直播间中角色为主用户的客户端的数量不为0,且没有达到所述预设上限,则确定所述客户端C2的角色是备份主用户。如果直播间中角色为主用户的客户端的数量为0,则确定客户端C2的角色是主要主用户。
另外,还包括在所述“直播间用户关系表”中添加一条关于客户端C2的记录。
S17:代理服务器将第二直播间请求消息转发给媒体服务器。
S18:RDC中的媒体服务器接收所述第二直播间请求消息,然后向客户端C2发送第二直播间响应消息,所述第二直播间响应消息用于通知客户端C2进入直播间成功。
S19:客户端C2向代理服务器发送第二媒体请求消息。
S20:代理服务器接收第二媒体请求消息后,将该第二媒体请求消息转发给媒体服务器。所述第二媒体请求消息中包括客户端C2的第二标识,以使客户端C2利用自己是备份主用户的角色向媒体服务器请求直播媒体流。
S21:媒体服务器向客户端C2发送第二媒体响应消息,通知客户端C2允许获得第一直播媒体流。
S22:代理服务器向客户端C2发送缓存在本地的第一直播媒体流,其中所述第一直播媒体流是以GOP为单位缓存的媒体流片段,例如3个GOP片段。可选的,还包括代理服务器根据客户端C2获得的视频帧的播放时间来调整第一媒体流的时间戳,使得调整后的时间戳满足:向所述客户端C2发送的所述第一直播媒体流的第一帧的时间戳为0,并且,向客户端C2发送的第一直播媒体流的相邻帧的时间戳连续。
S23:媒体服务器实时地向客户端C2发送第二直播媒体流。
S24:代理服务器接收并以GOP为单位缓存第二直播媒体流的片段。由于第二直播媒体流是以备份主用的角色获取的,则仅缓存在代理服务器本地,不在“直播间用户关系表”中复制和分发给其他客户端。
另外,还包括对齐第一直播媒体流和第二直播媒体流。具体地对齐两个直播媒体流过程与前述实施例一中的S34相同,此处不再赘述。
S25:媒体服务器实时地向客户端C1发送第一直播媒体流。
S26:代理服务器接收到第一直播媒体流之后,以GOP为单位缓存若干个第一直播媒体流片段。
S27:代理服务器根据“直播间用户关系表”将第一直播媒体流复制一份,因为当前直播间中除了主用户角色的客户端C1,只有一个客户端C2。应理解,若还有其他更多的客户端,则复制的份数与当前直播间中用户角色不是Exiting用户的客户端数量相同。
本实施例中,代理服务器将主要主用户和备份主用户角色的客户端的直播媒体流缓存在本地,对于主要主用户角色获取的直播媒体流,可以直接下发给直播间的所有客户端;对于备份主用户角色的客户端,缓存对应的直播媒体流在本地,为以后切换和下发做准备,具体的触发条件是,当该备份主用户的客户端的角色变更为主要主用户时,将该变更后的主要主用户的(在代理服务器本地缓存的)媒体流下发给直播间中的其他客户端,代理服务器能够快速地下发新的直播媒体流,从而有助于提高媒体流下发速度和效率,减少等待时间。
S28:代理服务器向客户端C1发送所述第一直播媒体流。
S29:代理服务器向客户端C2发送所述第一直播媒体流。
可选的,在步骤S28和S29中,还包括:代理服务器根据客户端C1和C2的播放时间来调整第一直播媒体流的时间戳,以保证直播间的客户端观看到的直播内容同步。
S30至S44为客户端C3进入直播间,请求并获取直播媒体流的过程。如图7所述,具体包括:
S30和S31:客户端C3进入直播间发起获取可以访问的媒体服务器的请求消息,并获得响应消息的过程,该过程与实施例一中的S13和S14相同,不再赘述。
S32:客户端C3向代理服务器发送用于请求进入直播间的第三直播间请求消息,包括客户端C3的第三标识。
S33:代理服务器接收第三直播间请求消息,确定客户端C3的用户角色。具体地,在获取第三直播间请求消息时,当前直播间中主用户角色的数量已经达到预设上限(所述预设上限为2),则确定客户端C3的角色是仆用户。
另外,还包括:在所述“直播间用户关系表”中添加一条关于客户端C3的记录,所述记录的内容包括:客户端C3的名称、IP地址、端口号、用户角色、直播间名称;媒体服务器的名称、IP地址、端口号等信息。
S34:代理服务器转发第三直播间请求消息给媒体服务器。
S35:媒体服务器向客户端C3发送第三直播间响应消息,所述第三直播间响应消息用于通知客户端C3进入直播间成功。
S36:客户端C3向代理服务器发送第三媒体请求消息,所述第三媒体请求消息用于向媒体服务器请求获取直播媒体流,并且所述第三媒体请求消息中包括客户端C3的标识。
S37:接收所述代理服务器根据所述第三媒体请求消息反馈的第三媒体响应消息。此时,客户端C3的角色是仆用户。
S38:代理服务器将本地缓存的第一媒体流发送给客户端C3。
S39:媒体服务器实时地向客户端C1发送第一直播媒体流。
S40:代理服务器接收所述第一直播媒体流之后,以GOP为单位缓存该第一直播媒体流的片段。
S41:代理服务器根据“直播间用户关系表”复制第一直播媒体流,具体地复制两份第一直播媒体流给角色是备份主用户的客户端C2和仆用户的客户端C3。
S42:代理服务器向客户端C1发送第一直播媒体流。另外,还包括:代理服务器调整第一直播媒体流的时间戳。
S43:代理服务器向客户端C2发送第一直播媒体流。另外,还包括:代理服务器调整第一直播媒体流的时间戳。
S44:代理服务器向客户端C3发送第一直播媒体流。另外,还包括:代理服务器调整第一直播媒体流的时间戳。
本实施例的方法,代理服务器在获取不同客户端的媒体请求时,通过对每个客户端的用户角色做标识,使得代理服务器仅从媒体服务器中获取角色是主用户的直播媒体流,所述主用户包括主要主用户和备份主用户,对于仆用户而言,不获取直播媒体流,而是将代理服务器本地缓存的第一直播媒体流片段发送给相应的客户端,从而避免媒体服务器向仆用户的客户端发送直播媒体流,并且还减少直播间中大量的仆用户角色请求发送的直播媒体流数量,本方法节约了媒体服务器与代理服务器之间传输直播媒体流的资源开销。
另外,本实施例提供的方法还包括:客户端C1退出直播间后,媒体服务器向直播间的客户端C2和C3继续发送直播媒体流的过程,具体地,参见图8所示,包括从S45至S59,该方法流程类似于实施例一中的客户端C1退出流程,但不同之处在于,对直播间的客户端C2和C3配置身份角色和发送直播媒体流不同。具体地,如图8所示,方法包括:
S45:客户端C1向代理服务器发送退出直播间请求消息。
S46:代理服务器接收来自客户端C1的退出直播间请求消息,在“直播间用户关系表”中将客户端C1的用户角色标记为退出(Exiting)用户,以及将客户端C2的用户角色变更为main master用户。
S47:代理服务器将所述退出直播间请求消息转发给媒体服务器。
S48:代理服务器并从直播间用户关系表中标识的所有slave用户中选择一个,并将其变更为slave to secondary master用户。本实施例中,选择和变更的客户端为客户端C3。
S49:代理服务器向媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中携带客户端C3的第三标识,换言之,所述代理服务器使用客户端C3的角色发送第三媒体请求消息给媒体服务器。
S50:媒体服务器通过代理服务器向客户端C1发送退出直播间响应消息,所述退出直播间响应消息用于告知客户端C1退出直播间成功。此外,还包括代理服务器将关于客户端C1的相关记录从“直播间用户关系表”中删除。
S51:代理服务器接收媒体服务器根据所述第三媒体请求消息反馈的第三媒体响应消息。
S52:客户端C3当前角色是slave to secondary master用户,代理服务器暂时不转发该第三媒体响应消息,而是在“直播间用户关系表”中将客户端C3的用户角色变更为备份主用户。
S53:媒体服务器通过代理服务器向客户端C3发送第三直播媒体流,对应地,代理服务器接收所述第三直播媒体流。
S54:代理服务器以GOP为单位缓存所述第三直播媒体流,并利用对齐算法对齐第三直播媒体流和第二直播媒体流,具体地对齐直播媒体流的过程与前述实施例一中的S34相似,可参见上述S34中的相关描述,此处不再赘述。
本实施例中,当直播间中的主要主用户的客户端退出时,利用直播间中未退出的备份主用户的客户端的身份请求直播媒体流,变更获取直播媒体流的客户端角色,并对接收的新的直播媒体流进行对齐处理,从而保证了直播间中其他用户观看视频直播时无重复播放画面或少播放画面,避免主用户退出直播间时影响其他用户视频的观看。
在步骤S46和步骤S47之间,代理服务器将向直播间中的客户端(如客户端C2)发送的第一直播媒体流切换为第二直播媒体流。媒体服务器持续通过代理服务器向客户端C2发送第二直播媒体流,切换后,代理服务器将持续接收的该第二直播媒体流分发给直播间中的客户端,详见后续步骤。
S55:媒体服务器向客户端C2发送第二直播媒体流。
S56:代理服务器以GOP为单位缓存所述第二直播媒体流。另外,还包括:代理服务器调整第二直播媒体流的时间戳。
S57:代理服务器根据“直播间用户关系表”复制第二直播媒体流,所述复制分数为直播间中所有角色不是Exiting用户的客户端。
S58:代理服务器向客户端C2发送第二直播媒体流,另外,还包括:代理服务器调整第二直播媒体流的时间戳。
S59:代理服务器向客户端C3发送第二直播媒体流,另外,还包括:代理服务器调整第二直播媒体流的时间戳。
具体地,调整时间戳的过程参见上述实施例的描述,本实施例对此不详细赘述。
本实施例提供的方法,当主要主用户角色的客户端C1请求退出直播间时,代理服务器接收到主要主用户的客户端C1发送的退出请求消息后,延缓转发该用户退出请求消息,而是重新选择一个客户端作为新的主要主用户,并以该新的主要主用户的角色请求直播媒体流,并复制和分发给直播间的其他客户端,并且在分发这些媒体流时做对齐处理,保证了被观看的媒体流对应的主用户退出时,不影响直播间中的其他正在观看的用户。
可选的,本实施例提供的方法还包括备份主用户角色的客户端C2也请求退出直播间的过程,该过程与前述客户端C1退出直播间的流程相似。
具体的,在图8所示,步骤S52和S53之间还包括:客户端C2向代理服务器发送退出直播间请求消息,该请求消息中包括客户端C2的相关信息。代理服务器在接收来自客户端C2的退出直播间请求消息时,由于发送给客户端C2的直播媒体流正在被观看,所以刷新客户端C2的用户角色为推出(exiting)用户,此时暂不转发客户端C2的退出直播间请求消息。
然后,在S54之后还包括:代理服务器确定被观看的媒体流对应的客户端C2正在退出,代理服务器根据各用户观看到的帧的相对位置,将直播媒体流平滑地切换到发送给客户端C3的媒体流,并刷新客户端C3的角色为Main-Master用户。此外还包括:代理服务器将来自客户端C2的退出直播间请求消息转发给媒体服务器,接收所述媒体服务器向客户端C2发送的退出直播间响应消息,以及转发该退出直播间响应消息给客户端C2。另外,还包括代理服务器从“直播间用户关系表”中删除客户端C2对应的记录。
最后,代理服务器接收到来自媒体服务器的第三直播媒体流后,以GOP的形式缓存在本地,并复制和分发给直播间中所有角色不是退出用户的客户端,此时,直播间中仅剩客户端C3,则将媒体服务器发送的直播媒体流发送给客户端C3。可选的,代理服务器在向客户端C3发送直播媒体流时,还根据用户的视频帧的播放时间调整媒体流中的时间戳,从而不影响客户端C3的观看体验,消除由于客户端C1和C2退出直播间导致的媒体流视频重复播放或少播放的问题。
本申请实施例提供的视频直播单边技术,代理服务器通过标识和借用用户角色,从媒体服务器请求和获取主用户角色的客户端的媒体流,并将主要主用户请求的媒体流复制和分发给同一直播间的其他用户,使得同一直播间的用户观看媒体视频时,从媒体服务器到代理服务器之间传输的媒体流只耗费传输该主用户请求的媒体流的带宽,进而有效降低出口带宽成本和广域链路负载,另外本方法不需要媒体服务器配置单独的鉴权给客户端,所以进一步地降低运维成本。
下面介绍与本申请上述方法实施例所对应的装置和硬件设备实施例。
参见图9,为本申请一实施例提供的一种媒体流发送装置的结构示意图,该装置可以是上述实施例所述的代理服务器。
进一步地,该装置包括:接收单元901、处理单元902和发送单元903,此外还可以包括其它功能模块或单元,比如存储单元等。其中,所述装置可以为服务器,用于执行上述实施例所述的媒体流发送方法,例如为进入直播间的至少两个用户提供直播媒体流。
具体地,接收单元901用于接收来自第一客户端的用于请求进入直播间的第一直播间请求消息;处理单元902用于根据所述第一直播间请求消息确定第一客户端的角色,以及确定所述第一客户端的角色;发送单元903用于在确定所述第一客户端的角色是仆用户的情况下,将本地缓存的第一直播媒体流发送给所述第一客户端,其中所述第一直播媒体流是媒体服务器通过代理服务器转发给第二客户端的媒体流,所述第二客户端的角色是主用户。
可选的,在本实施例的一种具体的实现方式中,处理单元902具体用于在接收到第一直播间请求消息时,判断直播间中是否存在角色为主用户的客户端;如果存在,则确定所述第一客户端的角色是仆用户。如果不存在,则确定所述第一客户端的角色为主用户。
可选的,在本实施例的另一种具体的实现方式中,接收单元901还用于将第一直播媒体流发送给所述第一客户端之前,接收来自所述第一客户端的第一媒体请求消息,不转发所述第一媒体请求消息给所述媒体服务器;发送单元903还用于向第一客户端发送第一媒体响应消息,所述第一媒体响应消息用于通知所述第一客户端允许获取媒体流。
可选的,在本实施例的又一种具体的实现方式中,所述第一媒体请求消息中包括第一客户端的角色标识;接收单元901还用于将所述第一直播媒体流发送给所述第一客户端之后,接收来自所述第二客户端的退出直播间请求消息;处理单元902还用于在确定将所述第一客户端作为新的主用户时,将所述第一客户端的角色从所述仆用户变更为主用户;发送单元903还用于向所述媒体服务器发送第二媒体请求消息,所述第二媒体请求消息中包括所述第一客户端的角色标识;接收单元901还用于接收所述媒体服务器根据所述第二媒体请求消息发送的第二直播媒体流;发送单元903还用于将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流。
可选的,在本实施例的又一种具体的实现方式中,处理单元902具体用于在接收到所述第一直播间请求消息时,所述直播间中角色为主用户的客户端的数量是否达到预设上限,所述预设上线大于1;如果达到所述预设上限,则确定所述第一客户端的角色是仆用户。
可选的,在本实施例的又一种具体的实现方式中,所述处理单元902还用于如果所述直播间中角色为主用户的客户端的数量不为0且没有达到所述预设上限,则确定所述第一客户端的角色是备份主用户。
可选的,在本实施例的又一种具体的实现方式中,在所述第一客户端是仆用户的情况下,接收单元901还用于接收来自所述第二客户端的退出直播间请求消息;处理单元902还用于在确定将所述第一客户端作为新的备份主用户时,将所述第一客户端的角色从所述仆用户变更为备份主用户;发送单元903还用于向所述媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中包括所述第一客户端的标识;接收单元901还用于接收所述媒体服务器根据所述第三媒体请求消息发送的第三直播媒体流。
可选的,在本实施例的又一种具体的实现方式中,在所述第二客户端为主要主用户,所述第一客户端是所述备份主用户的情况下,发送单元903还用于将所述第一直播媒体流发送给第一客户端。
可选的,在本实施例的又一种具体的实现方式中,在所述第一客户端是备份主用户的情况下,接收单元901还用于接收来自所述第一客户端的第四媒体请求消息;发送单元903还用于将所述第四媒体请求消息发送给所述媒体服务器;接收单元901还用于接收所述媒体服务器根据所述第四媒体请求消息发送的第四直播媒体流。
可选的,在本实施例的又一种具体的实现方式中,在所述第一客户端是备份主用户的情况下,接收单元901还用于接收来自所述第二客户端的退出直播间请求消息;处理单元902还用于在确定将所述第一客户端作为新的主要主用户时,将所述第一客户端的角色从所述备份主用户变更为主要主用户;发送单元903还用于将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流。
可选的,在本实施例的又一种具体的实现方式中,处理单元902还用于调整所述第四直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第四直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
其中,向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧为相邻帧。
处理单元902还用于将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流之前,根据缓存的所述第一直播媒体流和所述第四直播媒体流识别分别属于所述第一直播媒体流和所述第四直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第四直播媒体流的第一切换帧和第二切换帧,以及将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧。
可选的,在本实施例的又一种具体的实现方式中,还包括:存储单元,所述存储单体用于以图像组GOP为单位缓存第一直播媒体流。此外,还在本地存储第二直播媒体流和第三直播媒体流,并且均以GOP方式存储。
可选的,在本实施例的又一种具体的实现方式中,处理单元902还用于将将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第二直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。所述连续可理解为第一客户端接收的第二直播媒体流的相邻视频帧的时间间隔相同,均为帧率参数f的倒数。
可选的,在本实施例的又一种具体的实现方式中,向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧为相邻帧;
处理单元902还用于将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,根据所述第一直播媒体流和所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧,以及将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧;
发送单元903还用于在确定所述第一切换帧和所述第二切换帧之后还包括:将来自所述第二客户端的退出直播间请求消息转发给所述媒体服务器。
可选的,在本实施例的又一种具体的实现方式中,处理单元902还用于将所述第一直播媒体流发送给所述第一客户端之前,调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第一直播媒体流的第一帧的时间戳为0,并且向所述第一客户端发送的所述第一直播媒体流的相邻帧的时间戳连续。
在具体的硬件实现中,如图10所示,本申请还提供了一种网络设备,该网络设备200可以是前述方法实施例中的代理服务器。
具体地,该网络设备200包括:收发器201、处理器202和存储器203,该网络设备还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置,本申请对此不进行限定。
其中,收发器201用于接收和发送直播媒体流,并与网络中的其他设备(客户端、RDC等)进行数据传输,比如发送和接收请求消息、响应消息等。进一步地,收发器201可以包括接收机2011、发射机2012与天线2013等部件,或者还可以包括收发模块,进一步地,所述收发模块可以包括无线局域网(wireless local area network,WLAN)模块、蓝牙模块、基带(base band)模块等通信模块,以及所述通信模块对应的射频(radio frequency,RF)电路,用于进行无线局域网络通信、蓝牙通信、红外线通信及/或蜂窝式通信系统通信,例如宽带码分多重接入(wideband code division multiple access,WCDMA)及/或高速下行封包存取(high speed downlink packet access,HSDPA)。所述收发模块用于控制网络设备中的各组件的通信,并且可以支持直接内存存取(direct memory access)。
处理器202为网络设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器203内的软件程序和/或单元,以及调用存储在存储器203内的数据,以执行网络设备的各种功能和各种功能和/或处理数据。
进一步地,处理器202可以由集成电路(Integrated Circuit,IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器可以仅包括中央处理器(Central Processing Unit,CPU),也可以是GPU、数字信号处理器(Digital Signal Processor,DSP)、及收发器中的控制芯片(例如基带芯片)的组合。
存储器203可以包括易失性存储器(volatile memory),例如随机存取内存(Random Access Memory,RAM);还可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(Hard Sisk Drive,HDD)或固态硬盘(Solid-StateDrive,SSD);存储器还可以包括上述种类的存储器的组合。所述存储器中可以存储有程序或代码,处理器802通过执行所述程序或代码可以实现所述通信设备的功能。
在本实施例中,当所述网络设备作为代理服务器时,前述图9所示装置实施例中的接收单元901和发送单元903的功能可以由收发器201来实现,或者由处理器202控制的收发器201实现;所述处理单元902所要实现的功能则可以由处理器202实现;存储单元的功能可以由存储器203实现。
另外,本申请实施例还提供一种媒体流发送系统。该系统包括上述实施例图9所示的媒体流发送装置或图10所示的网络设备,还包括多个客户端、RDC、EDC和内容源等设备,以用于实现上述方法实施例中的媒体流发送方法。
可选的,所述媒体流发送系统为视频直播系统,例如CDN系统。
此外,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的内容发送方法、内容接收方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体ROM或随机存储记忆体RAM等。
在上述实施例中,可以全部或部分通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机加载和执行所述计算机程序时,全部或部分地产生按照本申请上述各个实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。
所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网络节点、计算机、服务器或数据中心通过有线或无线方式向另一个站点、计算机或服务器进行传输。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于一种媒体流发送装置的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于一种同步载频信号发送装置、接收装置的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
此外,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。
Claims (34)
1.一种媒体流发送方法,其特征在于,所述方法为进入直播间的客户端提供直播媒体流,所述方法包括:
代理服务器接收来自第一客户端的用于请求进入直播间的第一直播间请求消息;
所述代理服务器根据所述第一直播间请求消息确定第一客户端的角色;
如果所述第一客户端的角色是仆用户,则将所述代理服务器上缓存的第一直播媒体流发送给所述第一客户端,其中所述第一直播媒体流是媒体服务器通过所述代理服务器发送给第二客户端的媒体流,所述第二客户端的角色是主用户,所述第一直播媒体流是所述代理服务器接收到来自于所述第二客户端的用于请求进入直播间的第二直播间请求消息,并根据所述第二直播间请求消息确定所述第二客户端的角色是主用户后,通过向所述媒体服务器转发来自于所述第二客户端的媒体请求消息从所述媒体服务器获取到的。
2.根据权利要求1所述的方法,其特征在于,
根据所述第一直播间请求消息确定第一客户端的角色,包括:
确定在接收到所述第一直播间请求消息时所述直播间中是否存在角色为主用户的客户端;
如果存在,则确定所述第一客户端的角色是仆用户。
3.根据权利要求2所述的方法,其特征在于,将所述代理服务器上缓存的第一直播媒体流发送给所述第一客户端之前,还包括:
所述代理服务器接收来自所述第一客户端的第一媒体请求消息,不转发所述第一媒体请求消息给所述媒体服务器;
所述代理服务器向所述第一客户端发送第一媒体响应消息,所述第一媒体响应消息用于通知所述第一客户端允许获取媒体流。
4.根据权利要求3所述的方法,其特征在于,所述第一媒体请求消息中包括第一客户端的标识;
所述代理服务器将所述第一直播媒体流发送给所述第一客户端之后,还包括:
所述代理服务器接收来自所述第二客户端的退出直播间请求消息;
所述代理服务器在确定将所述第一客户端作为新的主用户时,将所述第一客户端的角色从所述仆用户变更为主用户;
所述代理服务器向所述媒体服务器发送第二媒体请求消息,所述第二媒体请求消息中包括所述第一客户端的标识;
所述代理服务器接收所述媒体服务器根据所述第二媒体请求消息发送的第二直播媒体流;
所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流。
5.根据权利要求1所述的方法,其特征在于,根据所述第一直播间请求消息确定第一客户端的角色,包括:
所述代理服务器确定在接收到所述第一直播间请求消息时所述直播间中角色为主用户的客户端的数量是否达到预设上限,所述预设上限大于1;
如果达到所述预设上限,则确定所述第一客户端的角色是仆用户。
6.根据权利要求5所述的方法,其特征在于,还包括:
如果所述直播间中角色为主用户的客户端的数量不为0且没有达到所述预设上限,则确定所述第一客户端的角色是备份主用户。
7.根据权利要求5所述的方法,其特征在于,在所述第一客户端是仆用户的情况下,还包括:
所述代理服务器接收来自所述第二客户端的退出直播间请求消息;
所述代理服务器在确定将所述第一客户端作为新的备份主用户时,将所述第一客户端的角色从所述仆用户变更为备份主用户;
所述代理服务器向所述媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中包括所述第一客户端的标识;
所述代理服务器接收所述媒体服务器根据所述第三媒体请求消息发送的第三直播媒体流。
8.根据权利要求6所述的方法,其特征在于,在所述第二客户端为主要主用户,所述第一客户端是所述备份主用户的情况下,还包括:
所述代理服务器将所述第一直播媒体流发送给所述第一客户端。
9.根据权利要求8所述的方法,其特征在于,在所述第一客户端是备份主用户的情况下,还包括:
所述代理服务器接收来自所述第一客户端的第四媒体请求消息;
所述代理服务器将所述第四媒体请求消息发送给所述媒体服务器;
所述代理服务器接收所述媒体服务器根据所述第四媒体请求消息发送的第四直播媒体流。
10.根据权利要求9所述的方法,其特征在于,在所述第一客户端是备份主用户的情况下,还包括:
所述代理服务器接收来自所述第二客户端的退出直播间请求消息;
所述代理服务器在确定将所述第一客户端作为新的主要主用户时,将所述第一客户端的角色从所述备份主用户变更为主要主用户;
所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
所述代理服务器调整所述第四直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第四直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
12.根据权利要求10或11所述的方法,其特征在于,所述代理服务器向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧为相邻帧;
所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流之前还包括:
所述代理服务器根据缓存的所述第一直播媒体流和所述第四直播媒体流识别分别属于所述第一直播媒体流和所述第四直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;
所述代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第四直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧。
13.根据权利要求1-12任一项所述的方法,其特征在于,还包括:
所述代理服务器以图像组GOP为单位缓存所述第一直播媒体流。
14.根据权利要求4所述的方法,其特征在于,所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,还包括:
所述代理服务器调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:
所述代理服务器向所述第一客户端发送的所述第二直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
15.根据权利要求4或14所述的方法,其特征在于,所述代理服务器向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧为相邻帧;
所述代理服务器将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前还包括:
所述代理服务器根据所述第一直播媒体流和所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;
所述代理服务器根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧,并将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧;
所述代理服务器在确定所述第一切换帧和所述第二切换帧之后还包括:所述代理服务器将来自所述第二客户端的退出直播间请求消息转发给所述媒体服务器。
16.根据权利要求1-15任一项所述的方法,其特征在于,所述代理服务器将所述第一直播媒体流发送给所述第一客户端之前,还包括:
所述代理服务器调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:
所述代理服务器向所述第一客户端发送的所述第一直播媒体流的第一帧的时间戳为0,并且向所述第一客户端发送的所述第一直播媒体流的相邻帧的时间戳连续。
17.一种媒体流发送装置,其特征在于,所述装置为进入直播间的客户端提供直播媒体流,所述装置包括:
接收单元,用于接收来自第一客户端的用于请求进入直播间的第一直播间请求消息;
处理单元,用于根据所述第一直播间请求消息确定第一客户端的角色;
发送单元,用于在确定所述第一客户端的角色是仆用户的情况下,将所述装置中缓存的第一直播媒体流发送给所述第一客户端,其中所述第一直播媒体流是媒体服务器通过所述装置发送给第二客户端的媒体流,所述第二客户端的角色是主用户,所述第一直播媒体流是所述代理服务器接收到来自于所述第二客户端的用于请求进入直播间的第二直播间请求消息,并根据所述第二直播间请求消息确定所述第二客户端的角色是主用户后,通过向所述媒体服务器转发来自于所述第二客户端的媒体请求消息从所述媒体服务器获取到的。
18.根据权利要求17所述的装置,其特征在于,
所述处理单元,具体用于在接收到所述第一直播间请求消息时,判断所述直播间中是否存在角色为主用户的客户端;如果存在,则确定所述第一客户端的角色是仆用户。
19.根据权利要求18所述的装置,其特征在于,
所述接收单元,还用于将缓存的所述第一直播媒体流发送给所述第一客户端之前,接收来自所述第一客户端的第一媒体请求消息,所述第一媒体请求消息不转发给所述媒体服务器;
所述发送单元,还用于向所述第一客户端发送第一媒体响应消息,所述第一媒体响应消息用于通知所述第一客户端允许获取媒体流。
20.根据权利要求19所述的装置,其特征在于,所述第一媒体请求消息中包括第一客户端的标识;
所述接收单元,还用于将所述第一直播媒体流发送给所述第一客户端之后,接收来自所述第二客户端的退出直播间请求消息;
所述处理单元,还用于在确定将所述第一客户端作为新的主用户时,将所述第一客户端的角色从所述仆用户变更为主用户;
所述发送单元,还用于向所述媒体服务器发送第二媒体请求消息,所述第二媒体请求消息中包括所述第一客户端的标识;
所述接收单元,还用于接收所述媒体服务器根据所述第二媒体请求消息发送的第二直播媒体流;
所述处理单元,还用于将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流。
21.根据权利要求16所述的装置,其特征在于,
所述处理单元,具体用于确定在接收到所述第一直播间请求消息时,所述直播间中角色为主用户的客户端的数量是否达到预设上限,所述预设上线大于1;如果达到所述预设上限,则确定所述第一客户端的角色是仆用户。
22.根据权利要求21所述的装置,其特征在于,
所述处理单元,还用于如果所述直播间中角色为主用户的客户端的数量不为0且没有达到所述预设上限,则确定所述第一客户端的角色是备份主用户。
23.根据权利要求21所述的装置,其特征在于,在所述第一客户端是仆用户的情况下,
所述接收单元,还用于接收来自所述第二客户端的退出直播间请求消息;
所述处理单元,还用于在确定将所述第一客户端作为新的备份主用户时,将所述第一客户端的角色从所述仆用户变更为备份主用户;
所述发送单元,还用于向所述媒体服务器发送第三媒体请求消息,所述第三媒体请求消息中包括所述第一客户端的标识;
所述接收单元,还用于接收所述媒体服务器根据所述第三媒体请求消息发送的第三直播媒体流。
24.根据权利要求22所述的装置,其特征在于,在所述第二客户端为主要主用户,所述第一客户端是所述备份主用户的情况下,
所述发送单元,还用于将所述第一直播媒体流发送给所述第一客户端。
25.根据权利要求24所述的装置,其特征在于,在所述第一客户端是备份主用户的情况下,
所述接收单元,还用于接收来自所述第一客户端的第四媒体请求消息;
所述发送单元,还用于将所述第四媒体请求消息发送给所述媒体服务器;
所述接收单元,还用于接收所述媒体服务器根据所述第四媒体请求消息发送的第四直播媒体流。
26.根据权利要求25所述的装置,其特征在于,在所述第一客户端是备份主用户的情况下,
所述接收单元,还用于接收来自所述第二客户端的退出直播间请求消息;
所述处理单元,还用于在确定将所述第一客户端作为新的主要主用户时,将所述第一客户端的角色从所述备份主用户变更为主要主用户;
所述处理单元,还用于将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流。
27.根据权利要求26所述的装置,其特征在于,
所述处理单元,还用于调整所述第四直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第四直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
28.根据权利要求26或27所述的装置,其特征在于,向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧为相邻帧;
所述处理单元,还用于将向所述第一客户端发送的第一直播媒体流切换为所述第四直播媒体流之前,根据缓存的所述第一直播媒体流和所述第四直播媒体流识别分别属于所述第一直播媒体流和所述第四直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第四直播媒体流的第一切换帧和第二切换帧,以及将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第四直播媒体流的第一帧。
29.根据权利要求17-28任一项所述的装置,其特征在于,还包括:
存储单元,用于以图像组GOP为单位缓存所述第一直播媒体流。
30.根据权利要求20所述的装置,其特征在于,
所述处理单元,还用于将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,调整所述第二直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第二直播媒体流的第一帧的时间戳与向所述第一客户端发送的所述第一直播媒体流的最后一帧的时间戳连续。
31.根据权利要求20或30所述的装置,其特征在于,向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧为相邻帧;
所述处理单元,还用于将向所述第一客户端发送的第一直播媒体流切换为所述第二直播媒体流之前,根据所述第一直播媒体流和所述第二直播媒体流识别分别属于所述第一直播媒体流和所述第二直播媒体流的第一I帧和第二I帧,所述第一I帧和所述第二I帧为相同视频帧;根据所述第一I帧和所述第二I帧确定相邻的且分别属于所述第一直播媒体流和所述第二直播媒体流的第一切换帧和第二切换帧,以及将所述第一切换帧和所述第二切换帧分别作为向所述第一客户端发送的所述第一直播媒体流的最后一帧与向所述第一客户端发送的所述第二直播媒体流的第一帧;
所述发送单元,还用于在确定所述第一切换帧和所述第二切换帧之后,将来自所述第二客户端的退出直播间请求消息转发给所述媒体服务器。
32.根据权利要求17-31任一项所述的装置,其特征在于,
所述处理单元,还用于将所述第一直播媒体流发送给所述第一客户端之前,调整所述第一直播媒体流的时间戳,使得调整后的时间戳满足:向所述第一客户端发送的所述第一直播媒体流的第一帧的时间戳为0,并且向所述第一客户端发送的所述第一直播媒体流的相邻帧的时间戳连续。
33.一种网络设备,包括处理器,所述处理器与存储器耦合,其特征在于,
所述存储器,用于存储指令;
所述处理器,用于执行所述存储器中的指令,使得所述网络设备执行如权利要求1至16中任一项所述的方法。
34.一种计算机可读存储介质,所述存储介质中存储有指令,其特征在于,
当所述指令被运行时,实现如权利要求1至16中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153159.1A CN114666614A (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910330894.3A CN111836059B (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
CN202210153159.1A CN114666614A (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910330894.3A Division CN111836059B (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114666614A true CN114666614A (zh) | 2022-06-24 |
Family
ID=72911675
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210153159.1A Pending CN114666614A (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
CN201910330894.3A Active CN111836059B (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910330894.3A Active CN111836059B (zh) | 2019-04-23 | 2019-04-23 | 一种媒体流发送方法、装置和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210352336A1 (zh) |
EP (1) | EP3883249B1 (zh) |
JP (1) | JP7256881B2 (zh) |
KR (1) | KR102525289B1 (zh) |
CN (2) | CN114666614A (zh) |
WO (1) | WO2020216279A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113301377B (zh) * | 2021-05-24 | 2023-04-07 | 广州市百果园信息技术有限公司 | 直播管理系统、方法、设备及存储介质 |
US11924479B2 (en) * | 2021-07-07 | 2024-03-05 | Rovi Guides, Inc. | Systems and methods for generating metadata for a live media stream |
CN113824987B (zh) * | 2021-09-30 | 2024-04-30 | 杭州网易云音乐科技有限公司 | 直播间首帧耗时的确定方法、介质、装置和计算设备 |
CN113949892B (zh) * | 2021-10-14 | 2024-03-29 | 广州方硅信息技术有限公司 | 基于虚拟资源消耗的直播互动方法、系统、设备及介质 |
CN114363665B (zh) * | 2021-12-16 | 2023-11-07 | 深圳市捷视飞通科技股份有限公司 | 多业务码流推送方法、系统、计算机设备和存储介质 |
CN114501052B (zh) * | 2022-01-26 | 2022-10-25 | 腾讯科技(深圳)有限公司 | 直播数据处理方法、云平台、计算机设备和存储介质 |
CN116132751B (zh) * | 2022-12-30 | 2024-07-30 | 郑州小鸟信息科技有限公司 | 一种基于web窗口场景同步回放的方法及系统 |
CN118338050B (zh) * | 2024-06-17 | 2024-08-23 | 北京微吼时代科技有限公司 | 消息限频方法、装置、电子设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778104A (zh) * | 2009-12-29 | 2010-07-14 | 常州中流电子科技有限公司 | 一种实现自适应带宽播放流媒体的系统及其方法 |
CN103475900A (zh) * | 2012-06-06 | 2013-12-25 | 中国移动通信集团公司 | 手机电视业务视频帧的封装方法、装置及前端系统 |
CN106534877A (zh) * | 2016-10-24 | 2017-03-22 | 广州酷狗计算机科技有限公司 | 一种发送媒体流的方法及装置 |
CN109104614A (zh) * | 2018-07-02 | 2018-12-28 | 北京东方网信科技股份有限公司 | 一种直播缓存系统及方法 |
CN109618178A (zh) * | 2019-01-21 | 2019-04-12 | 北京奇艺世纪科技有限公司 | 一种直播方法、装置及系统 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3875504B2 (ja) * | 2001-03-23 | 2007-01-31 | 日本電信電話株式会社 | 共通情報キャッシング中継方法及び中継装置 |
US8621083B2 (en) * | 2003-05-15 | 2013-12-31 | Hewlett-Packard Development Company, L.P. | System and method for multicasting through a localized computer network |
KR100851634B1 (ko) * | 2008-02-05 | 2008-08-13 | 주식회사 셀런 | 라이브 멀티미디어 스트림을 풀방식으로 스트리밍하는 방법및 시스템 |
US9038116B1 (en) * | 2009-12-28 | 2015-05-19 | Akamai Technologies, Inc. | Method and system for recording streams |
CN102075562B (zh) * | 2010-12-03 | 2014-08-20 | 华为技术有限公司 | 协作缓存的方法和装置 |
US8416937B2 (en) * | 2010-12-27 | 2013-04-09 | Avaya Inc. | System and method for changing conference moderators during a conference call |
CN102075728B (zh) * | 2011-01-18 | 2015-08-12 | 中兴通讯股份有限公司 | 一种共享音频和/或视频的方法及系统 |
CN103841468B (zh) * | 2014-02-27 | 2018-04-20 | 北京六间房科技有限公司 | 实时流媒体数据传输方法 |
JP2015165349A (ja) * | 2014-02-28 | 2015-09-17 | 株式会社東芝 | 一次応答装置、制御方法及びコンピュータプログラム |
KR101533368B1 (ko) * | 2014-04-18 | 2015-07-02 | 숭실대학교산학협력단 | 마스터 이동 단말 및 슬레이브 이동 단말의 제어 방법, 이를 수행하기 위한 기록매체 |
US9445048B1 (en) * | 2014-07-29 | 2016-09-13 | Google Inc. | Gesture-initiated actions in videoconferences |
US9402054B2 (en) * | 2014-12-08 | 2016-07-26 | Blue Jeans Network | Provision of video conference services |
CN106302566B (zh) * | 2015-05-12 | 2019-07-23 | 华为技术有限公司 | 直播媒体数据的方法、设备和系统 |
JP6220917B2 (ja) * | 2016-04-19 | 2017-10-25 | 株式会社 ディー・エヌ・エー | リアルタイムの動画を配信するシステム、方法、及びプログラム |
WO2018027237A1 (en) * | 2016-08-05 | 2018-02-08 | Sportscastr.Live Llc | Systems, apparatus, and methods for scalable low-latency viewing of broadcast digital content streams of live events |
CN106162235B (zh) * | 2016-08-17 | 2018-06-01 | 北京百度网讯科技有限公司 | 用于切换视频流的方法和装置 |
KR101727310B1 (ko) * | 2016-12-09 | 2017-04-14 | 주식회사 대경바스컴 | 다방향성 크로스캐스팅 방송 시스템 및 방법 |
CN108235042B (zh) * | 2016-12-14 | 2019-12-17 | 腾讯科技(深圳)有限公司 | 一种多人网络直播方法、装置、加入装置、系统、服务器和计算机可读存储介质 |
CN106604064A (zh) * | 2016-12-30 | 2017-04-26 | 北京奇艺世纪科技有限公司 | 一种快速开播方法及装置 |
CN107332894B (zh) * | 2017-06-23 | 2020-08-11 | 广州市百果园信息技术有限公司 | 直播方法、装置及系统、服务器、存储介质 |
CN108322787A (zh) * | 2018-02-08 | 2018-07-24 | 北京潘达互娱科技有限公司 | 视频流分发方法、装置及电子设备 |
US10631363B1 (en) * | 2018-10-23 | 2020-04-21 | Google Llc | Two stage role switch for fully wireless earbuds |
-
2019
- 2019-04-23 CN CN202210153159.1A patent/CN114666614A/zh active Pending
- 2019-04-23 CN CN201910330894.3A patent/CN111836059B/zh active Active
-
2020
- 2020-04-23 EP EP20794001.6A patent/EP3883249B1/en active Active
- 2020-04-23 WO PCT/CN2020/086349 patent/WO2020216279A1/zh unknown
- 2020-04-23 JP JP2021540891A patent/JP7256881B2/ja active Active
- 2020-04-23 KR KR1020217020731A patent/KR102525289B1/ko active IP Right Grant
-
2021
- 2021-07-26 US US17/385,501 patent/US20210352336A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778104A (zh) * | 2009-12-29 | 2010-07-14 | 常州中流电子科技有限公司 | 一种实现自适应带宽播放流媒体的系统及其方法 |
CN103475900A (zh) * | 2012-06-06 | 2013-12-25 | 中国移动通信集团公司 | 手机电视业务视频帧的封装方法、装置及前端系统 |
CN106534877A (zh) * | 2016-10-24 | 2017-03-22 | 广州酷狗计算机科技有限公司 | 一种发送媒体流的方法及装置 |
CN109104614A (zh) * | 2018-07-02 | 2018-12-28 | 北京东方网信科技股份有限公司 | 一种直播缓存系统及方法 |
CN109618178A (zh) * | 2019-01-21 | 2019-04-12 | 北京奇艺世纪科技有限公司 | 一种直播方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3883249A1 (en) | 2021-09-22 |
JP2022518216A (ja) | 2022-03-14 |
KR102525289B1 (ko) | 2023-04-24 |
WO2020216279A1 (zh) | 2020-10-29 |
US20210352336A1 (en) | 2021-11-11 |
CN111836059B (zh) | 2022-03-29 |
EP3883249B1 (en) | 2024-03-27 |
CN111836059A (zh) | 2020-10-27 |
KR20210094081A (ko) | 2021-07-28 |
JP7256881B2 (ja) | 2023-04-12 |
EP3883249A4 (en) | 2022-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111836059B (zh) | 一种媒体流发送方法、装置和设备 | |
US9769236B2 (en) | Combined broadcast and unicast delivery | |
US9509739B2 (en) | Method and apparatus for playing live content | |
EP2606641B1 (en) | Method and apparatus for reducing deterioration of a quality of experience of a multimedia service in a multimedia system | |
CN108063769B (zh) | 一种内容服务的实现方法、装置及内容分发网络节点 | |
CN110933517B (zh) | 码率切换方法、客户端和计算机可读存储介质 | |
JP7259056B2 (ja) | メディアストリーム送信方法、装置、システム、およびデバイス | |
US20220385989A1 (en) | Video playing control method and system | |
WO2015040559A1 (en) | Dash representations adaptations in network | |
US10687106B2 (en) | System and method for distributed control of segmented media | |
US20220295127A1 (en) | Consolidating content streams to conserve bandwidth | |
CN103841468A (zh) | 实时流媒体数据传输方法 | |
US11259069B1 (en) | Synchronized video player | |
US20130042288A1 (en) | Method and arrangement for playing out a media object | |
US10158923B2 (en) | Method of broadcasting contents by streaming in a peer-to-peer network | |
CN116016964A (zh) | 直播稳流方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |