CN114338571B - 一种数据处理方法、装置、电子设备及存储介质 - Google Patents
一种数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114338571B CN114338571B CN202210249454.7A CN202210249454A CN114338571B CN 114338571 B CN114338571 B CN 114338571B CN 202210249454 A CN202210249454 A CN 202210249454A CN 114338571 B CN114338571 B CN 114338571B
- Authority
- CN
- China
- Prior art keywords
- data packet
- data
- receiving buffer
- packet
- audio
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种数据处理方法、装置、电子设备及存储介质,方法包括:实时接收发送端发送的至少一个数据包;在将数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入接收缓冲区中的第一数据包对应的码率变化率判断是否对接收缓冲区的存储空间大小进行调整;若第一数据包对应的码率变化率为正且大于第一预设阈值,则增加接收缓冲区的存储空间大小;若第一数据包对应的码率变化率为负且小于第二预设阈值,则减小接收缓冲区的存储空间大小。本申请能够在将要放入接收缓冲区中的数据包对应的码率变化率达到调整阈值时动态调整接收缓冲区的存储空间大小,从而使得接收端受到的压力既不至于过大,还原出的音视频也较为流畅、完整。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
实时音视频码流传输过程中,接收端会设置一个接收缓冲区用于缓存发送端传输过来的音视频码流(数据包),以降低数据包丢包的概率。
在现有技术中,接收缓冲区的存储空间大小是固定的,如果接收缓冲区的存储空间的大小设置的偏大,会导致接收端的压力较大;如果接收缓冲区的存储空间的大小设置的偏小,在数据包发生丢包,和/或某一音视频帧的码率较大(即该音视频帧包括的数据量较大,因此,该音视频帧对应的数据包较多或是该音视频帧对应的数据包所包含的总数据量较大,该音视频帧的数据包便会占用较多接收缓冲区的存储空间)时,又会导致接收缓冲区产生堵塞,从而使得接收端最终还原出的音视频卡顿。
发明内容
有鉴于此,本申请的目的在于提供一种数据处理方法、装置、电子设备及存储介质,能够在将要放入接收缓冲区中的数据包对应的码率变化率达到调整阈值时动态调整接收缓冲区的存储空间大小,从而使得接收端受到的压力既不至于过大,还原出的音视频也较为流畅、完整。
第一方面,本申请实施例提供了一种数据处理方法,应用于接收端,所述方法包括:
实时接收发送端发送的至少一个数据包,其中,对于每个所述数据包,该数据包是发送端对目标音视频中音视频帧中的数据进行封包处理后得到的,该数据包还携带有该数据包对应的音视频帧的码率,该数据包对应的音视频帧为该数据包中包括的数据在封包处理前所属的一个音视频帧;
在将所述数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入所述接收缓冲区中的第一数据包对应的码率变化率判断是否对所述接收缓冲区的存储空间大小进行调整,其中,所述码率变化率为码率差与上一个放入所述接收缓冲区中的第二数据包携带的码率的商,所述码率差为所述第一数据包携带的码率与所述第二数据包携带的码率的差;
若所述第一数据包对应的码率变化率为正且大于第一预设阈值,则增加所述接收缓冲区的存储空间大小;
若所述第一数据包对应的码率变化率为负且小于第二预设阈值,则减小所述接收缓冲区的存储空间大小。
在一种可能的实施方式中,所述方法还包括:
在将第三数据包放入所述接收缓冲区后的第一预设时间段内,每当存在于所述接收缓冲区中的数据包的个数发生变动时,判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,其中,所述第三数据包为当前所述接收缓冲区中存在的数据包中最先放入所述接收缓冲区中的数据包,对于每个所述数据包,该数据包存在生命周期,所述生命周期用于表示该数据包放入所述接收缓冲区后存在于所述接收缓冲区中的最大时长,且所述生命周期与该数据包携带的码率呈正相关的关系,所述第一预设时间段的时长小于或等于所述第三数据包的生命周期;
若与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,则将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器;
通过所述解码器,得到所述第三数据包对应的音视频帧。
在一种可能的实施方式中,在将所述第三数据包放入所述接收缓冲区后的第二预设时间段的截止时刻,若与所述第三数据包对应同一音视频帧的数据包仍未均存在于所述接收缓冲区中,其中,所述第二预设时间段的时长小于所述第一预设时间段的时长,则所述方法还包括:
确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,其中,所述丢失数据包为与所述第三数据包对应同一音视频帧的数据包;
向所述发送端发送用于获取所述丢失数据包的指令,以使所述发送端在其设置的发送缓冲区中存在所述丢失数据包的缓存备份的情况下,将所述缓存备份发送给所述接收端。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧;判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,包括:
若当前存在于所述接收缓冲区中的第四数据包的个数等于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,其中,所述第四数据包包括:所述第三数据包以及与所述第三数据包携带帧序号相同的数据包;
若当前存在于所述接收缓冲区中的所述第四数据包的个数小于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包未均已存在于所述接收缓冲区中。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有包序号,目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧,同一音视频帧对应的每个数据包携带的包序号不同且符合预设规则;确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,包括:
根据所述第三数据包携带的包数以及所述预设规则,确定待还原音视频帧对应的每个数据包携带的包序号,其中,所述待还原音视频帧是帧序号为目标帧序号的音视频帧,所述目标帧序号为所述第三数据包携带的帧序号;
将第一包序号和第二包序号进行比对,确定包括于所述第一包序号中而不包括于所述第二包序号中的丢失包序号,其中,所述第一包序号为所述待还原音视频帧对应的每个数据包携带的包序号,所述第二包序号为第五数据包携带的包序号,所述第五数据包包括:所述第三数据包以及在所述第二预设时间段的截止时刻存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
根据所述丢失包序号和所述目标帧序号,确定所述丢失数据包。
在一种可能的实施方式中,将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器,包括:
根据每一第六数据包携带的包序号,判断所述第六数据包在所述接收缓冲区中的排列顺序是否符合所述预设规则对应的顺序,其中,所述第六数据包包括:所述第三数据包以及当前存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
若所述第六数据包在所述接收缓冲区中的排列顺序符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包释放给所述解码器;
若所述第六数据包在所述接收缓冲区中的排列顺序不符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包按照所述预设规则对应的顺序进行排列后释放给所述解码器。
在一种可能的实施方式中,若在所述第一预设时间段的截止时刻仍未接收到所述丢失数据包,则所述方法还包括:
将当前存在于所述接收缓冲区中的所述第三数据包以及与所述第三数据包对应同一音视频帧的数据包释放给所述解码器;
通过所述解码器,得到所述第三数据包对应的音视频帧。
第二方面,本申请实施例还提供了一种数据处理装置,应用于接收端,所述装置包括:
接收模块,用于实时接收发送端发送的至少一个数据包,其中,对于每个所述数据包,该数据包是发送端对目标音视频中音视频帧中的数据进行封包处理后得到的,该数据包还携带有该数据包对应的音视频帧的码率,该数据包对应的音视频帧为该数据包中包括的数据在封包处理前所属的一个音视频帧;
第一判断模块,用于在将所述数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入所述接收缓冲区中的第一数据包对应的码率变化率判断是否对所述接收缓冲区的存储空间大小进行调整,其中,所述码率变化率为码率差与上一个放入所述接收缓冲区中的第二数据包携带的码率的商,所述码率差为所述第一数据包携带的码率与所述第二数据包携带的码率的差;
调整模块,用于若所述第一数据包对应的码率变化率为正且大于第一预设阈值,则增加所述接收缓冲区的存储空间大小;若所述第一数据包对应的码率变化率为负且小于第二预设阈值,则减小所述接收缓冲区的存储空间大小。
在一种可能的实施方式中,所述装置还包括:
第二判断模块,用于在将第三数据包放入所述接收缓冲区后的第一预设时间段内,每当存在于所述接收缓冲区中的数据包的个数发生变动时,判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,其中,所述第三数据包为当前所述接收缓冲区中存在的数据包中最先放入所述接收缓冲区中的数据包,对于每个所述数据包,该数据包存在生命周期,所述生命周期用于表示该数据包放入所述接收缓冲区后存在于所述接收缓冲区中的最大时长,且所述生命周期与该数据包携带的码率呈正相关的关系,所述第一预设时间段的时长小于或等于所述第三数据包的生命周期;
释放模块,用于若与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,则将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器;
解码模块,用于通过所述解码器,得到所述第三数据包对应的音视频帧。
在一种可能的实施方式中,所述装置还包括:
确定模块,用于在将所述第三数据包放入所述接收缓冲区后的第二预设时间段的截止时刻,若与所述第三数据包对应同一音视频帧的数据包仍未均存在于所述接收缓冲区中,则确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,其中,所述第二预设时间段的时长小于所述第一预设时间段的时长,所述丢失数据包为与所述第三数据包对应同一音视频帧的数据包;
发送模块,用于向所述发送端发送用于获取所述丢失数据包的指令,以使所述发送端在其设置的发送缓冲区中存在所述丢失数据包的缓存备份的情况下,将所述缓存备份发送给所述接收端。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧;所述第二判断模块在判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中时,具体用于:
若当前存在于所述接收缓冲区中的第四数据包的个数等于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,其中,所述第四数据包包括:所述第三数据包以及与所述第三数据包携带帧序号相同的数据包;
若当前存在于所述接收缓冲区中的所述第四数据包的个数小于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包未均已存在于所述接收缓冲区中。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有包序号,目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧,同一音视频帧对应的每个数据包携带的包序号不同且符合预设规则;所述确定模块在确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包时,具体用于:
根据所述第三数据包携带的包数以及所述预设规则,确定待还原音视频帧对应的每个数据包携带的包序号,其中,所述待还原音视频帧是帧序号为目标帧序号的音视频帧,所述目标帧序号为所述第三数据包携带的帧序号;
将第一包序号和第二包序号进行比对,确定包括于所述第一包序号中而不包括于所述第二包序号中的丢失包序号,其中,所述第一包序号为所述待还原音视频帧对应的每个数据包携带的包序号,所述第二包序号为第五数据包携带的包序号,所述第五数据包包括:所述第三数据包以及在所述第二预设时间段的截止时刻存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
根据所述丢失包序号和所述目标帧序号,确定所述丢失数据包。
在一种可能的实施方式中,所述释放模块在将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器时,具体用于:
根据每一第六数据包携带的包序号,判断所述第六数据包在所述接收缓冲区中的排列顺序是否符合所述预设规则对应的顺序,其中,所述第六数据包包括:所述第三数据包以及当前存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
若所述第六数据包在所述接收缓冲区中的排列顺序符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包释放给所述解码器;
若所述第六数据包在所述接收缓冲区中的排列顺序不符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包按照所述预设规则对应的顺序进行排列后释放给所述解码器。
在一种可能的实施方式中,所述释放模块,还用于:
若在所述第一预设时间段的截止时刻仍未接收到所述丢失数据包,则将当前存在于所述接收缓冲区中的所述第三数据包以及与所述第三数据包对应同一音视频帧的数据包释放给所述解码器;
通过所述解码器,得到所述第三数据包对应的音视频帧。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行第一方面任一项所述的数据处理方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面任一项所述的数据处理方法的步骤。
本申请实施例提供的一种数据处理方法、装置、电子设备及存储介质,能够在将要放入接收缓冲区中的数据包对应的码率变化率达到调整阈值时动态调整接收缓冲区的存储空间大小,从而使得接收端受到的压力既不至于过大,还原出的音视频也较为流畅、完整。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种数据处理方法的流程图;
图2示出了本申请实施例提供的另一种数据处理方法的流程图;
图3示出了本申请实施例提供的另一种数据处理方法的流程图;
图4示出了本申请实施例提供的另一种数据处理方法的流程图;
图5示出了本申请实施例提供的另一种数据处理方法的流程图;
图6示出了本申请实施例提供的另一种数据处理方法的流程图;
图7示出了本申请实施例提供的一种数据处理装置的结构示意图;
图8示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
为便于对本实施例进行理解,对本申请实施例提供的一种数据处理方法、装置、电子设备及存储介质进行详细介绍。
参照图1所示,为本申请实施例提供的一种数据处理方法的流程图,应用于接收端,所述方法包括:
S101、实时接收发送端发送的至少一个数据包,其中,对于每个所述数据包,该数据包是发送端对目标音视频中音视频帧中的数据进行封包处理后得到的,该数据包还携带有该数据包对应的音视频帧的码率,该数据包对应的音视频帧为该数据包中包括的数据在封包处理前所属的一个音视频帧。
发送端通过自身设置的编码器对待发送音视频(即目标音视频)中每一音视频帧包含的数据进行封包处理,得到每一音视频帧各自对应的多个数据包。
例如,目标音视频S由音视频帧A,音视频帧B,音视频帧C这三个音视频帧组成,其中,音视频帧A包含300字节数据,将音视频帧A包含的前100字节数据打包(即进行封包处理)得到数据包a,将音视频帧A包含的中间100字节的数据打包得到数据包b,将音视频帧A包含的后100字节的数据打包得到数据包c,得到音视频帧A对应的三个数据包(数据包a,数据包b和数据包c,也即,数据包a,数据包b和数据包c均对应音视频帧A)。数据包a,数据包b和数据包c各自携带的码率是相同的,均为音视频帧A的码率(对于每一音视频帧,该音视频帧包含的数据量越大,则该音视频帧的码率也越大,该音视频帧的码率为该音视频帧包含的数据量与目标音视频的帧率之乘积,具体的,音视频帧A的码率即为音视频帧A包含的数据量与目标音视频S的帧率之乘积)。
对于发送端每次发送给接收端的数据包,发送端该次发送给接收端的数据包可以均对应同一音视频帧。例如,目标音视频M由音视频帧1,音视频帧2和音视频帧3组成,音视频帧1对应的数据包包括:数据包1,数据包2和数据包3;音视频帧2对应的数据包包括:数据包4,数据包5,数据包6和数据包7;音视频帧3对应的数据包包括:数据包8,数据包9和数据包10。那么,发送端第一次发送给接收端的数据包可以为数据包1,数据包2和数据包3;发送端第二次发送给接收端的数据包可以为数据包4,数据包5,数据包6和数据包7;发送端第三次发送给接收端的数据包可以为数据包8,数据包9和数据包10。
S102、在将所述数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入所述接收缓冲区中的第一数据包对应的码率变化率判断是否对所述接收缓冲区的存储空间大小进行调整,其中,所述码率变化率为码率差与上一个放入所述接收缓冲区中的第二数据包携带的码率的商,所述码率差为所述第一数据包携带的码率与所述第二数据包携带的码率的差。
若所述第一数据包对应的码率变化率为正且大于第一预设阈值,则执行步骤S103;若所述第一数据包对应的码率变化率为负且小于第二预设阈值,则执行步骤S104。
S103、增加所述接收缓冲区的存储空间大小。
S104、减小所述接收缓冲区的存储空间大小。
结合步骤S102~S104:
示例1:当前将要放入接收缓冲区中的第一数据包携带的码率为1000Kbps,上一个放入接收缓冲区中的第二数据包携带的码率为800Kbps,那么当前将要放入接收缓冲区中的第一数据包对应的码率变化率即为(1000Kbps-800Kbps)/800Kbps=25%。那么,若第一预设阈值大于25%(例如为30%),则不对接收缓冲区的存储空间大小进行调整;若第一预设阈值小于25%(例如20%),则增加接收缓冲区的存储空间大小。
示例2:当前将要放入接收缓冲区中的第一数据包携带的码率为1000Kbps,上一个放入接收缓冲区中的第二数据包携带的码率为1250Kbps,那么当前将要放入接收缓冲区中的第一数据包对应的码率变化率即为(1000Kbps-1250Kbps)/1250Kbps=-20%。那么,若第二预设阈值小于-20%(例如-25%),则不对接收缓冲区的存储空间大小进行调整;若第二预设阈值大于-20%(例如-15%),则减小接收缓冲区的存储空间大小。
在当前需要对接收缓冲区的存储空间大小进行调整(即当前放入接收缓冲区中的数据包对应的码率变化率大于第一预设阈值或小于第二预设阈值)时,可以根据当前将要放入接收缓冲区中的第一数据包携带的码率与上一次对接收缓冲区的存储空间大小进行调整后最先放入接收缓冲区的参考数据包携带的码率之比值确定对接收缓冲区的存储空间大小进行调整的幅度,例如:当前将要放入接收缓冲区的第一数据包携带的码率为1000Kbps,上一次对接收缓冲区的存储空间大小进行调整后最先放入接收缓冲区的参考数据包携带的码率为500Kbps,比值即为1000Kbps/500Kbps=2,则将接收缓冲区的存储空间大小变为2倍。
或者,直接按照如下公式,调整接收缓冲区的存储空间大小:
Buff=n*(br1*(1+or1));其中,Buff为接收缓冲区的存储空间大小,n为第一预设常数(例如,可以设置为5),br1为第一数据包携带的码率,or1为第二预设常数,且or1的值在0到1之间(例如,可以设置为25%)。
例如,设置n为5,or1为25%,若br1为2000Kbps,则调整后的接收缓冲区的存储空间大小为12500Kb。
参照图2所示,为本申请实施例提供的另一种数据处理方法的流程图,在一种可能的实施方式中,所述方法还包括:
S201、在将第三数据包放入所述接收缓冲区后的第一预设时间段内,每当存在于所述接收缓冲区中的数据包的个数发生变动时,判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,其中,所述第三数据包为当前所述接收缓冲区中存在的数据包中最先放入所述接收缓冲区中的数据包,对于每个所述数据包,该数据包存在生命周期,所述生命周期用于表示该数据包放入所述接收缓冲区后存在于所述接收缓冲区中的最大时长,且所述生命周期与该数据包携带的码率呈正相关的关系,所述第一预设时间段的时长小于或等于所述第三数据包的生命周期。
例如,音视频帧1对应5个数据包,分别为数据包1,数据包2,数据包3,数据包4和数据包5,当前缓冲区中存在的数据包中第一个放入接收缓冲区中的数据包为数据包1,那么数据包1即为第三数据包。
假设数据包1的生命周期为125ms,第一预设时间段为120ms(第一预设时间段的时长可以按照第三数据包的生命周期的百分比设定),那么,在数据包1放入接收缓冲区后的120ms内,每当存在于接收缓冲区中的数据包的数量发生变动时,判断当前数据包1,数据包2,数据包3,数据包4和数据包5(数据包2,数据包3,数据包4和数据包5即为与数据包1对应同一音视频帧的数据包)是否均已存在于接收缓冲区中。
在现有技术中,数据包的生命周期也是固定的,如果数据包的生命周期设置的偏大,那么数据包在传输过程中发生丢包时,对丢失数据包进行再接收的等待时间也会较长(即,与丢失数据包对应同一音视频帧的数据包缓存于接收缓冲区中的时长也较长),此外,接收缓冲区在设置的偏小的情况下也会容易发生堵塞,这样,虽然获取到丢失数据包的概率较高,从而使得接收缓冲区释放给解码器的数据包个数较完整(即能够使最终还原出来的音视频帧画面较完整),但等待时间(也即缓存时间)长也会导致音视频播放延时增加;如果数据包的生命周期设置的偏小,一旦某一音视频帧包含的数据量较大(码率较大的音视频帧对应的数据包的个数一般会较多),那么数据包发生丢失的概率也会增大,由于等待时间(也即缓存时间)较短,虽然接收缓冲区不容易堵塞,最终解码器还原出来的音视频延时也较小,但发生丢包时接收端获取到丢失数据包的概率就会较低,从而容易造成音视频画面显示缺失等问题。
以及,对于每个数据包,可以按照如下公式,计算该数据包的生命周期:
T=(br2/c1+c2/fps)*(1+or2);其中,T为该数据包的生命周期,br2为该数据包携带的码率,fps为目标音视频的帧率,c1为第三预设常数(例如,可以设置为1000),c2为第四预设常数(例如,可以设置为1000),or2为第五预设常数,且or2的值在0到1之间(例如,可以设置为25%)。
例如,设置c1为1000,c2为1000,or2为25%,若fps为50Hz,br2为2000Kbps,则生命周期为24ms。
S202、若与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,则将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器。
如步骤S201所述的,若在数据包1放入接收缓冲区后的120ms内,数据包1,数据包2,数据包3,数据包4和数据包5均已存在接收缓冲区中,则将数据包1,数据包2,数据包3,数据包4和数据包5释放给解码器。
S203、通过所述解码器,得到所述第三数据包对应的音视频帧。
如步骤S201和步骤S202所述的,解码器根据数据包1,数据包2,数据包3,数据包4和数据包5还原得到音视频帧1。
参照图3所示,为本申请实施例提供的另一种数据处理方法的流程图,在一种可能的实施方式中,在将所述第三数据包放入所述接收缓冲区后的第二预设时间段的截止时刻,若与所述第三数据包对应同一音视频帧的数据包仍未均存在于所述接收缓冲区中,其中,所述第二预设时间段的时长小于所述第一预设时间段的时长,则所述方法还包括:
S301、确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,其中,所述丢失数据包为与所述第三数据包对应同一音视频帧的数据包。
S302、向所述发送端发送用于获取所述丢失数据包的指令,以使所述发送端在其设置的发送缓冲区中存在所述丢失数据包的缓存备份的情况下,将所述缓存备份发送给所述接收端。
结合步骤S301~S302,例如,音视频帧1对应5个数据包,分别为数据包1,数据包2,数据包3,数据包4和数据包5,当前缓冲区中存在的数据包中第一个放入接收缓冲区中的数据包为数据包1,那么数据包1即为第三数据包。
假设数据包1的生命周期为125ms,第一预设时间段为120ms,第二预设时间段为50ms(由于对应同一音视频帧的数据包并不一定能同时接收到,因此预留出一定时间,即为第二预设时间段,避免某个数据包并非丢包而是还未来得及放入接收缓冲区中,而若到了第二预设时间段的截止时刻,该音视频帧对应的全部数据包仍未均存在于接收缓冲区中,则认定该音视频帧对应的某个数据包发生了丢包;第二预设时间段的时长可以按照第三数据包的生命周期的百分比设定),那么,在数据包1放入接收缓冲区后的第50ms(即第二预设时间段的截止时刻),若接收缓冲区中仅存在数据包1,数据包2,数据包3和数据包4,那么数据包5即为丢失数据包,因此,向发送端发送用于获取数据包5(即丢失数据包)的指令,以使发送端在其设置的发送缓冲区中存在数据包5的缓存备份的情况下,将数据包5的缓存备份作为数据包5发送给接收端。
这里,在发送端通过自身设置的编码器对目标音视频中的音视频帧完成封包处理得到数据包后,先将数据包逐个放入发送缓冲区中进行缓存得到每一数据包的缓存备份后再发送给接收端。发送端也具有动态调整发送缓冲区的存储空间大小的功能,与接收缓冲区的存储空间大小调整原理一致,若当前将要放入发送缓冲区中的第七数据包对应的第二码率变化率为正且大于第三预设阈值,则增加发送缓冲区的存储空间大小,若第七数据包对应的第二码率变化率为负且小于第四预设阈值,则减小发送缓冲区的存储空间大小,其中,第二码率变化率为第二码率差与上一个放入发送缓冲区中的第八数据包携带的码率的商,第二码率差为第七数据包携带的码率与第八数据包携带的码率之差。
对于每个数据包,该数据包的缓存备份存在于发送缓冲区中的最大时长与该数据包携带的码率呈正相关的关系。
例如,当前将要放入发送缓冲区中的第七数据包携带的码率为1000Kbps,上一个放入发送缓冲区中的第八数据包携带的码率为800Kbps,那么当前将要放入发送缓冲区中的第七数据包对应的第二码率变化率即为(1000Kbps-800Kbps)/800Kbps=25%。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧;判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,包括:
第一、若当前存在于所述接收缓冲区中的第四数据包的个数等于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,其中,所述第四数据包包括:所述第三数据包以及与所述第三数据包携带帧序号相同的数据包。
第二、若当前存在于所述接收缓冲区中的所述第四数据包的个数小于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包未均已存在于所述接收缓冲区中。
结合上述第一和第二,例如,目标音视频S由音视频帧1,音视频帧2,音视频帧3和音视频帧4组成,音视频帧1在目标音视频S中的最前,帧序号即为1(对于每一音视频帧,该音视频帧的帧序号表示该音视频帧在目标音视频中的顺序);音视频帧2在音视频帧1之后,帧序号为2;音视频帧3在音视频帧2之后,帧序号为3;音视频帧4在音视频帧3之后,帧序号为4。
其中,音视频帧1对应的数据包包括:数据包1,数据包2,数据包3和数据包4,那么,数据包1携带的帧序号为1,包数为4;数据包2携带的帧序号为1,包数为4;数据包3携带的帧序号为1,包数为4;数据包4携带的帧序号为1,包数为4。
假设数据包1为第三数据包,那么,若当前存在于接收缓冲区中的携带帧序号为1的数据包的数量等于4个,则确定音视频帧1对应的每个数据包均已存在于接收缓冲区中(即,确定与第三数据包对应同一音视频帧的数据包均已存在于接收缓冲区中);若当前存在于接收缓冲区中的携带帧序号为1的数据包的数量小于4个,则确定音视频帧1对应的每个数据包未均已存在于接收缓冲区中(即,确定与第三数据包对应同一音视频帧的数据包未均已存在于接收缓冲区中)。
参照图4所示,为本申请实施例提供的另一种数据处理方法的流程图,在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有包序号,目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧,同一音视频帧对应的每个数据包携带的包序号不同且符合预设规则;确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,包括:
S401、根据所述第三数据包携带的包数以及所述预设规则,确定待还原音视频帧对应的每个数据包携带的包序号,其中,所述待还原音视频帧是帧序号为目标帧序号的音视频帧,所述目标帧序号为所述第三数据包携带的帧序号。
例如,预设规则是首项为0,公差为1的等差数列(即,自然数数列),且对于每一音视频帧,要求该音视频帧对应的全部m个数据包为该自然数数列的前m位,由该音视频帧靠前部分数据封包处理后得到的数据包携带的包序号在预设规则中的顺序,位于由该音视频帧靠后部分数据封包处理后得到的数据包携带的包序号在预设规则中的顺序之前。具体的,假设音视频帧10(帧序号为10)包括的数据量为300字节,将音视频帧10包含的前100字节数据打包为数据包a,中间100字节的数据打包为数据包b,后100字节的数据打包为数据包c,得到音视频帧10对应的数据包a,数据包b和数据包c,那么,数据包a携带的包序号即为0,携带的帧序号为10,携带的包数为3;数据包b携带的包序号为1,携带的帧序号为10,携带的包数为3;数据包c携带的包序号为2,携带的帧序号为10,携带的包数为3。
假设第三数据包为数据包a,那么根据数据包a携带的包数3和预设规则,即可确定音视频帧10(即第三数据包对应的音视频帧)对应的每个数据包携带的包序号包括:0,1和2;目标帧序号即为10。
S402、将第一包序号和第二包序号进行比对,确定包括于所述第一包序号中而不包括于所述第二包序号中的丢失包序号,其中,所述第一包序号为所述待还原音视频帧对应的每个数据包携带的包序号,所述第二包序号为第五数据包携带的包序号,所述第五数据包包括:所述第三数据包以及在所述第二预设时间段的截止时刻存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包。
如步骤S401所述的,例如,当前存在于接收缓冲区中的数据包为数据包a和数据包b,那么,第二包序号即包括:0(数据包a携带的包序号),以及,1(数据包b携带的包序号);第一包序号包括:0,1和2,因此,丢失包序号即为2。
S403、根据所述丢失包序号和所述目标帧序号,确定所述丢失数据包。
如步骤S401和步骤S402所述的,帧序号为10(即目标帧序号),包序号为2(即丢失包序号)的数据包即为丢失数据包。
参照图5所示,为本申请实施例提供的另一种数据处理方法的流程图,在一种可能的实施方式中,将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器,包括:
S501、根据每一第六数据包携带的包序号,判断所述第六数据包在所述接收缓冲区中的排列顺序是否符合所述预设规则对应的顺序,其中,所述第六数据包包括:所述第三数据包以及当前存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包。
例如,预设规则是首项为0,公差为1的等差数列(即,自然数数列),且对于每一音视频帧,要求该音视频帧对应的全部m个数据包为该自然数数列的前m位,由该音视频帧靠前部分数据封包处理后得到的数据包携带的包序号在预设规则中的顺序,位于由该音视频帧靠后部分数据封包处理后得到的数据包携带的包序号在预设规则中的顺序之前。具体的,假设音视频帧10(帧序号为10)包括的数据量为300字节,将音视频帧10包含的前100字节数据打包为数据包a,中间100字节的数据打包为数据包b,后100字节的数据打包为数据包c,得到音视频帧10对应的数据包a,数据包b和数据包c,那么,数据包a携带的包序号即为0,携带的帧序号为10,携带的包数为3;数据包b携带的包序号为1,携带的帧序号为10,携带的包数为3;数据包c携带的包序号为2,携带的帧序号为10,携带的包数为3。
若所述第六数据包在所述接收缓冲区中的排列顺序符合所述预设规则对应的顺序,则执行步骤S502;若所述第六数据包在所述接收缓冲区中的排列顺序不符合所述预设规则对应的顺序,则执行步骤S503。
S502、将存在于所述接收缓冲区中的全部所述第六数据包释放给所述解码器。
如步骤S501所述的,如果数据包a、数据包b和数据包c在接收缓冲区中的排列顺序为数据包a在最前,数据包b在中间,数据包c在最后,则符合预设规则对应的顺序(即携带的包序号为0的数据包在最先,携带的包序号为1的数据包在中间,携带的包序号为2的数据包在最后),因此直接将数据包a、数据包b和数据包c释放给解码器。
S503、将存在于所述接收缓冲区中的全部所述第六数据包按照所述预设规则对应的顺序进行排列后释放给所述解码器。
如步骤S501所述的,如果数据包a、数据包b和数据包c在接收缓冲区中的排列顺序为数据包b在最前,数据包c在中间,数据包a在最后,则不符合预设规则对应的顺序(即携带的包序号为0的数据包在最先,携带的包序号为1的数据包在中间,携带的包序号为2的数据包在最后),那么,按照预设规则对应的顺序将数据包a放在最前,将数据包b放在中间,将数据包c放在最后,按此顺序排列完成后,将数据包a,数据包b和数据包c释放给解码器。
参照图6所示,为本申请实施例提供的另一种数据处理方法的流程图,在一种可能的实施方式中,若在所述第一预设时间段的截止时刻仍未接收到所述丢失数据包,则所述方法还包括:
S601、将当前存在于所述接收缓冲区中的所述第三数据包以及与所述第三数据包对应同一音视频帧的数据包释放给所述解码器。
S602、通过所述解码器,得到所述第三数据包对应的音视频帧。
结合步骤S601~S602,若在第一预设时间段的截止时刻仍未接收到丢失数据包,则确认丢失数据包获取失败,为了接收端(的解码器)还原出的音视频的流畅性,则放弃丢失数据包,将当前存在于接收缓冲区中携带目标帧序号的数据包全部释放给解码器,以使解码器还原出第三数据包对应的音视频帧(由于未接收到丢失数据包,因此还原出的音视频帧画面有所缺失)。
本申请实施例提供的一种数据处理方法,能够在将要放入接收缓冲区中的数据包对应的码率变化率达到调整阈值时动态调整接收缓冲区的存储空间大小,从而使得接收端受到的压力既不至于过大,还原出的音视频也较为流畅、完整。
基于同一发明构思,本申请实施例中还提供了与实施例中数据处理方法对应的数据处理装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图7所示,为本申请实施例提供的一种数据处理装置的结构示意图,应用于接收端,所述装置包括:
接收模块701,用于实时接收发送端发送的至少一个数据包,其中,对于每个所述数据包,该数据包是发送端对目标音视频中音视频帧中的数据进行封包处理后得到的,该数据包还携带有该数据包对应的音视频帧的码率,该数据包对应的音视频帧为该数据包中包括的数据在封包处理前所属的一个音视频帧;
第一判断模块702,用于在将所述数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入所述接收缓冲区中的第一数据包对应的码率变化率判断是否对所述接收缓冲区的存储空间大小进行调整,其中,所述码率变化率为码率差与上一个放入所述接收缓冲区中的第二数据包携带的码率的商,所述码率差为所述第一数据包携带的码率与所述第二数据包携带的码率的差;
调整模块703,用于若所述第一数据包对应的码率变化率为正且大于第一预设阈值,则增加所述接收缓冲区的存储空间大小;若所述第一数据包对应的码率变化率为负且小于第二预设阈值,则减小所述接收缓冲区的存储空间大小。
在一种可能的实施方式中,所述装置还包括:
第二判断模块,用于在将第三数据包放入所述接收缓冲区后的第一预设时间段内,每当存在于所述接收缓冲区中的数据包的个数发生变动时,判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,其中,所述第三数据包为当前所述接收缓冲区中存在的数据包中最先放入所述接收缓冲区中的数据包,对于每个所述数据包,该数据包存在生命周期,所述生命周期用于表示该数据包放入所述接收缓冲区后存在于所述接收缓冲区中的最大时长,且所述生命周期与该数据包携带的码率呈正相关的关系,所述第一预设时间段的时长小于或等于所述第三数据包的生命周期;
释放模块,用于若与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,则将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器;
解码模块,用于通过所述解码器,得到所述第三数据包对应的音视频帧。
在一种可能的实施方式中,所述装置还包括:
确定模块,用于在将所述第三数据包放入所述接收缓冲区后的第二预设时间段的截止时刻,若与所述第三数据包对应同一音视频帧的数据包仍未均存在于所述接收缓冲区中,则确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,其中,所述第二预设时间段的时长小于所述第一预设时间段的时长,所述丢失数据包为与所述第三数据包对应同一音视频帧的数据包;
发送模块,用于向所述发送端发送用于获取所述丢失数据包的指令,以使所述发送端在其设置的发送缓冲区中存在所述丢失数据包的缓存备份的情况下,将所述缓存备份发送给所述接收端。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧;所述第二判断模块在判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中时,具体用于:
若当前存在于所述接收缓冲区中的第四数据包的个数等于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,其中,所述第四数据包包括:所述第三数据包以及与所述第三数据包携带帧序号相同的数据包;
若当前存在于所述接收缓冲区中的所述第四数据包的个数小于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包未均已存在于所述接收缓冲区中。
在一种可能的实施方式中,对于每个所述数据包,该数据包还携带有包序号,目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧,同一音视频帧对应的每个数据包携带的包序号不同且符合预设规则;所述确定模块在确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包时,具体用于:
根据所述第三数据包携带的包数以及所述预设规则,确定待还原音视频帧对应的每个数据包携带的包序号,其中,所述待还原音视频帧是帧序号为目标帧序号的音视频帧,所述目标帧序号为所述第三数据包携带的帧序号;
将第一包序号和第二包序号进行比对,确定包括于所述第一包序号中而不包括于所述第二包序号中的丢失包序号,其中,所述第一包序号为所述待还原音视频帧对应的每个数据包携带的包序号,所述第二包序号为第五数据包携带的包序号,所述第五数据包包括:所述第三数据包以及在所述第二预设时间段的截止时刻存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
根据所述丢失包序号和所述目标帧序号,确定所述丢失数据包。
在一种可能的实施方式中,所述释放模块在将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器时,具体用于:
根据每一第六数据包携带的包序号,判断所述第六数据包在所述接收缓冲区中的排列顺序是否符合所述预设规则对应的顺序,其中,所述第六数据包包括:所述第三数据包以及当前存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
若所述第六数据包在所述接收缓冲区中的排列顺序符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包释放给所述解码器;
若所述第六数据包在所述接收缓冲区中的排列顺序不符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包按照所述预设规则对应的顺序进行排列后释放给所述解码器。
在一种可能的实施方式中,所述释放模块,还用于:
若在所述第一预设时间段的截止时刻仍未接收到所述丢失数据包,则将当前存在于所述接收缓冲区中的所述第三数据包以及与所述第三数据包对应同一音视频帧的数据包释放给所述解码器;
通过所述解码器,得到所述第三数据包对应的音视频帧。
本申请提供的一种数据处理装置,能够在将要放入接收缓冲区中的数据包对应的码率变化率达到调整阈值时动态调整接收缓冲区的存储空间大小,从而使得接收端受到的压力既不至于过大,还原出的音视频也较为流畅、完整。
参照图8所示,本申请实施例提供的一种电子设备800,包括:处理器801、存储器802和总线,所述存储器802存储有所述处理器801可执行的机器可读指令,当电子设备运行时,所述处理器801与所述存储器802之间通过总线通信,所述处理器801执行所述机器可读指令,以执行如上述数据处理的方法的步骤。
具体地,上述存储器802和处理器801能够为通用的存储器和处理器,这里不做具体限定,当处理器801运行存储器802存储的计算机程序时,能够执行上述数据处理的方法。
对应于上述数据处理的方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述数据处理的方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据处理方法,其特征在于,应用于接收端,所述方法包括:
实时接收发送端发送的至少一个数据包,其中,对于每个所述数据包,该数据包是发送端对目标音视频中音视频帧中的数据进行封包处理后得到的,该数据包还携带有该数据包对应的音视频帧的码率,该数据包对应的音视频帧为该数据包中包括的数据在封包处理前所属的一个音视频帧;
在将所述数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入所述接收缓冲区中的第一数据包对应的码率变化率判断是否对所述接收缓冲区的存储空间大小进行调整,其中,所述码率变化率为码率差与上一个放入所述接收缓冲区中的第二数据包携带的码率的商,所述码率差为所述第一数据包携带的码率与所述第二数据包携带的码率的差;
若所述第一数据包对应的码率变化率为正且大于第一预设阈值,则增加所述接收缓冲区的存储空间大小;
若所述第一数据包对应的码率变化率为负且小于第二预设阈值,则减小所述接收缓冲区的存储空间大小。
2.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
在将第三数据包放入所述接收缓冲区后的第一预设时间段内,每当存在于所述接收缓冲区中的数据包的个数发生变动时,判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,其中,所述第三数据包为当前所述接收缓冲区中存在的数据包中最先放入所述接收缓冲区中的数据包,对于每个所述数据包,该数据包存在生命周期,所述生命周期用于表示该数据包放入所述接收缓冲区后存在于所述接收缓冲区中的最大时长,且所述生命周期与该数据包携带的码率呈正相关的关系,所述第一预设时间段的时长小于或等于所述第三数据包的生命周期;
若与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,则将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器;
通过所述解码器,得到所述第三数据包对应的音视频帧。
3.根据权利要求2所述的数据处理方法,其特征在于,在将所述第三数据包放入所述接收缓冲区后的第二预设时间段的截止时刻,若与所述第三数据包对应同一音视频帧的数据包仍未均存在于所述接收缓冲区中,其中,所述第二预设时间段的时长小于所述第一预设时间段的时长,则所述方法还包括:
确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,其中,所述丢失数据包为与所述第三数据包对应同一音视频帧的数据包;
向所述发送端发送用于获取所述丢失数据包的指令,以使所述发送端在其设置的发送缓冲区中存在所述丢失数据包的缓存备份的情况下,将所述缓存备份发送给所述接收端。
4.根据权利要求2所述的数据处理方法,其特征在于,对于每个所述数据包,该数据包还携带有目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧;判断与所述第三数据包对应同一音视频帧的数据包是否均已存在于所述接收缓冲区中,包括:
若当前存在于所述接收缓冲区中的第四数据包的个数等于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包均已存在于所述接收缓冲区中,其中,所述第四数据包包括:所述第三数据包以及与所述第三数据包携带帧序号相同的数据包;
若当前存在于所述接收缓冲区中的所述第四数据包的个数小于所述第三数据包携带的包数,则确定与所述第三数据包对应同一音视频帧的数据包未均已存在于所述接收缓冲区中。
5.根据权利要求3所述的数据处理方法,其特征在于,对于每个所述数据包,该数据包还携带有包序号,目标音视频帧的帧序号和用于表征所述目标音视频帧对应的数据包数量的包数,所述目标音视频帧为该数据包对应的音视频帧,同一音视频帧对应的每个数据包携带的包序号不同且符合预设规则;确定在所述第二预设时间段的截止时刻仍未存在于所述接收缓冲区中的丢失数据包,包括:
根据所述第三数据包携带的包数以及所述预设规则,确定待还原音视频帧对应的每个数据包携带的包序号,其中,所述待还原音视频帧是帧序号为目标帧序号的音视频帧,所述目标帧序号为所述第三数据包携带的帧序号;
将第一包序号和第二包序号进行比对,确定包括于所述第一包序号中而不包括于所述第二包序号中的丢失包序号,其中,所述第一包序号为所述待还原音视频帧对应的每个数据包携带的包序号,所述第二包序号为第五数据包携带的包序号,所述第五数据包包括:所述第三数据包以及在所述第二预设时间段的截止时刻存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
根据所述丢失包序号和所述目标帧序号,确定所述丢失数据包。
6.根据权利要求5所述的数据处理方法,其特征在于,将所述第三数据包以及存在于所述接收缓冲区中的与所述第三数据包对应同一音视频帧的全部数据包释放给解码器,包括:
根据每一第六数据包携带的包序号,判断所述第六数据包在所述接收缓冲区中的排列顺序是否符合所述预设规则对应的顺序,其中,所述第六数据包包括:所述第三数据包以及当前存在于所述接收缓冲区中的与所述第三数据包携带帧序号相同的数据包;
若所述第六数据包在所述接收缓冲区中的排列顺序符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包释放给所述解码器;
若所述第六数据包在所述接收缓冲区中的排列顺序不符合所述预设规则对应的顺序,则将存在于所述接收缓冲区中的全部所述第六数据包按照所述预设规则对应的顺序进行排列后释放给所述解码器。
7.根据权利要求3所述的数据处理方法,其特征在于,若在所述第一预设时间段的截止时刻仍未接收到所述丢失数据包,则所述方法还包括:
将当前存在于所述接收缓冲区中的所述第三数据包以及与所述第三数据包对应同一音视频帧的数据包释放给所述解码器;
通过所述解码器,得到所述第三数据包对应的音视频帧。
8.一种数据处理装置,其特征在于,所述装置包括:
接收模块,用于实时接收发送端发送的至少一个数据包,其中,对于每个所述数据包,该数据包是发送端对目标音视频中音视频帧中的数据进行封包处理后得到的,该数据包还携带有该数据包对应的音视频帧的码率,该数据包对应的音视频帧为该数据包中包括的数据在封包处理前所属的一个音视频帧;
第一判断模块,用于在将所述数据包逐个放入接收缓冲区中进行缓存的过程中,根据当前将要放入所述接收缓冲区中的第一数据包对应的码率变化率判断是否对所述接收缓冲区的存储空间大小进行调整,其中,所述码率变化率为码率差与上一个放入所述接收缓冲区中的第二数据包携带的码率的商,所述码率差为所述第一数据包携带的码率与所述第二数据包携带的码率的差;
调整模块,用于若所述第一数据包对应的码率变化率为正且大于第一预设阈值,则增加所述接收缓冲区的存储空间大小;若所述第一数据包对应的码率变化率为负且小于第二预设阈值,则减小所述接收缓冲区的存储空间大小。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一项所述的数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249454.7A CN114338571B (zh) | 2022-03-15 | 2022-03-15 | 一种数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210249454.7A CN114338571B (zh) | 2022-03-15 | 2022-03-15 | 一种数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338571A CN114338571A (zh) | 2022-04-12 |
CN114338571B true CN114338571B (zh) | 2022-05-17 |
Family
ID=81033337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210249454.7A Active CN114338571B (zh) | 2022-03-15 | 2022-03-15 | 一种数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338571B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116320612B (zh) * | 2023-05-19 | 2023-08-04 | 北京大学 | 一种视频数据传输系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101662676A (zh) * | 2009-09-30 | 2010-03-03 | 四川长虹电器股份有限公司 | 流媒体缓冲的处理方法 |
CN102378065A (zh) * | 2011-10-19 | 2012-03-14 | 江西省南城县网信电子有限公司 | 基于mpeg-4的流媒体服务器端配置缓冲区的方法及系统 |
CN112714315A (zh) * | 2019-10-24 | 2021-04-27 | 上海交通大学 | 基于全景视频的分层缓冲方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447619B2 (en) * | 2017-03-15 | 2019-10-15 | Verizon Patent And Licensing Inc. | Dynamic application buffer adaptation for proxy based communication |
-
2022
- 2022-03-15 CN CN202210249454.7A patent/CN114338571B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101662676A (zh) * | 2009-09-30 | 2010-03-03 | 四川长虹电器股份有限公司 | 流媒体缓冲的处理方法 |
CN102378065A (zh) * | 2011-10-19 | 2012-03-14 | 江西省南城县网信电子有限公司 | 基于mpeg-4的流媒体服务器端配置缓冲区的方法及系统 |
CN112714315A (zh) * | 2019-10-24 | 2021-04-27 | 上海交通大学 | 基于全景视频的分层缓冲方法及系统 |
Non-Patent Citations (4)
Title |
---|
Buffer Based Adaptation Using Scalable Video Coding for 360-Degree Video Streaming over NDN;Taku Ogasawara 等;《IEEE Xplore》;20201231;全文 * |
Practical and Dynamic Buffer Sizing Using LearnQueue;Nader Bouacida 等;《IEEE TRANSACTIONS ON MOBILE COMPUTING》;20190831;第18卷(第8期);全文 * |
基于RTP的WebRTC音视频传输优化方法;李波 等;《西安邮电大学学报》;20190131;第24卷(第1期);全文 * |
无线流媒体系统的多模式自适应缓冲设计;欧巧凤 等;《南昌航空大学学报》;20100930;第24卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114338571A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111010582B (zh) | 一种云桌面图像处理方法、装置、设备及可读存储介质 | |
CN114338571B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111128203B (zh) | 音频数据编码、解码方法、装置、电子设备及存储介质 | |
CN110493116B (zh) | 一种车联网数据传输方法及装置 | |
JP2017508372A (ja) | 輻輳制御ビットレート・アルゴリズム | |
US20110299589A1 (en) | Rate control in video communication via virtual transmission buffer | |
CN114640886B (zh) | 自适应带宽的音视频传输方法、装置、计算机设备及介质 | |
CN107659819B (zh) | 一种视频转码的方法和装置 | |
CN113992967A (zh) | 一种投屏数据传输方法、装置、电子设备及存储介质 | |
CN104427286A (zh) | 一种进行视频通话的方法和系统 | |
CN113810769A (zh) | 数据传输方法及系统 | |
CN105898358B (zh) | 视频数据的发送方法及装置 | |
CN112865910A (zh) | 一种数据传输方法、装置、终端设备和存储介质 | |
CN113868182A (zh) | 一种数据压缩方法、装置、设备和介质 | |
CN105554375A (zh) | 一种硬盘录像机中视频预览的方法及装置 | |
US11329795B2 (en) | Communication device, method for controlling size of generated data, and program | |
CN108139987B (zh) | 一种数据转移的进度计算方法、装置及系统 | |
CN101931492A (zh) | 数据块前向纠错算法的确定方法与装置 | |
CN106293996B (zh) | 数据同步方法、主设备、备份设备和系统 | |
CN113541853B (zh) | 数据传输方法、终端及计算机可读存储介质 | |
EP4020931A1 (en) | Managing data flow between source node and recipient node | |
CN112954374B (zh) | 视频数据处理方法、装置、电子设备及存储介质 | |
CN105187688A (zh) | 一种对手机采集的实时视频和音频进行同步的方法及系统 | |
CN107454462B (zh) | 一种数据传输方法、装置及系统 | |
CN109495162B (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 |