System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及音频数据处理,尤其涉及一种音频编码数据包的处理方法及装置。
技术介绍
1、实时通信架构中的音频jitter buffer(抖动缓冲区)作为实时音视频通话的重要环节,主要作用是缓存接收的音频媒体数据包,平滑地向解码部分输出数据,并且能够应对在接收音频数据包时出现的抖动、丢失、延迟等情况。
2、然而,由于音频jitter buffer针对同一时间戳只会缓存一个音频编码数据包,因此音频jitter buffer只支持处理单描述编码(single description coding,sdc)码流。多描述编码(multiple description coding,mdc)码流在相同时间戳内可能会存在多个音频编码数据包,而音频jitter buffer只缓存其中的一个音频编码数据包,进而可能会造成在音频处理时音频数据丢失的问题,使解码音频质量降低,影响用户体验。
技术实现思路
1、有鉴于此,本申请实施例提供了一种音频编码数据包的处理方法及装置,用于避免mdc码流数据丢失。
2、为了实现上述目的,本申请实施例提供技术方案如下:
3、第一方面,本申请的实施例提供了一种音频编码数据包的处理方法,包括:
4、解析音频编码数据包,以获取所述音频编码数据包的数据包信息,所述数据包信息包括所述音频编码数据包的时间戳和描述索引值,其中,所述音频编码数据包是对音频数据进行编码得到的,所述音频编码数据包中包括对所述音频数据的至少一个描述,所述描述索引值
5、判断数据包缓存中是否缓存有数据包信息与所述音频编码数据包的数据包信息相同的数据包;
6、若否,则根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存。
7、作为本申请实施例一种可选的实施方式,所述方法还包括:
8、确定目标时间戳,所述目标时间戳为当前需要解码的音频编码数据包的时间戳;
9、从所述数据包缓存中读取各个时间戳为所述目标时间戳的音频编码数据包;
10、对各个时间戳为所述目标时间戳的音频编码数据包进行解码,以获取所述目标时间戳的音频数据。
11、作为本申请实施例一种可选的实施方式,当各个描述分别在一个音频编码数据包中传输时,所述根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存,包括:
12、在所述数据包缓存中所述确定所述音频编码数据包的时间戳对应的缓存空间;
13、根据所述音频编码数据包的描述索引值确定所述音频编码数据包在所述缓存空间中的缓存顺序;
14、根据所述音频编码数据包在所述缓存空间中的缓存顺序将所述音频编码数据包写入所述缓存空间。
15、作为本申请实施例一种可选的实施方式,所述音频编码数据包的数据包信息还包括所述音频编码数据包的序列号和所述音频编码数据包对应的音频数据的描述数量;所述方法还包括:
16、根据所述音频编码数据包的序列号和所述音频编码数据包的描述索引值,获取第一序列号,所述第一序列号为传输时间戳为第一时间戳的首个描述的音频编码数据包的序列号,所述第一时间戳为所述音频编码数据包的时间戳;
17、根据所述第一序列号、第二序列号以及所述描述数量,获取所述音频编码数据包的延时;所述第二序列号为传输时间戳为第二时间戳的首个描述的音频编码数据包的序列号,所述第二时间戳为上一个接收的音频编码数据包的时间戳。
18、作为本申请实施例一种可选的实施方式,所述方法还包括:
19、根据所述第一序列号、所述第二序列号、所述第一时间戳、所述第二时间戳、所述描述数量以及音频数据的采样率,获取所述音频编码数据包的打包时长;
20、根据所述第一序列号、所述第二序列号以及所述描述数量,获取所述音频编码数据包的延时;
21、根据所述打包时长和所述延时调整所述音频编码数据包对应的音频播放参数。
22、作为本申请实施例一种可选的实施方式,当同一时间戳的音频数据的描述在同一音频编码数据包中传输时,所述根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存,包括:
23、确定所述音频编码数据包是否携带有多个时间戳的音频数据的描述;
24、若否,则在所述数据包缓存中确定所述音频编码数据包的时间戳对应的缓存空间,并将所述音频编码数据包写入所述缓存空间;
25、若是,则分别在所述数据包缓存中确定所述多个时间戳对应的缓存空间,分别将所述音频编码数据包写入所述多个时间戳对应的缓存空间以及将写入任一时间戳对应的缓存空间的所述音频编码数据包的时间戳修改为该时间戳。
26、作为本申请实施例一种可选的实施方式,所述从所述数据包缓存中读取各个时间戳为所述目标时间戳的音频编码数据包,包括:
27、读取所述目标时间戳对应的缓存空间中的所有音频编码数据包。
28、作为本申请实施例一种可选的实施方式,所述方法还包括:
29、在确定所述目标时间戳之后,丢弃所述数据包缓存中时间戳小于所述目标时间戳的音频编码数据包。
30、作为本申请实施例一种可选的实施方式,所述方法还包括:
31、当所述数据包缓存中缓存有数据包信息与所述音频编码数据包的数据包信息相同的数据包时,比较所述音频编码数据包与所述数据包的优先级;
32、若所述音频编码数据包的优先级高于所述数据包的优先级,则将所述数据包替换为所述音频编码数据包;
33、若所述音频编码数据包的优先级低于所述数据包的优先级,则将所述音频编码数据包丢弃。
34、第二方面,本申请实施例提供一种音频编码数据包的处理装置,包括:
35、处理单元,解析音频编码数据包,以获取所述音频编码数据包的数据包信息,所述数据包信息包括所述音频编码数据包的时间戳和描述索引值,其中,所述音频编码数据包是对音频数据进行编码得到的,所述音频编码数据包中包括对所述音频数据的至少一个描述,所述描述索引值为所述描述的索引;
36、判断单元,用于判断数据包缓存中是否缓存有数据包信息与所述音频编码数据包的数据包信息相同的数据包;
37、写入单元,用于在数据包缓存中未缓存有数据包信息与所述音频编码数据包的数据包信息相同的数据包的情况下,根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存。
38、作为本申请实施例一种可选的实施方式,所述音频编码数据包的处理装置还包括:
39、确定单元,用于确定目标时间戳,所述目标时间戳为当前需要解码的音频编码数据包的时间戳;
40、读取单元,用于从所述数据包缓存中读取各个时间戳为所述目标时间戳的音频编码数据包;
41、解码单元,用于对各个时间戳为所述目标时间戳的音频编码数据包进行解码,以获取所述目标时间戳的音本文档来自技高网...
【技术保护点】
1.一种音频编码数据包的处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,当各个描述分别在一个音频编码数据包中传输时,所述根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存,包括:
4.根据权利要求3所述的方法,其特征在于,所述音频编码数据包的数据包信息还包括所述音频编码数据包的序列号和所述音频编码数据包对应的音频数据的描述数量;所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求2所述的方法,其特征在于,当同一时间戳的音频数据的描述在同一个音频编码数据包中传输时,所述根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存,包括:
7.根据权利要求3或6所述的方法,其特征在于,所述从所述数据包缓存中读取各个时间戳为所述目标时间戳的音频编码数据包,包括:
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
9.根据权利
10.一种音频编码数据包的处理装置,其特征在于,包括:
11.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于在执行计算机程序时,使得所述电子设备实现权利要求1-9任一项所述的音频编码数据包的处理方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序被计算设备执行时,使得所述计算设备实现权利要求1-9任一项所述的音频编码数据包的处理方法。
...【技术特征摘要】
1.一种音频编码数据包的处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,当各个描述分别在一个音频编码数据包中传输时,所述根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存,包括:
4.根据权利要求3所述的方法,其特征在于,所述音频编码数据包的数据包信息还包括所述音频编码数据包的序列号和所述音频编码数据包对应的音频数据的描述数量;所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求2所述的方法,其特征在于,当同一时间戳的音频数据的描述在同一个音频编码数据包中传输时,所述根据所述音频编码数据包的数据包信息将所述音频编码数据包写入所述数据包缓存,包括...
【专利技术属性】
技术研发人员:伍子谦,张德军,蒋佳为,王鹤,林坤鹏,肖益剑,丁飘,宋慎义,
申请(专利权)人:抖音视界有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。