CN108924609B - 流媒体数据传输的方法、电子设备、装置及存储介质 - Google Patents
流媒体数据传输的方法、电子设备、装置及存储介质 Download PDFInfo
- Publication number
- CN108924609B CN108924609B CN201810771750.7A CN201810771750A CN108924609B CN 108924609 B CN108924609 B CN 108924609B CN 201810771750 A CN201810771750 A CN 201810771750A CN 108924609 B CN108924609 B CN 108924609B
- Authority
- CN
- China
- Prior art keywords
- network
- client
- audience
- server
- streaming media
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000005540 biological transmission Effects 0.000 title claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 3
- 230000002596 correlated effect Effects 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26208—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
- H04N21/26216—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving the channel capacity, e.g. network bandwidth
-
- 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/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234363—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了流媒体数据传输的方法、电子设备、装置及存储介质,所述方法包括步骤:观众客户端与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包。旨在解决现有的P2P传输方式不适用于直播模式的实时流媒体数据传输的技术问题。
Description
技术领域
本申请涉及通信领域,尤其涉及数据传输技术领域。
背景技术
直播可快速准确的传递现场信息,强烈的临场感让越来越多的人通过网站或手机来观看直播。实时的流媒体数据通常以推流的方式由直播服务器主动推送给各个观众客户端。
“推流”是将流媒体数据主动推送到网络中的观众客户端,以供观众客户端观看所述流媒体数据的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象。并且,对于一些热门的流媒体数据,观看的观众客户端数量可能达到上万,此时服务器的“推流”的压力非常大。
Peer-to-peer(P2P)是一种分布式网络,P2P网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者(服务器server),又是资源(服务和内容)获取者(客户端client)。基于上述P2P的特点,P2P网络中的对等节点获取资源的数据非常快。但是,传统的P2P技术是基于文件共享需求产生的,P2P模式常常被用在共享视频或音频资料的场景(例如视频点播等网站的视频资源下载)。各网络节点流媒体数据时,通常将资源以文件的形式存储在各网络节点上,并将文件拆分成若干个子文件传输给对端节点。由于传统的P2P技术通常是基于文件的方式传输数据,需要事先将文件制作好,而文件传输的方式使得P2P技术的适用场景存在局限定,并不适用于直播模式的实时视频流的传输。
发明内容
有鉴于此,本申请提供流媒体数据传输的方法、电子设备、装置及存储介质。
根据本申请实施例的第一方面,提供一种流媒体数据传输方法,所述方法包括步骤:
观众客户端与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包。
在一些例子中,所述P2P网络中的各观众客户端属于同一直播间;或
所述P2P网络中的各观众客户端属于同一直播间,且播放的流媒体数据的分辨率参数相同。
在一些例子中,所述方法还包括:
当所述观众客户端转换直播间或更新播放流媒体数据的分辨率参数时,所述观众客户端重新与其他观众客户端建立P2P网络。
在一些例子中,所述其他观众客户端从所述服务器获取所述数据包;
其中,所述数据包被分为若干组,所述分组根据各数据包的第一标识求余后的余数确定,所述第一标识为预定位数的编号。
在一些例子中,所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包,包括:
所述观众客户端从其他观众客户端获取第一类数据包,从服务器获取第二类数据包,所述第一类数据包与所述第二类数据包属于不同的分组。
在一些例子中,所述数据包的大小为1KB。
在一些例子中,所述观众客户端与其他观众客户端建立P2P网络,所述方法还包括步骤:
所述观众客户端从所述服务器获取数据包;
所述观众客户端待获取数据包达到的时间或数据包长度达到预设条件时,所述观众客户端与其他观众客户端建立P2P网络。
本申请的第二方面,提供一种流媒体数据传输装置,包括:
确定模块,用于与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
获取模块,用于从所述其他观众客户端及服务器分别获取指定的数据包。
本申请的第三方面,提供一种终端设备,所述终端设备包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如上述第一方面所述任一一项方法所述的操作。
本申请的第三方面,提供一种计算机存储介质,所述程序被处理器执行时实现上述第一方面所述的任意一项所述方法的步骤。
本申请将成功的P2P模式运用到流媒体数据传输领域。不同于传统的P2P模式,首先将流媒体数据切割成数据包而不是文件块,文件块的大小可能在上百KB,而相对于文件块来说,数据包的可拆分粒度更小,可以作为更小的传输单元在网络中传输,例如在考虑切割后的数据包的大小时,可以结合互联网链路层的传输特性来设计,使得数据包的大小与P2P网络中各连接通道的传输带宽匹配。由于拆分后的数据包可以在P2P网络的各个客户端之间传递,有效的缓解了服务器的压力。更重要的是,本申请根据P2P网络中对等节点(观众客户端)获取流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,以确定从所述P2P网络中的其他观众客户端及服务器获取的数据包,例如,当观众客户端要获取(观看)的流媒体数据的分辨率参数较高,可以更多的从服务器获取数据包,以缓解P2P网络中其他对等的节点的网络上行压力,使得数据传输的灵活性较大,且效率更高。
附图说明
图1是本申请实施例提出的一种直播系统的网络架构;
图2是本申请实施例提出的一种流媒体数据传输方法的流程图;
图3是本申请实施例提出的一种构建P2P网络的流程图;
图4a-图4c为本申请实施例中三种不同的服务器架构下搭建的网络;
图4d为本申请实施例提出的一种自定义的格式的示意图;
图5为本申请一应用场景中的网络架构图;
图6为本申请另一应用场景中的网络架构图;
图7为图6应用场景下网络设备的信令交互图;
图8为本申请实施例中的一流媒体数据传输装置的示意图;
图9为本申请实施例示意性示出的一种终端设备的的逻辑框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是本申请实施例提出的一种直播系统的网络架构,网络架构中包括主播客户端100、服务器120、观众客户端130,不同于传统的直播系统,观众客户端130借助服务器设备相互搭建成P2P网络。由于不同的应用环境下,用户对网络设备的功能需求可能不同,因此,每个应用场景中服务器和客户端设备的数量以及功能可以不同。
为了使本申请实施例的P2P网络能够突破传统P2P网络的常规传输模式(即传统技术中以拆分文件的方式在对等节点之间传输数据),本申请提出以下技术方案,图2是一种流媒体数据传输方法的部分步骤的流程图,所述方法的步骤包括:
观众客户端与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包(S210),其中,所述数据包由流媒体数据拆分得到,并且所述数据包由服务器按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
可以根据上述确定结果,执行S220:所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包。
本申请实施例提出的流媒体数据指的是直播场景中,主播客户端制作的视频流,或者根据所述主播客户端制作的视频流进行处理得到的视频流。所述“流媒体数据被拆分成若干数据包”可以是实时发生的,在一些例子中,无需等待服务器接收到整个流媒体数据再进行拆分,服务器收到部分流媒体数据后,可以将部分流媒体数据拆分成若干数据包。
具体的,在一些例子中,S210中所述观众客户端与其他观众客户端建立P2P网络的可以如图3所述的流程实现,参照图3,所述观众客户端与其他观众客户端建立P2P网络的部分步骤如下:
主播客户端将用于直播的流媒体数据发送给服务器(S310);
所述服务器在流媒体数据被拆分成若干数据包(S320)后,将所述数据包按照自定义的格式封装(S330);其中,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
服务器将封装后的数据包分发给与所述主播客户端对应的观众客户端(S340);
服务器使所述观众客户端建立P2P网络(S350)。
不同于传统的P2P模式,实施例中执行S320时,首先将流媒体数据切割成数据包而不是文件块,文件块的大小可能在上百KB,而相对于文件块来说,数据包的可拆分粒度更小,可以作为更小的传输单元在网络中传输,例如在考虑切割后的数据包的大小时,可以结合互联网链路层的传输特性来设计,使得数据包的大小与P2P网络中各连接通道的传输带宽匹配。举例来说,各对等节点之间建立的通道可以是UDP通道,每个数据包的大小可以是1KB左右,约等于MTU(互联网链路层最大传输单元),这样,每个数据包可以由1个UDP包传输,不需要出现基于UDP包拆包,因此比拆分文件的方式效率更高,从而使得具有更广泛的适用场景。
本申请实施例提出的服务器可以由多种实体承担,这取决于设计者对不同网络设备的角色划分。例如,图4a、图4b、图4c是三种不同场景下的网络架构,可以看出,不同业务模式下,由于业务或设备管理的需求不同,可以由不同的服务器设备承担S320、S330及S340步骤的执行主体。图4a中,第一服务器承担收集流媒体数据的角色(类似与传统直播系统中的直播服务器的角色),第二服务器承担将流媒体数据拆分成数据包的角色,后文可以将承担拆分数据包角色的服务器称为切片服务器,第三服务器作为向对等节点(本申请实施例提出的对等节点均指P2P网络中的观众客户端)分发数据包的角色(例如,类似于传统的CDN服务器)。图4b中,第一服务器集成了收集流媒体数据和拆分数据包的功能,第二服务器作为分发数据包的服务器。图4c中,服务器将收集流媒体数据、拆分数据包、分发数据包的功能集于一体。需要指出,除了图4a、图4b、图4c所列举的示例以外,并不排除有其他形式的网络架构或服务器功能。
本申请实施例提出的数据包封装,可以使拆分后的数据包能够被观众客户端接收后有序组装以及观众客户端之间形成对等节点后能够交互数据包,服务器可以为每个数据包编号,作为描述每个数据包唯一标识的字段,本申请实施例中将所述描述每个数据包唯一性的字段称为第一标识,一些例子中,本申请提出的第一标识可以是同一流媒体数据中区分其他数据包的唯一标识。某些例子中,可以通过自定义数据包的格式来实现此目的,自定义的格式中可以规定特定字段作为此第一标识。例如,参照图4d,为本申请实施例示例性示出的一种自定义数据包的格式,所述第一字段441用于描述数据包的长度,所述第二字段442写入数据包的第一标识,所述第三字段443为数据包的内容,其中,所述第一标识可以为预定位数的编号,例如32位,并且所述编号具有连续且自增一的特点,例如:编号为10002的数据包的前一数据包的编号为10001,后一数据包的编号为10003。当然,并不排除其他方式来实现表征数据包唯一性的目的。
一些例子中,为了数据包能够广泛散布在P2P网络的各对等节点上,以便对等节点之间相互传输数据包,服务器可以将数据包发送给观看某个主播的制作的流媒体数据的每个观众客户端。当然,设计者也可以针对不同的业务场景设置不同的策略,例如,服务器可以只发送给指定的其中一些观众客户端。
在一个例子中,观众客户端可以向服务器主动请求,告知服务器所在直播间标识(包括:共享资源的标识、直播间ID、频道号、所在直播间主播ID和/或观众客户端标识),所述直播间标识用于表征流媒体数据的唯一性。例如,可以是服务器接收到观众客户端向服务器发送获取流媒体数据的指令后,执行步骤S340,所述获取流媒体数据的指令可以携带观众客户端的直播间标识,服务器根据观众客户端所在直播间标识来确定将数据包发送给哪些观众客户端。需要说明的是,若观众客户端仅通知服务器观众客户端标识,服务器可以通过所述观众客户端标识确定所述观众客户端所在的直播间。
构建P2P网络时,不同的应用实例中,建立连接通道的方式可以有所不同。例如,一些例子中可以参照现有技术的P2P网络中对等节点建立UDP通道的方式来实现;另一些例子中,可以针对实际的场景设计新的流程。例如,所有的观众客户端向服务器发起注册请求,将所在直播间标识以及建立连接所必须的信息(例如网络连接地址、端口号等)通知给服务器,这些信息可以携带在注册请求中、也可以以在其他消息中发送给服务器。服务器基于客户端所在直播间标识,在满足建立P2P网络的条件下,服务器通知在同一直播间的观众客户端之间需要建立P2P网络连接,形成对等节点。
服务器通知各观众客户端构建P2P网络的时机本申请并不作限定,可以在服务器接收到观众客户端发送的获取流媒体数据的指令后即通知各观众客户端,通知各观众客户端,可以是在服务器收到观众客户端的直播间标识后即通知各观众客户端,也可以是在向观众客户端传输一段时间数据包后再通知各观众客户端,还可以是接收到观众客户端发起的请求建立P2P网络的请求后即通知各观众客户端。作为一个例子,可以是观众客户端判断是否满足预先设定的建立P2P网络的条件,当满足条件时向服务器发送构建P2P网络的请求,服务器接收到上述请求后,根据所述观众客户端所在直播间的标识将在同一直播间的观众客户端汇聚成P2P网络。
在实际应用中,同一直播间中的观众客户端会根据自身的网络情况或终端设备的性能,选择适合的分辨率参数的视频流进行观看,所述分辨率参数用于表征流媒体数据对应的视频的清晰度,可以包括:普清、标清、高清、超清及蓝光等等级。不同分辨率等级的流媒体数据需要进行转换,并且低分辨率的流媒体数据无法转换成高分辨率的流媒体数据。在一些例子中,为了保证P2P网络中各观众客户端交互数据包(传输数据包)的效率,同一直播间中可以有多个P2P网络,所述P2P网络中的各观众客户端播放的流媒体数据的分辨率参数相同。该实施例通过将在同一直播间且播放同一分辨率等级的流媒体数据的观众客户端归于同一P2P网络,可以提高P2P网络中各观众客户端交互数据包的效率,减少延时。
在一些例子中,当所述观众客户端转换直播间或更新播放流媒体数据的分辨率参数时,所述观众客户端重新与其他观众客户端建立P2P网络。具体可以是:观众客户端转换直播间或更新播放流媒体数据的分辨率参数时,会向服务器发送消息,当服务器接收到观众客户端转换直播间或更新播放流媒体数据的分辨率参数的消息时,按照同一直播间的观众客户端属于同一P2P网络,或同一直播间种观看流媒体数据的分辨率参数相同的观众客户端属于同一P2P网络的原则,调整P2P网络,形成新的P2P网络。
在所述步骤S210中,根据观众客户端选择播放的流媒体数据的分辨率参数,和/或所述观众客户端与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,例如确定从其他观众客户端及服务器获取的数据包的比例,一般情况下,从服务器获取数据包的比例,正相关于所述选择播放的流媒体数据的分辨率;反相关于所述与P2P网络中的其他观众客户端之间的网络状态,即选择播放的流媒体数据的分辨率越高,从服务器获取数据包的比例越大;与P2P网络中的其他观众客户端之间的网络状态越差,从服务器获取数据包的比例越大。上述通过服务器辅助P2P网络进行数据包传输,可以由服务器动态地辅助P2P网络中的观众客户端进行数据传输,以缓解P2P网络中其他对等的节点的网络上行压力。可以理解,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包可以按照预设的时间周期执行,也可以仅在所述观众客户端与其他观众客户端建立P2P网络时执行,也可以是在所述观众客户端更换播放的流媒体数据的分辨率参数时执行,也可以是在所述观众客户端与与P2P网络中的其他观众客户端之间的网络状态的变化值达到预设值时执行,本申请并不限制上述根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包的执行时机。
在一些例子中,所述第一标识可以是预定位数的编号,可以用各数据包的编号对预设除数进行求余,根据求余的余数确定各数据包的分组。例如:一流媒体数据被拆分成了编号为1-20的数据包,预设除数为5,用各数据包的编号对5进行求余,例如编号为1,1/5的余数是1,余数为1的都属于第一组,所以编号为1的数据包属于第一组,以此类推,可以确定各数据包的分组情况。在一些例子中,所述预设除数可以根据流媒体数据的码率或分辨率或承担分发数据包任务的服务器的数量确定,具体求余的策略不做限定。将数据包分组后,服务器可以基于分组将数据包分发给观众客户端,例如,由多个服务器分别将不同组的数据包发送给观众客户端,以提高数据传输效率,及增加观众客户端播放流媒体数据的起播速度。
在步骤S220中,服务器将数据包分组后,并且P2P网络获取所述数据包后,可以结合图5,执行步骤S220,具体如下:
所述观众客户端510与其他观众客户端520建立P2P网络,所述服务器530可以通过网络给所述P2P网络中的观众客户端510及其他观众客户端520分发数据包,当观众客户端510根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定了从其他观众客户端520获取的数据包的分组号或第一标识,及确定了从服务器530获取的数据包的分组号或第一标识后,按照上述确定后的结果,从拥有所述数据包的其他观众客户端520及服务器530获取指定的数据包。可以将从其他观众客户端520获取的指定的数据包称为第一类数据包,从服务器530获取的指定的数据包称为第二类数据包,在一些例子中,所述第一类数据包与所述第二类数据包属于不同的分组,例如:预设除数为5,根据求余结果,数据包将被分为5组,第一类数据包为求余后余数为0-3的数据包;第二类数据包为求余后余数为4-5的数据包。如此,可以进一步提高数据传输效率,使观众客户端客户端更快的打开/播放所述流媒体数据。例如所述视频数据由多帧图像帧组成,而本申请将每帧图像帧拆分成若干数据包,当服务器与其他观众客户端同时向观众客户端发送每帧图像的不同数据包时,客户端可以更快组装得到每一帧图像,相比于服务器发送连续几帧图像帧拆分成的数据包,其他观众客户端发送其他连续几帧图像帧拆分成的数据包的方式,可以更好地提高观众客户端的起播速度,减少延时。当然,可以理解,上述第一类数据包可以从一个或多个服务器获取,上述第二类数据包可以从P2P网络中的一个或多个其他客户端获取。
当然,由于直播场景对数据传输的实时性和稳定性要求高,因此可以是服务器先将部分数据包发送给各个客户端,使得客户端在能够保证及时播放的前提,在观众客户端播放流媒体数据的同时,从其他观众客户端及服务器接收其他编号(第一标识)的数据包。本段实施例所述的方式可以发生在观众客户端与其他观众客户端建立了P2P网络后。
图6是一个直播场景下的网络环境。图6的网络中主播客户端与直播服务器建立TCP连接通道,直播服务器与切片服务器相连,切片服务器与CDN服务器相连,观众客户端610、611、612及613可以通过网络向CDN服务器获取数据包,其中,观众客户端610、611及612与主播客户端属于同一直播间,观众客户端613属于其他直播间。参照图7,为本申请示例性示出的一种流媒体数据传输方法的流程图。
S700,为观众客户端注册阶段。
以观众客户端611为例,3向直播服务器注册时,将本端设备的IP地址、客户端的端口号、所在直播间的标识发送给直播服务器。登录直播平台的所有观众客户端均会向直播服务器注册。
S701,主播客户端将流媒体数据发送给直播服务器,直播视频流携带相应的直播间标识。
S702,直播服务器在收到主播客户端发送的流媒体数据后,转发给切片服务器。
S703,切片服务器将直播视频流切割成1KB大小的数据包,并将每个数据包按照自定义的格式封装。
S704,封装后的数据包被切片服务器发送给CDN服务器。
所述CDN服务器的数量可以是多个。
观众客户端610、611及612向CDN服务器请求所需要获取的流媒体数据后,S705a,CDN服务器将数据包发送给其他观众客户端。例如:观众客户端610和612;S705b,CDN服务器将数据包发送给观众客户端611。
为了保证直播视频流播放的及时性,CDN服务器在将数据包发送给客户端一段时间后,直播服务器根据直播间标识,通知在同一直播间的观众客户端611及其他观众客户端(如:观众客户端610和612)执行步骤S706,建立P2P网络。
建立P2P网络后,其他观众客户端(如:观众客户端610和612)可以继续从服务器获取数据包。
S707,观众客户端611根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端(例如:观众客户端610及观众客户端612)之间的网络状态,确定从观众客户端610(或观众客户端612)及CDN服务器获取的数据包。
例如观众客户端610、611及612均播放超清的流媒体数据,且观众客户端610与观众客户端611及612之间的网络状态均一般,可能P2P网络中还有其他很多对等节点向观众客户端611及612请求数据包,为了减轻观众客户端611及612的上行压力,可以规定观众客户端610向服务器请求更多的数据包(如第一类数据包),而观众客户端611及612提供小部分数据包(如第二类数据包),所述第一类数据包可能与第二类数据包属于不同的分组。
根据上述确定后的结果,S708a,观众客户端611从观众客户端610(或观众客户端612)获取指定的数据包;
S708b,观众客户端611从CDN服务器获取指定的数据包。观众客户端611可以根据接收到的指定的数据包的第一标识,组装得到用户播放的流媒体数据。
与前述流媒体数据传输的方法的实施例相对应,本申请还提供了流媒体数据传输装置800的实施例。
请参考图8,流媒体数据传输装置800,包括:
确定模块801,用于与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
获取模块802,用于从所述其他观众客户端及服务器分别获取指定的数据包。
在一些例子中,所述P2P网络中的各观众客户端属于同一直播间;或
所述P2P网络中的各观众客户端属于同一直播间,且播放的流媒体数据的分辨率参数相同。
在一些例子中,当所述观众客户端转换直播间或更新播放流媒体数据的分辨率参数时,所述观众客户端重新与其他观众客户端建立P2P网络。
在一些例子中,所述其他观众客户端从所述服务器获取所述数据包;
其中,所述数据包被分为若干组,所述分组根据各数据包的第一标识求余后的余数确定,所述第一标识为预定位数的编号。
在一些例子中,所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包,获取模块802具体用于:
所述观众客户端从其他观众客户端获取第一类数据包,从服务器获取第二类数据包,所述第一类数据包与所述第二类数据包属于不同的分组。
在一些例子中,所述数据包的大小为1KB。
在一些例子中,所述观众客户端与其他观众客户端建立P2P网络,之前,获取模块,还用于从所述服务器获取数据包;
所述观众客户端待获取数据包达到的时间或数据包长度达到预设条件时,所述观众客户端与其他观众客户端建立P2P网络。
图8中流媒体数据的传输装置的实施例可以应用在客户端设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在客户端设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,为本申请流媒体数据的传输装置所在客户端设备的一种硬件结构图,除了图9所示的处理器901、内存905、网络接口904、内部总线903以及非易失性存储器902之外,实施例中装置所在的客户端设备通常根据该设备的实际功能,还可以包括其他硬件,比如摄像头、麦克风等,对此不再赘述。处理器被用于执行以下程序:
与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
从所述其他观众客户端及服务器分别获取指定的数据包。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
在本申请实施例中,计算机可读存储介质可以是多种形式,比如,在不同的例子中,所述机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。特殊的,所述的计算机可读介质还可以是纸张或者其他合适的能够打印程序的介质。使用这些介质,这些程序可以被通过电学的方式获取到(例如,光学扫描)、可以被以合适的方式编译、解释和处理,然后可以被存储到计算机介质中。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种流媒体数据传输方法,其特征在于,所述方法包括步骤:
观众客户端与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包;
其中,从服务器获取的数据包的比例,正相关于所述流媒体数据的分辨率,和/或,反相关于与所述其他观众客户端之间的网络状态。
2.根据权利要求1所述的方法,其特征在于,所述P2P网络中的各观众客户端属于同一直播间;或
所述P2P网络中的各观众客户端属于同一直播间,且播放的流媒体数据的分辨率参数相同。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述观众客户端转换直播间或更新播放流媒体数据的分辨率参数时,所述观众客户端重新与其他观众客户端建立P2P网络。
4.根据权利要求1所述的方法,其特征在于,所述其他观众客户端从所述服务器获取所述数据包;
其中,所述数据包被分为若干组,所述分组根据各数据包的第一标识求余后的余数确定,所述第一标识为预定位数的编号。
5.根据权利要求4所述的方法,其特征在于,所述观众客户端从所述其他观众客户端及服务器分别获取指定的数据包,包括:
所述观众客户端从其他观众客户端获取第一类数据包,从服务器获取第二类数据包,所述第一类数据包与所述第二类数据包属于不同的分组。
6.根据权利要求1至5任一一项所述的方法,其特征在于,所述数据包的大小为1KB。
7.根据权利要求1所述的方法,其特征在于,所述观众客户端与其他观众客户端建立P2P网络,所述方法还包括步骤:
所述观众客户端从所述服务器获取数据包;
所述观众客户端待获取数据包达到的时间或数据包长度达到预设条件时,所述观众客户端与其他观众客户端建立P2P网络。
8.一种流媒体数据传输装置,其特征在于,包括:
确定模块,用于与其他观众客户端建立P2P网络后,根据本端播放流媒体数据的分辨率参数和/或与P2P网络中的其他观众客户端之间的网络状态,确定从其他观众客户端及服务器获取的数据包,其中,所述数据包由流媒体数据拆分得到,并且所述数据包按照自定义的格式封装,自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;其中,从服务器获取的数据包的比例,正相关于所述流媒体数据的分辨率,和/或,反相关于与所述其他观众客户端之间的网络状态;
获取模块,用于从所述其他观众客户端及服务器分别获取指定的数据包。
9.一种终端设备,其特征在于,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如所述权利要求1至7所述任一一项方法所述的操作。
10.一种计算机存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现权利要求1至7任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810771750.7A CN108924609B (zh) | 2018-07-13 | 2018-07-13 | 流媒体数据传输的方法、电子设备、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810771750.7A CN108924609B (zh) | 2018-07-13 | 2018-07-13 | 流媒体数据传输的方法、电子设备、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108924609A CN108924609A (zh) | 2018-11-30 |
CN108924609B true CN108924609B (zh) | 2021-06-29 |
Family
ID=64411084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810771750.7A Active CN108924609B (zh) | 2018-07-13 | 2018-07-13 | 流媒体数据传输的方法、电子设备、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108924609B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111526376A (zh) * | 2019-02-01 | 2020-08-11 | 广州虎牙信息科技有限公司 | 拉流调度的方法、拉流的方法及装置 |
CN111586112B (zh) * | 2020-04-23 | 2022-04-15 | 合肥联宝信息技术有限公司 | 一种数据传输方法、装置以及计算机可读存储介质 |
CN113965769B (zh) * | 2021-10-19 | 2023-08-08 | 创盛视联数码科技(北京)有限公司 | 一种在线教育的直播系统 |
CN113992660A (zh) * | 2021-10-29 | 2022-01-28 | 维沃移动通信有限公司 | 文件传输方法、装置、电子设备及存储介质 |
CN115314738B (zh) * | 2022-08-15 | 2024-04-26 | 城云科技(中国)有限公司 | 对hook的数据添加标签处理拉流的方法及装置 |
CN115865941A (zh) * | 2023-02-15 | 2023-03-28 | 花瓣云科技有限公司 | 丢包重传方法、分组确定方法、装置、设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101237429A (zh) * | 2008-02-25 | 2008-08-06 | 蓝汛网络科技(北京)有限公司 | 基于内容分发网络的流媒体直播系统、方法及装置 |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及系统 |
CN102387072A (zh) * | 2011-10-15 | 2012-03-21 | 西安交通大学 | 一种支持异构终端与异构网络环境的应用层组播方法 |
CN102883216A (zh) * | 2011-07-14 | 2013-01-16 | 上海聚力传媒技术有限公司 | 一种视频直播方法与设备 |
CN105392068A (zh) * | 2015-11-04 | 2016-03-09 | 合一网络技术(北京)有限公司 | 分布式多传输信道网络直播视频并行分发方法及系统 |
CN105635755A (zh) * | 2015-12-30 | 2016-06-01 | 合一网络技术(北京)有限公司 | 直播流传输方法和装置 |
CN105848011A (zh) * | 2016-03-31 | 2016-08-10 | 乐视控股(北京)有限公司 | 一种视频直播方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2429222B1 (es) * | 2011-05-12 | 2014-06-05 | Telefónica, S.A. | Método y nodo de extremo para distribuir flujo continuo de contenido en tiempo real en una red de distribución de contenido |
-
2018
- 2018-07-13 CN CN201810771750.7A patent/CN108924609B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101237429A (zh) * | 2008-02-25 | 2008-08-06 | 蓝汛网络科技(北京)有限公司 | 基于内容分发网络的流媒体直播系统、方法及装置 |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及系统 |
CN102883216A (zh) * | 2011-07-14 | 2013-01-16 | 上海聚力传媒技术有限公司 | 一种视频直播方法与设备 |
CN102387072A (zh) * | 2011-10-15 | 2012-03-21 | 西安交通大学 | 一种支持异构终端与异构网络环境的应用层组播方法 |
CN105392068A (zh) * | 2015-11-04 | 2016-03-09 | 合一网络技术(北京)有限公司 | 分布式多传输信道网络直播视频并行分发方法及系统 |
CN105635755A (zh) * | 2015-12-30 | 2016-06-01 | 合一网络技术(北京)有限公司 | 直播流传输方法和装置 |
CN105848011A (zh) * | 2016-03-31 | 2016-08-10 | 乐视控股(北京)有限公司 | 一种视频直播方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108924609A (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108924609B (zh) | 流媒体数据传输的方法、电子设备、装置及存储介质 | |
CN109474684B (zh) | 一种获取直播视频流的方法、装置、终端设备及存储介质 | |
CN109640348B (zh) | 多业务mec网络架构、多业务数据流的处理方法及装置 | |
CN109151497B (zh) | 一种连麦直播方法、装置、电子设备及存储介质 | |
CN109560901B (zh) | 一种数据重传方法、装置、终端设备及存储介质 | |
WO2020192152A1 (zh) | 视频传输的方法、根节点、子节点、p2p服务器和系统 | |
WO2017088381A1 (zh) | 一种直播视频的播放方法、装置及系统 | |
US20170155695A1 (en) | Method, device and system for uploading live video | |
CN108833591B (zh) | P2p网络中数据传输的方法、电子设备、装置、网络架构 | |
WO2017088383A1 (zh) | 一种直播视频的播放方法、装置及系统 | |
RU2647654C2 (ru) | Система и способ доставки аудиовизуального контента в клиентское устройство | |
CN109561137B (zh) | 建立p2p网络的方法、装置、终端设备及介质 | |
CN110445723B (zh) | 一种网络数据调度方法及边缘节点 | |
US11539919B1 (en) | Dynamic cloud video composition | |
CN108200444B (zh) | 一种视频直播的方法、装置和系统 | |
CN108965428A (zh) | 直播数据的传输方法、装置、电子设备、系统 | |
CN110191315B (zh) | 一种基于视联网的监控查看方法和装置 | |
WO2023061060A1 (zh) | 音视频码流的调度方法、系统、介质及电子装置 | |
CN110113306A (zh) | 分发数据的方法和网络设备 | |
CN103716681A (zh) | 一种码流切换方法及电子设备 | |
Zhang et al. | MMCSACC: A multi-source multimedia conference system assisted by cloud computing for smart campus | |
CN111193936B (zh) | 视频流传输方法、装置、电子设备及计算机可读存储介质 | |
CN109510868B (zh) | 一种建立p2p网络的方法、装置、终端设备及存储介质 | |
KR102162851B1 (ko) | 인기 있는 라이브 방송 비디오를 결정하는 방법 및 디바이스 | |
KR20160138044A (ko) | 미디어 데이터를 스트리밍하기 위한 목표된 광고 삽입 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |