CN112153322B - 数据分发方法、装置、设备及存储介质 - Google Patents
数据分发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112153322B CN112153322B CN202011009092.1A CN202011009092A CN112153322B CN 112153322 B CN112153322 B CN 112153322B CN 202011009092 A CN202011009092 A CN 202011009092A CN 112153322 B CN112153322 B CN 112153322B
- Authority
- CN
- China
- Prior art keywords
- time domain
- domain layer
- data packet
- rtp
- rtp data
- 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
Images
Classifications
-
- 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
- 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/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
- H04N21/6437—Real-time Transport Protocol [RTP]
Abstract
本公开实施例公开了一种数据分发方法、装置、设备及存储介质。包括:获取音视频序列;对音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,RTP数据包序列中包括至少一个RTP数据包;基于RTP数据包序列中的各个RTP数据包,从RTP数据包序列所涉及的各个时域层中确定目标时域层;将RTP数据包序列中所属的时域层对应的时域层号小于或等于目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对时域层进行编号,时域层越晚显示,时域层越高,对应的时域层号越大。本公开实施例提供的数据分发方法,实现了下行带宽的有效控制,大大提高了数据分发的流畅性,提高了用户体验。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种数据分发方法、装置、设备及存储介质。
背景技术
随着网络视频服务的不断发展和普及,用户对视频服务中视频播放的流畅性的要求越来越高。在一对多的视频会议中,通常是将一路上行数据分发给多路下行使用,在将上行数据分发给多路下行使用的过程中,服务server侧通常需要进行解码再编码操作,这样不仅会大量消耗server侧性能,而且会增加server时延。另外,当下行带宽比较小的时候,容易造成下行播放的视频卡顿,严重影响了用户体验。
发明内容
本公开实施例提供一种数据分发方法、装置、设备及存储介质,可以有效提高数据分发的流畅性,实现了下行带宽的有效控制。
第一方面,本公开实施例提供了一种数据分发方法,包括:
获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;
对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;
基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;
将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。
第二方面,本公开实施例还提供了一种数据分发装置,包括:
音视频序列获取模块,用于获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;
RTP数据包序列生成模块,用对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;
目标时域层确定模块,用于基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;
RTP数据包分发模块,用于将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。
第三方面,本公开实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理装置;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现如本公开实施例所述的数据分发方法。
第四方面,本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现如本公开实施例所述的数据分发方法。
本公开实施例,获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。本公开实施例提供的数据分发方法,实现了下行带宽的有效控制,大大提高了数据分发的流畅性,提高了用户体验。
附图说明
图1是本公开一实施例中的一种数据分发方法的流程图;
图2是本公开一实施例提供的一种时域分层的结构示意图;
图3是本公开一实施例提供的RTP数据包的头信息的示意图;
图4是本公开另一实施例中的一种数据分发方法的流程图;
图5是本公开另一实施例中的一种数据分发装置的结构示意图;
图6是本公开另一实施例中的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1为本公开一实施例提供的一种数据分发方法的流程图,本公开实施例可适用于对数据进行分发的情况,该方法可以由数据分发装置来执行,该装置可由硬件和/或软件组成,并一般可集成在具有数据分发功能的设备中,该设备可以是服务器、移动终端或服务器集群等电子设备。如图1所示,该方法具体包括如下步骤:
步骤110,获取音视频序列。
其中,所述音视频序列包括至少一帧音视频数据。
具体的,可分层视频编码(Scalable Video Coding,SVC)是一种能将视频流分割成不同帧率、分辨率和视频质量的视频压缩码流的技术。SVC根据不同的视频质量需求将视频流分割为一个基础层和多个增强层。基础层为用户提供最基本的视频质量、帧率和分辨率。基础层可以独立解码,增强层依赖于基础层进行解码。264编码器提供了基于时域分层的功能,图2为本公开实施例提供的一种时域分层的结构示意图。如图2所示,将音视频流分割为了4层(分别为0,1,2,3层),其中,图2中,T0,T1,T2,T3分别代表0,1,2,3层,1层参考0层,2层参考1,0层,3层参考2,1,0层。可以理解的是,0层为基础层,可为用户提供最基本的视频质量、帧率和分辨率,可独立解码;1层参考0层,也即1层基于0层的视频质量、帧率及分辨率等相关信息进行解码;2层参考1,0层,也即2层基于0层和1层的视频质量、帧率及分辨率等相关信息进行解码;依次类推,3层参考2,1,0层,也即3层基于0层、1层和2层的视频质量、帧率及分辨率等相关信息进行解码。
在本公开实施例中,获取音视频序列,其中,音视频序列中包括至少一帧音视频数据,其中,音视频数据可以为基于264编码压缩后的音视频数据。当获取的音视频数据为多帧时,多帧音视频数据为连续的音视频序列,且音视频序列中各个音视频帧间的参考关系是固定的,例如,音视频帧间的参考关系可以如图2所示。
步骤120,对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包。
在本公开实施例中,对获取的至少一帧音视频数据进行分包处理,生成实时传输协议(Real-time Transport Protocol,RTP)数据包序列,其中,在RTP数据包序列中包括至少一个RTP数据包。在对音视频数据进行分包处理的过程中,一帧音视频数据可以分成至少一个RTP数据包。其中,具体可以根据每帧音视频数据的大小,确定每帧音视频数据分成的RTP数据包的数量,通常,音视频数据帧越大,对应分成的RTP数据包相对越多。例如,获取10帧连续的音视频数据,每帧音视频数据可以分为10个RTP数据包,则对这10帧音视频数据进行分包处理后,共可生成100个RTP数据包,而这100个RTP数据包按照音视频序列的顺序排列,生成RTP数据包序列。需要说明的是,对多帧音视频数据进行分包处理时,每帧音视频数据分成的RTP数据包的数量和大小可以相同,也可以不同,本公开实施例对此不做限定。
具体的,对音视频数据进行分包处理生成的每个RTP数据包中,均包括数据包头信息,其中,头信息包括基本头信息和拓展头信息。图3为本公开实施例提供的RTP数据包的头信息的示意图。如图3所示,310中的信息为RTP数据包头信息中的基本头信息,320中的信息为RTP数据包头信息中的拓展头信息。在基本头信息中,S表示当前RTP数据包(头信息所属的RTP数据包)是不是当前RTP数据包所属的音视频数据帧的第一个RTP数据包,其中,当S取值为1时,表示当前RTP数据包为当前RTP数据包所属的音视频数据帧的的第一个RTP数据包;当S取值为0时,表示当前RTP数据包不是当前RTP数据包所属的音视频数据帧的第一个RTP数据包。E表示当前RTP数据包(头信息所属的RTP数据包)是不是当前RTP数据包所属的音视频数据帧的最后一个RTP数据包,其中,当E取值为1时,表示当前RTP数据包为当前RTP数据包所属的音视频数据帧的最后一个RTP数据包;当E取值为0时,表示当前RTP数据包不是当前RTP数据包所属的音视频数据帧的最后一个RTP数据包。每个RTP数据包均包含一个TID值,当TID相同时,表示RTP数据包属于同一帧音视频数据,也即,由同一帧音视频数据分包生成的多个RTP数据包的头信息中的TID值相同。TL0PICIDX表示当前RTP数据包所属的时域层对应的时域层号,如TL0PICIDX=0,表示当前RTP数据包属于时域层T0的音视频数据,也即当前RTP数据包是由时域层T0的某帧音视频数据分包生成的;TL0PICIDX=2,表示当前RTP数据包属于时域层T2的音视频数据,也即当前RTP数据包是由时域层T2的某帧音视频数据分包生成的。
对RTP数据包的头信息进行拓展,生成拓展头信息。在拓展头信息中,添加了音视频数据的时域信息,其中,时域信息包括划分的时域层的数量以及各个时域层的序列号。示例性的,基于264编码对所述音视频数据划分为了3个时域层,则在如图3所示的RTP数据包的拓展头信息中,包括T-Seq0,T-Seq1及T-Seq2三个序列号信息,其中,T-Seq0表示第0层(时域层T0)的序列号信息,T-Seq1表示第1层(时域层T1)的序列号信息,T-Seq2表示第2层(时域层T2)的序列号信息,max_t_layer表示划分的时域层的数量,在这里max_t_layer的取值为3。
步骤130,基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层。
具体的,RTP数据包序列所涉及的各个时域层可以理解为基于264编码进行时域分层时,所划分的各个时域层。以图2所划分为四个时域层为例,RTP数据包序列所涉及的各个时域层包括时域层T0,时域层T1,时域层T2及时域层T3。
可选的,基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层,包括:对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层;分别根据各个时域层所涉及的RTP数据包,确定各个时域层的带宽值;获取当前时刻下行的带宽估计值;根据各个时域层的带宽值以及所述带宽估计值,从所述各个时域层中确定目标时域层。
具体的,对步骤120生成的各个RTP数据包进行解析,分别确定每个RTP数据包所属的时域层。可选的,对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层,包括:对所述RTP数据包序列中的各个RTP数据包的头信息进行解析,确定各个RTP数据包所属的时域层。
例如,对RTP数据包的头信息中的字段TL0PICIDX进行解析,根据解析结果确定RTP数据包所属的时域层。需要说明的是,每个RTP数据包所属的时域层是唯一的,而每个时域层所包含的RTP数据包可以为多个。对各个时域层所涉及的RTP数据包进行统计,根据各个时域层所涉及的RTP数据包确定各个时域层的带宽值,如分别将各个时域层所涉及的RTP数据包的大小求和,将求和后的值作为对应的时域层的带宽值。例如,对时域层T2的带宽值进行计算时,在所有的RTP数据包中确定属于时域层T2的RTP数据包,并对属于时域层T2的RTP数据包的大小求和,从而确定出时域层T2的带宽值。
在本公开实施例中,获取当前时刻下行的带宽估计值,其中,带宽估计值可以理解为将音视频数据分发给客户端时,下行带宽的估计值。可选的,获取当前时刻下行的带宽估计值,包括:响应于当前时刻下行的带宽估计值获取请求,获取用户输入的带宽估计值。示例性的,当接收到当前时刻下行的带宽估计值获取请求时,将用户输入的数值作为当前时刻下行的带宽估计值。根据确定的各个时域层的带宽值以及带宽估计值,从各个时域层中确定目标时域层。其中,目标时域层为RTP数据包序列所涉及的各个时域层中的一个时域层,且目标时域层的带宽值与比目标时域层低的其他时域层的带宽值的和,小于带宽估计值,而比目标时域层高的时域层与目标时域层以及比目标时域层低的其他时域层的带宽值的和,大于带宽估计值。示例性的,在RTP数据包所涉及的各个时域层中,按照时域层从高到低(也即时域层对应的时域层号从大到小)的顺序进行遍历,计算当前时域层及比当前时域层低的其他所有时域层的带宽值的和,并将带宽值的和与用户输入的带宽估计值进行比较,直至确定出所述带宽值的和小于或等于带宽估计值的时域层为止,并将该时域层作为目标时域层。例如,RTP数据包所涉及的各个时域层包括时域层T0,时域层T1,时域层T2及时域层T3,各个时域层对应的带宽值分别为D0,D1,D2,D3,则首先计算时域层T3与比时域层T3低的时域层(时域层T0,时域层T1,时域层T2)的带宽值的和,也即计算时域层T0,T1,T2,T3的带宽值的和,也即计算D0+D1+D2+D3,并判断D0+D1+D2+D3是否小于或等于用户输入的带宽估计值Dt。若D0+D1+D2+D3≤Dt,则可直接将时域层T3作为目标时域层,若D0+D1+D2+D3>Dt,则进一步计算时域层T2与比时域层T2低的时域层(时域层T0,时域层T1)的带宽值的和,也即计算时域层T0,T1,T2的带宽值的和,也即计算D0+D1+D2,并判断D0+D1+D2是否小于或等于用户输入的带宽估计值Dt。若D0+D1+D2≤Dt,则可直接将时域层T2作为目标时域层,若D0+D1+D2>Dt,则进一步计算时域层T1与比时域层T1低的时域层(时域层T0)的带宽值的和,也即计算时域层T0,T1的带宽值的和,也即计算D0+D1,并判断D0+D1是否小于或等于用户输入的带宽估计值Dt。若D0+D1≤Dt,则可直接将时域层T1作为目标时域层,若D0+D1>Dt,则进一步判断时域层T0的带宽值D0是否小于或等于用户输入的带宽估计值Dt,若是,则可直接将时域层T0作为目标时域层。
步骤140,对所述RTP数据包序列中的各个RTP数据包的头信息进行解析,确定各个RTP数据包所属的时域层;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。
示例性的,如图2所示,图2中各个时域层显示的先后顺序依次为T0,T1,T2,T3,则可对时域层T0,T1,T2,T3进行编号,且时域层T0,T1,T2,T3的时域层序号依次增大,如可将时域层T0,T1,T2,T3的时域层号分别设置为0,1,2,3。需要说明的是,还可以将时域层T0,T1,T2,T3编号为其他序号,只要满足时域层越晚显示,对应的时域层号越大,时域层越早显示,对应的时域层号越小即可。如还可将时域层T0,T1,T2,T3的时域层号分别设置为1,2,3,4。
具体的,针对各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于通过步骤130确定的目标时域层对应的时域层号,若是,则可直接将当前RTP数据包分发至客户端。可选的,当当当前RTP数据包所属的时域层对应的时域层号大于目标时域层对应的时域层号时,则直接将当前RTP数据包丢弃。可以理解的是,在对压缩的音视频数据分发至客户端时,由于下行带宽的限制,根据下行带宽的大小选择合理的时域层的数据进行下发,以实现下行带宽的有效控制,同时音视频数据分发的流程性,因此,可将RTP数据包所属的时域层对应的时域层号小于或等于目标时域层对应的时域层号的RTP数据包下发至客户端,而将RTP数据包所属的时域层对应的时域层号大于目标时域层对应的时域层号的RTP数据包丢弃,也即不分发至客户端,也即将时域层号小于或等于目标时域层对应的时域层号的时域层的音视频数据分发至客户端,而将时域层号大于目标时域层对应的时域层号的时域层的音视频数据丢弃。
本公开实施例的技术方案,获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。本公开实施例提供的数据分发方法,实现了下行带宽的有效控制,大大提高了数据分发的流畅性,提高了用户体验。
在一些实施例中,在将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之前,还包括:确定当前下发的音视频数据所属的时域层对应的时域层号;将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端,包括:当当前下发的音视频数据所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,从所述RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包;针对RTP数据包子序列中的各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;其中,所述RTP数据包子序列以RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包为起始RTP数据包,以所述RTP数据包序列中的最后一个RTP数据包为终止RTP数据包;当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
可选的,当当前下发的音视频数据所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,针对各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
这样设置的好处在于,在确定好目标时域层后,进一步根据当前下发的音视频数据所属的时域层以及目标时域层确定是否直接进行不同时域层的音视频数据的切换操作,有效避免了切换时域分层的过程中的网络抖动以及帧破碎的问题,进一步提高了用户体验。
在本公开实施例中,当前正在下发的音视频数据可以理解为服务端正在发送至客户端的音视频数据,其中,当前正在下发的音视频数据可以为某个RTP数据包,也可以为某帧音视频数据。确定当前下发的音视频数据所属的时域层对应的时域层号,如,通过解析当前下发的音视频数据分包后的RTP数据包的头信息,根据头信息确定当前下发的音视频数据所属的时域层对应的时域层号。在针对步骤120分包生成的各个RTP数据包,判断是否将当前RTP数据包分发至客户端时,首先判断当前下发的音视频数据所属的时域层对应的时域层号是否大于目标时域层对应的时域层号,根据判断结果进一步确定是否将满足分发条件的RTP数据直接分发至客户端,也即根据判断结果进一步确定是否直接进行时域分层的音视频数据的切换。
具体的,若当前下发的音视频数据所属的时域层对应的时域层号大于目标时域层对应的时域层号,也即从较高时域层向较低时域层进行切换时,不直接进行时域分层的音视频数据的切换操作,需要从RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包,并且针对时域层号为0的第一RTP数据包以及RTP数据包序列中时域层号为0的第一RTP数据包之后的其他所有RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于目标时域层对应的时域层号,若是,则将当前RTP数据包分发至客户端。可选的,针对时域层号为0的第一RTP数据包以及RTP数据包序列中时域层号为0的第一RTP数据包之前的其他所有RTP数据包不再继续进行RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号的判断,不做任何处理操作。这样设置的好处在于,当从较高时域层向较低时域层进行切换时,从第一个0层的RTP数据包开始切换,可有效避免切换时域分层的过程中的网络抖动的问题。
在本公开实施例中,若当前下发的音视频数据所属的时域层对应的时域层号小于或等于目标时域层对应的时域层号时,也即从较低时域层向较高时域层进行切换时,可直接将时域层对应的时域层号小于或等于目标时域层对应的时域层号的RTP数据包分发至客户端,实现向高时域层切换时的立刻切换操作。
需要说明的是,在进行时域分层切换时,从被切换的那一帧音视频数据开始,一帧音视频数据分包生成的所有RTP数据包被完整的分发至客户端时,才算是正式完成一帧音视频数据的切换操作。
在一些实施例中,在判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号之前,还包括:将重传列表中记录的已下发的音视频数据清零。这样设置的好处在于,可以有效避免时域分层切换时带宽抖动产生的影响。具体的,重传列表nack list中存储有以前下发给客户端的音视频数据,当客户端未接收到一些音视频数据时,可以根据用户指令,从重传列表中读取需要重新下发的音视频数据,并将这些音视频数据重新下发至客户端,但这样突然增加需要重新下发的音视频数据,容易造成带宽抖动,因此,通过将重传列表中记录的已下发的音视频数据清零,这样可有效防止时域分层切换时带宽抖动产生的影响。
在一些实施例中,在将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之后,还包括:将所述目标时域层作为当前下发的音视频数据所属的时域层。可以理解的是,在将音视频序列分包生成的RTP数据包序列中,时域层对应的时域层号小于或等于目标时域层对应的时域层号的RTP数据包分发至客户端后,说明完成了时域分层的切换,因此,可将目标时域层作为当前下发的音视频数据的时域层,这样有助于下次进行时域分层切换时,向较高时域层还是向较低时域层的切换。
在一些实施例中,当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端包括,当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,记录当前RTP数据包的拓展头信息中的序列号,直至记录到属于同一帧音视频数据分包生成的最后一个RTP数据包时,将属于同一帧音视频数据的所有RTP数据包分发至客户端。这样设置的好处在于,可以有效保证同一帧音视频数据分发至客户端时的完整性,避免破碎帧的情况发生。
图4是本公开另一实施例中的一种数据分发方法的流程图,如图4所示,该方法包括如下步骤:
步骤410,获取音视频序列。
其中,所述音视频序列包括至少一帧音视频数据。
步骤420,对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包,所述RTP数据包中包括头信息。
其中,所述头信息包括基本头信息和拓展头信息。
步骤430,对所述RTP数据包序列中的各个RTP数据包的头信息进行解析,确定各个RTP数据包所属的时域层。
步骤440,分别根据各个时域层所涉及的RTP数据包,确定各个时域层的带宽值。
步骤450,根据各个时域层的带宽值以及用户输入的带宽估计值,从所述各个时域层中确定目标时域层。
步骤460,确定当前下发的音视频数据所属的时域层对应的时域层号。
步骤470,判断当前下发的音视频数据所属的时域层对应的时域层号是否大于所述目标时域层对应的时域层号,若是,则执行步骤480,否则执行步骤500。
步骤480,从所述RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包。
步骤490,针对RTP数据包子序列中的各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号,若是,则执行步骤510,否则执行步骤520。
其中,所述RTP数据包子序列以RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包为起始RTP数据包,以所述RTP数据包序列中的最后一个RTP数据包为终止RTP数据包。
可选的,对于RTP数据包序列中RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据以及该时域层号为0的第一个RTP包之前的的所有RTP数据包,不做任何处理,或可直接丢弃。
步骤500,针对各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号,若是,则执行步骤510,否则执行步骤520。
其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大
步骤510,将所述当前RTP数据包分发至客户端。
步骤520,将所述当前RTP数据包丢弃。
本公开实施例的技术方案,在从音视频序列分包生成的RTP数据包序列所涉及的时域层中,确定出目标时域层后,进一步判断当前下发的音视频数据所属的时域层的时域层号与目标时域的时域层号的大小关系,以确定时域分层是向较高时域层切换还是向较低时域层切换,当向较高时域层切换时,可直接将将时域层对应的时域层号小于或等于目标时域层对应的时域层号的RTP数据包分发至客户端,实现向高时域层切换时的立刻切换操作。而当从较高时域层向较低时域层进行切换时,从第一个0层的RTP数据包开始切换,可有效避免切换时域分层的过程中的网络抖动的问题。并且通过选择合理的时域层的数据进行下发,可将下行数据的传输速度控制在30ms以内,大大提高了对下行带宽的有效控制,尤其是在针对一对多的视频模式下,可以为每个用户的下行带宽的有效控制提供可能性。
图5为本公开另一实施例提供的一种数据分发装置的结构示意图。如图5所示,该装置包括:音视频序列获取模块530,RTP数据包序列生成模块540、目标时域层确定模块550和RTP数据包分发模块560。
音视频序列获取模块530,用于获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;
RTP数据包序列生成模块540,用对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;
目标时域层确定模块550,用于基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;
RTP数据包分发模块560,用于将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。
本公开实施例,获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。本公开实施例提供的数据分发方法,实现了下行带宽的有效控制,大大提高了数据分发的流畅性,提高了用户体验。
可选的,所述目标时域层确定模块,包括:
RTP数据包解析单元,用于对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层;
带宽值确定单元,用于分别根据各个时域层所涉及的RTP数据包,确定各个时域层的带宽值;
带宽估计值获取单元,用于获取当前时刻下行的带宽估计值;
目标时域层确定单元,用于根据各个时域层的带宽值以及所述带宽估计值,从所述各个时域层中确定目标时域层。
可选的,所述RTP数据包中包括头信息;
所述RTP数据包解析单元,用于:
对所述RTP数据包序列中的各个RTP数据包的头信息进行解析,确定各个RTP数据包所属的时域层。
可选的,所述带宽估计值获取单元,用于:
响应于当前时刻下行的带宽估计值获取请求,获取用户输入的带宽估计值。
可选的,所述装置还包括:
当前时域层号确定模块,用于在将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之前,确定当前下发的音视频数据所属的时域层对应的时域层号;
所述RTP数据包分发模块,用于:
当当前下发的音视频数据所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,从所述RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包;
针对RTP数据包子序列中的各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;其中,所述RTP数据包子序列以RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包为起始RTP数据包,以所述RTP数据包序列中的最后一个RTP数据包为终止RTP数据包;
当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
可选的,所述装置还包括:
时域层号比较单元,用于当当前下发的音视频数据所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,针对各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;
RTP数据包分发单元,用于当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
可选的,还包括:
重传列表清空模块,用于在判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号之前,将重传列表中记录的已下发的音视频数据清零。
可选的,所述装置还包括:
当前时域层更新模块,用于在将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之后,将所述目标时域层作为当前下发的音视频数据所属的时域层。
可选的,所述装置还包括:
RTP数据包丢弃模块,用于当当前RTP数据包所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,将所述当前RTP数据包丢弃。
上述装置可执行本公开前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本公开实施例中详尽描述的技术细节,可参见本公开前述所有实施例所提供的方法。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备300的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端,或者各种形式的服务器,如独立服务器或者服务器集群。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储装置(ROM)302中的程序或者从存储装置305加载到随机访问存储装置(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行词语的推荐方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置305被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;将所述RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开实施例的一个或多个实施例,本公开实施例提供了一种数据分发方法,包括:
获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;
对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;
基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;
将所述RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大。
进一步地,基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层,包括:
对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层;
分别根据各个时域层所涉及的RTP数据包,确定各个时域层的带宽值;
获取当前时刻下行的带宽估计值;
根据各个时域层的带宽值以及所述带宽估计值,从所述各个时域层中确定目标时域层。
进一步地,所述RTP数据包中包括头信息;
对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层,包括:
对所述RTP数据包序列中的各个RTP数据包的头信息进行解析,确定各个RTP数据包所属的时域层。
进一步地,获取当前时刻下行的带宽估计值,包括:
响应于当前时刻下行的带宽估计值获取请求,获取用户输入的带宽估计值。
进一步地,在将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之前,还包括:
确定当前下发的音视频数据所属的时域层对应的时域层号;
将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端,包括:
当当前下发的音视频数据所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,从所述RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包;
针对RTP数据包子序列中的各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;其中,所述RTP数据包子序列以RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包为起始RTP数据包,以所述RTP数据包序列中的最后一个RTP数据包为终止RTP数据包;
当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
进一步地,还包括:
当当前下发的音视频数据所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,针对各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;
当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
进一步地,在判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号之前,还包括:
将重传列表中记录的已下发的音视频数据清零。
进一步地,在将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之后,还包括:
将所述目标时域层作为当前下发的音视频数据所属的时域层。
进一步地,,还包括:
当当前RTP数据包所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,将所述当前RTP数据包丢弃。
注意,上述仅为本公开的较佳实施例及所运用技术原理。本领域技术人员会理解,本公开不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本公开的保护范围。因此,虽然通过以上实施例对本公开进行了较为详细的说明,但是本公开不仅仅限于以上实施例,在不脱离本公开构思的情况下,还可以包括更多其他等效实施例,而本公开的范围由所附的权利要求范围决定。
Claims (11)
1.一种数据分发方法,其特征在于,包括:
获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;
对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;
基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;
将所述RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大;
所述对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,包括:对获取的至少一帧音视频数据进行分包处理,生成RTP数据包序列,其中,根据每帧音视频数据的大小,确定每帧音视频数据分成的RTP数据包的数量;
在将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之前,还包括:
确定当前下发的音视频数据所属的时域层对应的时域层号;
将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端,包括:
当当前下发的音视频数据所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,从所述RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包,所述RTP数据包所属的时域层是对所述RTP数据包序列中的各个RTP数据包的头信息进行解析确定的;
针对RTP数据包子序列中的各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;其中,所述RTP数据包子序列以RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包为起始RTP数据包,以所述RTP数据包序列中的最后一个RTP数据包为终止RTP数据包;
当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
2.根据权利要求1所述的方法,其特征在于,基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层,包括:
对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层;
分别根据各个时域层所涉及的RTP数据包,确定各个时域层的带宽值;
获取当前时刻下行的带宽估计值;
根据各个时域层的带宽值以及所述带宽估计值,从所述各个时域层中确定目标时域层。
3.根据权利要求2所述的方法,其特征在于,所述RTP数据包中包括头信息;
对所述RTP数据包序列中的各个RTP数据包进行解析,确定各个RTP数据包所属的时域层,包括:
对所述RTP数据包序列中的各个RTP数据包的头信息进行解析,确定各个RTP数据包所属的时域层。
4.根据权利要求2所述的方法,其特征在于,获取当前时刻下行的带宽估计值,包括:
响应于当前时刻下行的带宽估计值获取请求,获取用户输入的带宽估计值。
5.根据权利要求1所述的方法,其特征在于,还包括:
当当前下发的音视频数据所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,针对各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;
当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
6.根据权利要求1所述的方法,其特征在于,在判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号之前,还包括:
将重传列表中记录的已下发的音视频数据清零。
7.根据权利要求1所述的方法,其特征在于,在将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之后,还包括:
将所述目标时域层作为当前下发的音视频数据所属的时域层。
8.根据权利要求1-5任一所述的方法,其特征在于,还包括:
当当前RTP数据包所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,将所述当前RTP数据包丢弃。
9.一种数据分发装置,其特征在于,包括:
音视频序列获取模块,用于获取音视频序列;其中,所述音视频序列包括至少一帧音视频数据;
RTP数据包序列生成模块,用对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,其中,所述RTP数据包序列中包括至少一个RTP数据包;
目标时域层确定模块,用于基于所述RTP数据包序列中的各个RTP数据包,从所述RTP数据包序列所涉及的各个时域层中确定目标时域层;
RTP数据包分发模块,用于将RTP数据包序列中所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端;其中,基于时域层显示的先后顺序对所述时域层进行编号,所述时域层越晚显示,所述时域层越高,对应的时域层号越大;
所述对所述音视频序列进行分包处理,生成实时传输协议RTP数据包序列,包括:对获取的至少一帧音视频数据进行分包处理,生成RTP数据包序列,其中,根据每帧音视频数据的大小,确定每帧音视频数据分成的RTP数据包的数量;
当前时域层号确定模块,用于在将RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号的RTP数据包分发至客户端之前,确定当前下发的音视频数据所属的时域层对应的时域层号;
所述RTP数据包分发模块,用于:
当当前下发的音视频数据所属的时域层对应的时域层号大于所述目标时域层对应的时域层号时,从所述RTP数据包序列中确定RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包,所述RTP数据包所属的时域层是对所述RTP数据包序列中的各个RTP数据包的头信息进行解析确定的;
针对RTP数据包子序列中的各个RTP数据包,判断当前RTP数据包所属的时域层对应的时域层号是否小于或等于所述目标时域层对应的时域层号;其中,所述RTP数据包子序列以RTP数据包所属的时域层对应的时域层号为0的第一个RTP数据包为起始RTP数据包,以所述RTP数据包序列中的最后一个RTP数据包为终止RTP数据包;
当当前RTP数据包所属的时域层对应的时域层号小于或等于所述目标时域层对应的时域层号时,将所述当前RTP数据包分发至客户端。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理装置;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置实现如权利要求1-8中任一所述的数据分发方法。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现如权利要求1-8中任一所述的数据分发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011009092.1A CN112153322B (zh) | 2020-09-23 | 2020-09-23 | 数据分发方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011009092.1A CN112153322B (zh) | 2020-09-23 | 2020-09-23 | 数据分发方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112153322A CN112153322A (zh) | 2020-12-29 |
CN112153322B true CN112153322B (zh) | 2023-03-24 |
Family
ID=73897778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011009092.1A Active CN112153322B (zh) | 2020-09-23 | 2020-09-23 | 数据分发方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112153322B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115208864B (zh) * | 2022-08-12 | 2024-02-06 | 阿波罗智联(北京)科技有限公司 | 数据传输方法、装置、设备、车辆及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109618188A (zh) * | 2018-12-19 | 2019-04-12 | 北京东土科技股份有限公司 | 视频数据的编码、转发方法、装置、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100531210C (zh) * | 2006-01-12 | 2009-08-19 | 北京邮电大学 | 一种用于移动流媒体传输的无缝切换的方法 |
CN101198035A (zh) * | 2008-01-10 | 2008-06-11 | 杭州华三通信技术有限公司 | 视频监控方法、视频转移分发方法、装置及视频监控系统 |
US9596522B2 (en) * | 2010-06-04 | 2017-03-14 | Mobitv, Inc. | Fragmented file structure for live media stream delivery |
CN102164124A (zh) * | 2011-03-15 | 2011-08-24 | 中国联合网络通信集团有限公司 | 多媒体分配方法和系统以及终端 |
CN102761776B (zh) * | 2012-08-01 | 2015-01-14 | 重庆大学 | 基于SVC的P2PVoD系统视音频同步方法 |
CN109348233B (zh) * | 2018-07-23 | 2020-11-13 | 浙江工业大学 | 一种层间回填自适应svc-dash播放方法 |
CN109600617B (zh) * | 2018-12-19 | 2020-07-21 | 北京东土科技股份有限公司 | 视频数据的编码、转发方法、装置、设备及存储介质 |
CN110267099A (zh) * | 2019-05-22 | 2019-09-20 | 视联动力信息技术股份有限公司 | 一种基于视联网的数据传输方法和视联网终端 |
-
2020
- 2020-09-23 CN CN202011009092.1A patent/CN112153322B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109618188A (zh) * | 2018-12-19 | 2019-04-12 | 北京东土科技股份有限公司 | 视频数据的编码、转发方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
SVC的RTP封装及其在NS2包调度中的应用研究;周莺等;《深圳信息职业技术学院学报》;20130915(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112153322A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111147606B (zh) | 数据传输的方法、装置、终端及存储介质 | |
CN112312137A (zh) | 一种视频传输方法、装置、电子设备及存储介质 | |
CN108881955A (zh) | 一种实现分布式节点设备视频同步输出的方法及系统 | |
WO2023051243A1 (zh) | 视频码率切换方法、装置、电子设备及存储介质 | |
CN112291502B (zh) | 信息交互方法、装置、系统和电子设备 | |
CN112954354B (zh) | 视频的转码方法、装置、设备和介质 | |
WO2023125350A1 (zh) | 音频数据推送方法、装置、系统、电子设备及存储介质 | |
CN111818383B (zh) | 视频数据的生成方法、系统、装置、电子设备及存储介质 | |
WO2023035879A1 (zh) | 自由视角视频的视角切换方法、装置、系统、设备和介质 | |
CN113891132A (zh) | 一种音视频同步监控方法、装置、电子设备及存储介质 | |
CN112153322B (zh) | 数据分发方法、装置、设备及存储介质 | |
CN113364767B (zh) | 一种流媒体数据显示方法、装置、电子设备及存储介质 | |
CN113542856B (zh) | 在线录像的倒放方法、装置、设备和计算机可读介质 | |
CN113037751B (zh) | 创建音视频接收流的方法及系统 | |
CN114567812A (zh) | 音频播放方法、装置、系统、电子设备及存储介质 | |
CN113573003A (zh) | 一种基于弱网的音视频实时通信方法、装置以及设备 | |
CN113259729B (zh) | 数据切换的方法、服务器、系统及存储介质 | |
CN113242446B (zh) | 视频帧的缓存方法、转发方法、通信服务器及程序产品 | |
CN113037853B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113364672B (zh) | 媒体网关信息确定方法、装置、设备和计算机可读介质 | |
CN110708314A (zh) | 直播流数据上传方法、装置、电子设备及存储介质 | |
CN112887742B (zh) | 直播流处理方法、装置、设备及存储介质 | |
WO2022237461A1 (zh) | 视频的预加载方法、装置、设备及存储介质 | |
CN113727183B (zh) | 直播推流方法、装置、设备、存储介质及计算机程序产品 | |
CN114900503A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |