文件封装方法、文件传输方法、文件解码方法及相关设备转让专利

申请号 : CN202210444842.0

文献号 : CN114845134B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡颖

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本公开提供了一种文件封装方法、文件传输方法、文件解码方法及相关设备。该文件封装方法包括:获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息;封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息;将所述第一封装文件发送至第一设备。本公开实施例中提供的方案能够在文件封装中指示相应的时域层级信息。

权利要求 :

1.一种文件封装方法,其特征在于,包括:

获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息,所述目标视频在编码过程中确定的所述样本的时域层级信息包括所述目标视频中的目标轨道对应的视频码流中的时域层数,以及所述目标轨道对应的视频码流中的各个样本的时域层级;

封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息;

将所述第一封装文件发送至第一设备;

其中,封装编码后的所述目标视频,生成第一封装文件,包括:

在所述第一封装文件中添加时域层数字段,用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;

在所述第一封装文件中添加时域层级标识符,用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;以使所述第一设备在接收到所述第一封装文件后,在所述第一设备确定第二设备处于第三网络状态时,所述第一设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件,将所述第二封装文件发送至所述第二设备;或者,以使所述第一设备在确定第二设备处于第一网络状态时,将所述第一封装文件转发至第二设备,当所述第二设备确定所述第二设备处于第三解码能力状态时,所述第二设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,选择性地丢弃所述样本中处于高时域层级的样本,将选择性地丢弃所述样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本,解码所述待解码样本。

2.根据权利要求1所述的文件封装方法,其特征在于,所述目标视频在编码过程中确定的所述样本的时域层级信息还包括所述目标轨道对应的视频码流中的样本中的独立切换点样本以及所述独立切换点样本的有效范围;

封装编码后的所述目标视频,生成第一封装文件,还包括:

根据所述独立切换点样本的有效范围内的样本个数,在所述第一封装文件中添加数量字段。

3.一种文件传输方法,其特征在于,所述方法由第一设备执行,所述方法包括:

接收第一封装文件,所述第一封装文件是封装编码后的目标视频生成的,所述目标视频包括样本,其中所述第一封装文件中包括所述样本的时域层级信息,所述第一封装文件中包括的所述样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;

在确定第二设备处于第三网络状态时,通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,将选择性地丢弃所述处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待传输样本;重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件;

将所述第二封装文件发送至所述第二设备。

4.根据权利要求3所述的文件传输方法,其特征在于,还包括:

获得所述第二设备的网络状态信息;

若根据所述网络状态信息确定所述第二设备处于第一网络状态,则将所述第一封装文件传输至所述第二设备。

5.根据权利要求4所述的文件传输方法,其特征在于,还包括:

若根据所述网络状态信息确定所述第二设备处于第二网络状态,则根据所述第一封装文件中的所述样本的时域层级信息获得所述样本中的独立切换点样本;

选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本,重新封装包括选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本之后剩余样本的目标视频,生成并发送第二封装文件。

6.一种文件解码方法,其特征在于,所述方法由第二设备执行,所述方法包括:

接收目标封装文件,所述目标封装文件是封装编码后的目标视频中的至少部分样本生成的,其中所述目标封装文件中包括所述至少部分样本的时域层级信息,所述目标封装文件中包括的所述至少部分样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述目标封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;

当确定所述第二设备处于第三解码能力状态时,通过对所述目标封装文件进行解封装获得所述至少部分样本的时域层级标识符,根据所述至少部分样本的时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述至少部分样本中处于高时域层级的样本,选择性地丢弃所述至少部分样本中处于高时域层级的样本,将选择性地丢弃所述至少部分样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本;

解码所述待解码样本。

7.根据权利要求6所述的文件解码方法,其特征在于,还包括:

获得所述第二设备的解码能力信息;

若根据所述第二设备的解码能力信息确定所述第二设备处于第一解码能力状态,则将所述至少部分样本作为所述待解码样本。

8.根据权利要求7所述的文件解码方法,其特征在于,还包括:

若根据所述第二设备的解码能力信息确定所述第二设备处于第二解码能力状态,则根据所述目标封装文件中的所述至少部分样本的时域层级信息获得所述至少部分样本中的独立切换点样本;

选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本,将选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本之后的剩余样本作为所述目标视频中的待解码样本并解码。

9.一种文件封装装置,其特征在于,包括:

时域层级信息获得单元,用于获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息,所述目标视频在编码过程中确定的所述样本的时域层级信息包括所述目标视频中的目标轨道对应的视频码流中的时域层数,以及所述目标轨道对应的视频码流中的各个样本的时域层级;

第一封装文件生成单元,用于封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息;

第一封装文件发送单元,用于将所述第一封装文件发送至第一设备;

其中,所述第一封装文件生成单元包括:

时域层数字段添加单元,用于在所述第一封装文件中添加时域层数字段,用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;

时域层级标识符添加单元,用于在所述第一封装文件中添加时域层级标识符,用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;以使所述第一设备在接收到所述第一封装文件后,在所述第一设备确定第二设备处于第三网络状态时,所述第一设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件,将所述第二封装文件发送至所述第二设备;或者,以使所述第一设备在确定第二设备处于第一网络状态时,将所述第一封装文件转发至第二设备,当所述第二设备确定所述第二设备处于第三解码能力状态时,所述第二设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,选择性地丢弃所述样本中处于高时域层级的样本,将选择性地丢弃所述样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本,解码所述待解码样本。

10.一种文件传输装置,其特征在于,所述文件传输装置设置于第一设备,所述装置包括:

第一封装文件接收单元,用于接收第一封装文件,所述第一封装文件是封装编码后的目标视频生成的,所述目标视频包括样本,其中所述第一封装文件中包括所述样本的时域层级信息,所述第一封装文件中包括的所述样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;

待传输样本确定单元,用于在确定第二设备处于第三网络状态时,通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,将选择性地丢弃所述处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待传输样本;重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件;

待传输样本发送单元,用于将所述第二封装文件发送至所述第二设备。

11.一种文件解码装置,其特征在于,所述文件解码装置设置于第二设备,所述装置包括:

目标封装文件接收单元,用于接收目标封装文件,所述目标封装文件是封装编码后的目标视频中的至少部分样本生成的,其中所述目标封装文件中包括所述至少部分样本的时域层级信息,所述目标封装文件中包括的所述至少部分样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述目标封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;

待解码样本确定单元,用于当确定所述第二设备处于第三解码能力状态时,通过对所述目标封装文件进行解封装获得所述至少部分样本的时域层级标识符,根据所述至少部分样本的时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述至少部分样本中处于高时域层级的样本,选择性地丢弃所述至少部分样本中处于高时域层级的样本,将选择性地丢弃所述至少部分样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本;

待解码样本解码单元,用于解码所述待解码样本。

12.根据权利要求11所述的文件解码装置,其特征在于,所述待解码样本确定单元包括:

解码能力信息获得单元,用于获得所述第二设备的解码能力信息;

直接解码单元,用于若根据所述第二设备的解码能力信息确定所述第二设备处于第一解码能力状态,则将所述至少部分样本作为所述待解码样本。

13.根据权利要求12所述的文件解码装置,其特征在于,所述装置还包括:

独立切换点样本确定单元,用于若根据所述第二设备的解码能力信息确定所述第二设备处于第二解码能力状态,则根据所述目标封装文件中的所述至少部分样本的时域层级信息获得所述至少部分样本中的独立切换点样本;

独立切换点样本前样本丢弃单元,用于选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本,将选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本之后的剩余样本作为所述目标视频中的待解码样本并解码。

14.一种电子设备,其特征在于,包括:

至少一个处理器;

存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如权利要求1或2所述的文件封装方法或者如权利要求

3至5中任一项所述的文件传输方法或者如权利要求6至8中任一项所述的文件解码方法。

15.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1或2所述的文件封装方法或者如权利要求3至5中任一项所述的文件传输方法或者如权利要求6至8中任一项所述的文件解码方法。

说明书 :

文件封装方法、文件传输方法、文件解码方法及相关设备

[0001] 本申请是2020年10月16日提交的、申请号为202011111925.5、发明名称为“文件封装方法、文件传输方法、文件解码方法及相关设备”的分案申请。

技术领域

[0002] 本公开涉及视频封装技术领域,具体而言,涉及一种文件封装方法、文件传输方法、文件解码方法、文件封装装置、文件传输装置、文件解码装置、电子设备和计算机可读存储介质。

背景技术

[0003] 在相关技术中的视频编码技术中,时域层级划分的技术虽然得到了支持,但仅在编码码流中指示了图像帧的层级编号、最大层数等信息。
[0004] 一方面,为了获得编码码流中指示的时域层级信息,需要网络设备解码编码码流后才能获得,考虑到视频解码的运算复杂度,需要占用大量的计算资源;另一方面,实际情况中,很多网络设备不支持解码算法的实现,这会导致这些网络设备无法获取到编码码流中的时域层级信息。
[0005] 因此,需要一种新的文件封装方法、文件传输方法、文件解码方法、文件封装装置、文件传输装置、文件解码装置、电子设备和计算机可读存储介质。
[0006] 需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解。

发明内容

[0007] 本公开实施例提供一种文件封装方法、文件传输方法、文件解码方法、文件封装装置、文件传输装置、文件解码装置、电子设备和计算机可读存储介质,能够在文件封装中指示相应的时域层级信息。
[0008] 本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
[0009] 本公开实施例提供一种文件封装方法,所述方法包括:获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息,所述目标视频在编码过程中确定的所述样本的时域层级信息包括所述目标视频中的目标轨道对应的视频码流中的时域层数,以及所述目标轨道对应的视频码流中的各个样本的时域层级;封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息;将所述第一封装文件发送至第一设备。
[0010] 其中,封装编码后的所述目标视频,生成第一封装文件,包括:在所述第一封装文件中添加时域层数字段,用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;在所述第一封装文件中添加时域层级标识符,用于指示所述目标轨道对应的视频码流中的各个样本的时域层级。
[0011] 其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;以使所述第一设备在接收到所述第一封装文件后,在所述第一设备确定第二设备处于第三网络状态时,所述第一设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件,将所述第二封装文件发送至所述第二设备;或者,以使所述第一设备在确定第二设备处于第一网络状态时,将所述第一封装文件转发至第二设备,当所述第二设备确定所述第二设备处于第三解码能力状态时,所述第二设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,选择性地丢弃所述样本中处于高时域层级的样本,将选择性地丢弃所述样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本,解码所述待解码样本。
[0012] 本公开实施例提供一种文件传输方法,所述方法由第一设备执行,所述方法包括:接收第一封装文件,所述第一封装文件是封装编码后的目标视频生成的,所述目标视频包括样本,其中所述第一封装文件中包括所述样本的时域层级信息,所述第一封装文件中包括的所述样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;在确定第二设备处于第三网络状态时,通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,将选择性地丢弃所述处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待传输样本;重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件;将所述第二封装文件发送至所述第二设备。
[0013] 本公开实施例提供一种文件解码方法,所述方法由第二设备执行,所述方法包括:接收目标封装文件,所述目标封装文件是封装编码后的目标视频中的至少部分样本生成的,其中所述目标封装文件中包括所述至少部分样本的时域层级信息,所述目标封装文件中包括的所述至少部分样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述目标封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;当确定所述第二设备处于第三解码能力状态时,通过对所述目标封装文件进行解封装获得所述至少部分样本的时域层级标识符,根据所述至少部分样本的时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述至少部分样本中处于高时域层级的样本,选择性地丢弃所述至少部分样本中处于高时域层级的样本,将选择性地丢弃所述至少部分样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本;
解码所述待解码样本。
[0014] 本公开实施例提供一种文件封装装置,所述装置包括:时域层级信息获得单元,用于获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息,所述目标视频在编码过程中确定的所述样本的时域层级信息包括所述目标视频中的目标轨道对应的视频码流中的时域层数,以及所述目标轨道对应的视频码流中的各个样本的时域层级;第一封装文件生成单元,用于封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息;第一封装文件发送单元,用于将所述第一封装文件发送至第一设备。
[0015] 其中,所述第一封装文件生成单元包括:时域层数字段添加单元,用于在所述第一封装文件中添加时域层数字段,用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;时域层级标识符添加单元,用于在所述第一封装文件中添加时域层级标识符,用于指示所述目标轨道对应的视频码流中的各个样本的时域层级。
[0016] 其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;以使所述第一设备在接收到所述第一封装文件后,在所述第一设备确定第二设备处于第三网络状态时,所述第一设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件,将所述第二封装文件发送至所述第二设备;或者,以使所述第一设备在确定第二设备处于第一网络状态时,将所述第一封装文件转发至第二设备,当所述第二设备确定所述第二设备处于第三解码能力状态时,所述第二设备用于通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,选择性地丢弃所述样本中处于高时域层级的样本,将选择性地丢弃所述样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本,解码所述待解码样本。
[0017] 本公开实施例提供一种文件传输装置,所述文件传输装置设置于第一设备,所述装置包括:第一封装文件接收单元,用于接收第一封装文件,所述第一封装文件是封装编码后的目标视频生成的,所述目标视频包括样本,其中所述第一封装文件中包括所述样本的时域层级信息,所述第一封装文件中包括的所述样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;待传输样本确定单元,用于在确定第二设备处于第三网络状态时,通过对所述第一封装文件进行解封装获得所述时域层级标识符,根据所述时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述样本中处于高时域层级的样本,并选择性地丢弃所述处于高时域层级的样本,将选择性地丢弃所述处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待传输样本;重新封装包括选择性地丢弃所述高时域层级的样本之后剩余样本的目标视频,生成第二封装文件;待传输样本发送单元,用于将所述第二封装文件发送至所述第二设备。
[0018] 本公开实施例提供一种文件解码装置,所述文件解码装置设置于第二设备,所述装置包括:目标封装文件接收单元,用于接收目标封装文件,所述目标封装文件是封装编码后的目标视频中的至少部分样本生成的,其中所述目标封装文件中包括所述至少部分样本的时域层级信息,所述目标封装文件中包括的所述至少部分样本的时域层级信息包括时域层数字段和时域层级标识符,所述时域层数字段用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;所述时域层级标识符用于指示所述目标轨道对应的视频码流中的各个样本的时域层级;其中所述目标封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内;待解码样本确定单元,用于当确定所述第二设备处于第三解码能力状态时,通过对所述目标封装文件进行解封装获得所述至少部分样本的时域层级标识符,根据所述至少部分样本的时域层级标识符所指示的所述目标轨道对应的视频码流中的各个样本的时域层级获得所述至少部分样本中处于高时域层级的样本,选择性地丢弃所述至少部分样本中处于高时域层级的样本,将选择性地丢弃所述至少部分样本中处于高时域层级的样本之后的剩余样本确定为所述目标视频中的待解码样本;待解码样本解码单元,用于解码所述待解码样本。
[0019] 本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的文件封装方法或者文件传输方法或者文件解码方法。
[0020] 本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的文件封装方法或者文件传输方法或者文件解码方法。
[0021] 在本公开的一些实施例所提供的技术方案中,通过在目标视频的第一封装文件中指示该目标视频相应的时域层级信息,一方面,可以使得视频传输和消费中的第一设备在网络传输和消费的过程中更加便捷地获取时域层级信息,不需要解码该目标视频的编码码流即可获得该时域层级信息,节约了大量的计算资源;另一方面,即使第一设备不具备解码算法的实现能力,也能够及时地获取到该目标视频的时域层级信息,从而能够更好地指导该目标视频的传输和解码过程。
[0022] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0023] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0024] 图1示意性示出了根据本公开的一实施例的视频处理过程的示意图。
[0025] 图2示意性示出了相关技术中的一种视频编码基本框图。
[0026] 图3示意性示出了根据本公开的一实施例的文件封装方法的流程图。
[0027] 图4示意性示出了根据本公开的一实施例的文件封装方法的流程图。
[0028] 图5示意性示出了根据本公开的一实施例的视频帧之间的解码依赖关系的示意图。
[0029] 图6示意性示出了根据本公开的一实施例的文件封装方法的流程图。
[0030] 图7示意性示出了根据本公开的一实施例的独立切换点样本的示意图。
[0031] 图8示意性示出了根据本公开的一实施例的文件传输方法的流程图。
[0032] 图9示意性示出了根据本公开的一实施例的文件解码方法的流程图。
[0033] 图10示意性示出了根据本公开的一实施例的文件封装装置的框图。
[0034] 图11示意性示出了根据本公开的一实施例的文件传输装置的框图。
[0035] 图12示意性示出了根据本公开的一实施例的文件解码装置的框图。
[0036] 图13示出了适于用来实现本公开实施例的电子设备的结构示意图。

具体实施方式

[0037] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
[0038] 此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
[0039] 附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0040] 附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0041] 首先对本公开实施例中涉及的部分术语进行说明。
[0042] AVS:Audio Video Coding Standard,音视频编码标准。
[0043] AVS3:由AVS标准组推出的第三代音视频编码标准。
[0044] HEVC:High Efficiency Video Coding,高效视频编码,也称之为H.265。
[0045] VVC:Versatile Video Coding,多功能视频编码,也称之为H.266。
[0046] Intra(picture)Prediction:帧内预测。
[0047] Inter(picture)Prediction:帧间预测。
[0048] SCC:screen content coding,屏幕内容/图像编码。
[0049] Loop Filtering:环路滤波。
[0050] QP:Quantization Parameter,量化参数。
[0051] LCU:Largest Coding Unit,最大编码单元。
[0052] CTU:Coding Tree Unit,编码树单元,一般由最大编码单元开始往下划分。
[0053] CU:Coding Unit,编码单元。
[0054] PU:Prediction Unit,预测单元。
[0055] MV:Motion Vector,运动矢量。
[0056] MVP:Motion Vector Prediction,运动矢量预测值。
[0057] MVD:Motion Vector Difference,MVP与MV的真正估值之间的差值。
[0058] AMVP:Advanced Motion Vector Prediction,高级运动矢量预测。
[0059] ME:Motion Estimation,运动估计,得到运动矢量MV的过程称作为运动估计,作为运动补偿(Motion Compensation,MC)中的技术。
[0060] MC:根据运动矢量和帧间预测方法,求得当前图像的估计值过程。运动补偿是一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧的每个小块怎样移动到当前帧中的某个位置去。这种方法经常被视频压缩/视频编解码器用来减少视频序列中的空域冗余。相邻的帧通常很相似,也就是说,包含了很多冗余。使用运动补偿的目的是通过消除这种冗余,来提高压缩比。
[0061] BV:Block Vector,块位移矢量/块矢量。
[0062] BVP:Block Vector Prediction,块矢量预测值。
[0063] BVD:Block Vector Difference,BVP与BV的真正估值之间的差值。
[0064] I Slice:Intra Slice,帧内条带/片。可以把图像分成一帧(frame)或两场(field),而帧又可以分成一个或几个片(Slice)。
[0065] ISOBMFF:ISO Based Media File Format,基于ISO(International Standard Organization,国际标准化组织)标准的媒体文件格式。ISOBMFF是媒体文件的封装标准,最典型的ISOBMFF文件即MP4(Moving Picture Experts Group 4,动态图像专家组4)文件。
[0066] 图1示意性示出了根据本公开的一实施例的视频处理过程的示意图。
[0067] 如图1所示,视频的完整处理过程可以包括视频采集,视频编码,视频文件封装,视频文件传输,视频文件解封装,视频解码和最终的视频呈现。
[0068] 由此可知,在对视频文件进行编码后,需要对编码后的数据流进行封装并传输给用户。在用户终端,需要进行解封装、解码等逆操作才能最终呈现视频内容。
[0069] 视频文件内容的生成,从信号的获取方式看,可以包括摄像机采集生成的真实场景,以及计算机生成的屏幕内容场景。由于统计特性的不同,其对应的压缩编码方式也可能有所区别。视频文件的压缩,通常可以通过标准化的压缩算法,如VVC,HEVC等,或一些针对该内容设计的特定的压缩算法。
[0070] 部分视频编码技术例如HEVC,VVC以及AVS,采用了混合编码框架,如图2所示,对输入的原始视频信号(input video)中的图像(pictures,称之为输入视频图像)按顺序编码,进行了如下一系列的操作和处理:
[0071] 1)块划分结构(block partition structure):将输入视频图像划分成若干个不重叠的处理单元,对每个处理单元将进行类似的压缩操作。这个处理单元可以称之为CTU或者LCU。CTU或者LCU再往下,可以继续进行更加精细的划分,得到至少一个基本编码的单元,称之为CU。每个CU是一个编码环节中最基本的元素。以下描述的是对每一个CU可能采用的各种编码方式。
[0072] 2)预测编码(Predictive Coding):包括了帧内预测和帧间预测等方式,原始视频信号经过选定的已重建视频信号的预测后,得到残差信号。编码端需要为当前CU决定在众多可能的预测编码模式中,选择最适合的一种,并告知解码端。
[0073] a.帧内预测:预测信号来自于同一图像内已经编码重建过的区域。
[0074] 其中,帧内预测的基本思想就是利用相邻像素的相关性去除空间冗余。在视频编码中,相邻像素指的就是当前CU周围的已编码CU的重建(reconstructed)像素。
[0075] b.帧间预测:预测信号来自已经编码过的,且不同于当前图像的其他图像(称之为参考图像)。
[0076] 3)变换编码及量化(Transform&Quantization):残差信号经过DFT(Discrete Fourier Transform,离散傅里叶变换),DCT(Discrete Cosine Transform,离散余弦变换)等变换操作,将残差信号转换到变换域中,称之为变换系数。在变换域中的残差信号,进一步的进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。
[0077] 在一些视频编码标准中,可能有多于一种变换方式可以选择,因此,编码端也需要为待编码的当前CU选择其中的一种变换,并告知解码端。
[0078] 其中,量化的精细程度通常由量化参数(Quantization Parameters,QP)来决定,QP取值较大时,表示更大取值范围的变换系数将被量化为同一个输出,因此通常会带来更大的失真及较低的码率;相反,QP取值较小时,表示较小取值范围的变换系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
[0079] 4)熵编码(Entropy Coding)或统计编码:量化后的变换域信号,将根据各个值出现的频率,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流(bitstream)。
[0080] 同时,编码产生其他信息,例如选择的编码模式(coding modes),运动矢量等,也需要进行熵编码以降低码率。
[0081] 其中,统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常见的统计编码方式有变长编码(Variable Length Coding,VLC)或者基于上下文的二值化算术编码(Content Adaptive Binary Arithmetic Coding,CABAC)。
[0082] 5)环路滤波(Loop Filtering):已经编码过的图像,经过反量化,反变换及预测补偿的操作(上述步骤2)~4)的反向操作),可获得重建的解码图像(decoded picture)。重建的解码图像与原始的输入图像相比,由于存在量化的影响,部分信息与原始的输入图像有所不同,产生失真(Distortion)。对重建的解码图像进行滤波操作,例如去块效应滤波(deblocking),SAO(Sample Adaptive Offset,样点自适应补偿)或者ALF(Adaptive Loop Filter,自适应环路滤波)等滤波器,可以有效的降低量化所产生的失真程度。由于这些经过滤波后的重建的解码图像,将做为后续编码图像的参考,用于对将来的信号进行预测,所以上述的滤波操作也称为环路滤波,及在编码环路内的滤波操作。
[0083] 图2展示了一个视频编码器的基本流程图。图2中以第k个CU(标记为sk[x,y])为例进行举例说明。其中,k为大于或等于1且小于或等于输入的当前图像中的CU的数量的正整数,sk[x,y]表示第k个CU中坐标为[x,y]的像素点,x表示像素点的横坐标,y表示像素点的纵坐标。sk[x,y]经过运动补偿或者帧内预测等中的一种较优处理后获得预测信号sk[x,y]与 相减得到残差信号uk[x,y],然后对该残差信号uk[x,y]进行变换和量化,量化输出的数据有两个不同的去处:一个是送给熵编码器进行熵编码,编码后的码流输出到一个缓冲器(buffer)中保存,等待传送出去;另一个应用是进行反量化和反变换后,得到* *信号u'k[x,y]。将信号u'k[x,y]与 相加得到新的预测信号s k[x,y],并将s k[x,y]送* * *
至当前图像的缓冲器中保存。sk[x,y]经过帧内‑图像预测获得f(s k[x,y])。sk[x,y]经过环路滤波后获得s'k[x,y],并将s'k[x,y]送至解码图像缓冲器中保存,以用于生成重建视频。s'k[x,y]经过运动‑补偿预测后获得s'r[x+mx,y+my],s'r[x+mx,y+my]表示参考块,mx和my分别表示运动矢量的水平和竖直分量。
[0084] 根据上述编码过程,可以看出,在解码端,对于每一个CU,解码器获得压缩码流后,先进行熵解码,获得各种模式信息及量化后的变换系数。各个变换系数经过反量化及反变换,得到残差信号。另一方面,根据已知的编码模式信息,可获得该CU对应的预测信号,两者相加之后,即可得到重建信号。最后,解码图像的重建值,需要经过环路滤波的操作,产生最终的输出信号。
[0085] 本公开实施例提供的文件封装方法可以由任意的电子设备来执行,在下面的举例说明中,以服务器执行为例进行描述,但本公开并不限定于此。
[0086] 其中,服务器可以是独立的服务器,也可以是多个服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0087] 图3示意性示出了根据本公开的一实施例的文件封装方法的流程图。
[0088] 如图3所示,本公开实施例提供的文件封装方法可以包括以下步骤。
[0089] 在步骤S310中,获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息。
[0090] 本公开实施例中,目标视频可以是视频、图像等中的任意一种,其中可以组合有音频和文本等其他内容,本公开对此不做限定。所述目标视频包括样本。
[0091] 本公开实施例中,样本(sample)是媒体文件封装过程中的封装单位,一个媒体文件由很多个样本组成。以媒体文件为视频媒体为例,视频媒体的一个样本通常为一个视频帧,下面均以一个样本为一个目标视频中的一个视频帧为例进行举例说明,但本公开并不限定于此。
[0092] 在视频编码技术中,为了更灵活地组织视频帧,可以采用一种对目标视频中的视频帧在时域上进行层级划分的技术。通过对视频帧的帧间依赖关系进行限制和分类,可以将目标视频中的视频帧在时域上划分为多个层级,称之为时域层级,与之相关的信息称之为时域层级信息,其中一个方面可以使得低时域层级的视频帧在解码时不依赖于高时域层级的视频帧。
[0093] 需要说明的是,本公开实施例中提及的低时域层级和高时域层级是相对而言的,并不是据此划分某个范围内的时域层级为“低”,另一范围内的时域层级为“高”。在对一个目标视频或者该目标视频的目标轨道而言,确定了其内包括的各个视频帧的相应时域层级后,假设其从低到高一共包括L0至L3个时域层级,则对于L0时域层级而言,L1至L3均为高时域层级;对于L1时域层级而言,L0为低时域层级,L2和L3为高时域层级;对于L2时域层级而言,L0和L1为低时域层级,L3为高时域层级;对于L3时域层级而言,L0至L2均为低时域层级。
[0094] 在步骤S320中,封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息。
[0095] 需要说明的是,
[0096] 在步骤S330中,将所述第一封装文件发送至第一设备。
[0097] 本公开实施例中,第一设备例如可以是视频传输的中间节点例如CDN(Content Delivery Network,内容分发网络)节点;再例如还可以是最终消费该目标视频的任意用户终端,在用户终端上呈现该目标视频。
[0098] 其中,用户终端例如可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、可穿戴智能设备、虚拟现实设备、增强现实设备等,但并不局限于此。
[0099] 本公开实施例中,用户终端上可以安装有视频客户端、游戏客户端、即时通讯客户端、新闻资讯客户端等各类客户端。
[0100] 本公开实施方式提供的文件封装方法,通过在目标视频的第一封装文件中指示该目标视频相应的时域层级信息,一方面,可以使得视频传输和消费中的第一设备在网络传输和消费的过程中更加便捷地获取时域层级信息,不需要解码该目标视频的编码码流即可获得该时域层级信息,节约了大量的计算资源;另一方面,即使第一设备不具备解码算法的实现能力,也能够及时地获取到该目标视频的时域层级信息,从而能够更好地指导该目标视频的传输和解码过程。
[0101] 图4示意性示出了根据本公开的一实施例的文件封装方法的流程图。如图4所示,本公开实施例提供的文件封装方法可以包括以下步骤。
[0102] 在步骤S310中,获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息。
[0103] 在示例性实施例中,所述目标视频在编码过程中确定的所述样本的时域层级信息可以包括所述目标视频中的目标轨道对应的视频码流中的时域层数,以及可以包括所述目标轨道对应的视频码流中的各个样本的时域层级。
[0104] 例如,如图5所示,在目标视频的视频编码阶段,采用时域分层技术,将目标视频中不同的视频帧按照解码时的依赖关系,划分为不同的时域层级。
[0105] 在目标视频压缩时,为了节省存储空间,往往会采取各种压缩算法减少数据的容量,例如可以采用I、P、B帧,其中,I帧是关键帧,属于帧内压缩,解码时只需要利用到I帧其本身的信息即可;P帧为前向预测编码帧,即P帧解码时需要参考前面相关帧的信息才能解码;B帧为双向预测编码帧,解码时既需要参考前面已有的帧又需要参考后面待解码的帧,他们都是基于I帧来压缩数据。在下面的举例说明中,在I、P、B帧下添加阿拉伯数字下标用于表示其各自所处的对应的时域层级。
[0106] 具体来说,划分为低时域层级的视频帧,在解码时无需参考高时域层级的视频帧。以图5为例,假设目标视频中的视频帧一共包括四个时域层级,从低时域层级到高时域层级依次表示为L0、L1、L2、L3,其中箭头表示解码时的依赖关系,从I0帧至B1帧的箭头表示处于L1时域层级的B1帧在解码时需要参考处于L0时域层级的I0帧,其余帧之间的关系以此类推,处于L1时域层级的B1帧在解码时需要参考处于L0时域层级的P0帧,处于L2时域层级的第一个B2帧在解码时需要参考处于L0时域层级的I0帧和处于L1时域层级的B1帧,处于L2时域层级的第二个B2帧在解码时需要参考处于L1时域层级的B1帧和处于L0时域层级的P0帧,处于L3时域层级的第一个B3帧在解码时需要参考处于L0时域层级的I0帧和处于L2时域层级的第一个B2帧,处于L3时域层级的第二个B3帧在解码时需要参考处于L2时域层级的第一个B2帧和处于L1时域层级的B1帧,处于L3时域层级的第三个B3帧在解码时需要参考处于L1时域层级的B1帧和处于L2时域层级的第二个B2帧,处于L3时域层级的第四个B3帧在解码时需要参考处于L2时域层级的第二个B2帧和处于L0时域层级的第二个P0帧。
[0107] 由图5中帧间依赖关系可见,所有视频帧根据依赖关系被划分为L0、L1、L2、L3四个时域层级,每个时域层级对应的视频帧在解码时都不依赖相比其时域层级的高时域层级的视频帧。基于该时域分层技术,可以在目标视频的传输、解码过程中,有选择性地丢弃某些时域层级的视频帧,同时不影响其他视频帧的解码。
[0108] 在步骤S320中,封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息。
[0109] 在图4实施例中,上述图3实施例中的步骤S320可以进一步包括以下步骤。
[0110] 在步骤S321中,在所述第一封装文件中添加时域层数字段(例如下文举例的temporal_layer_num),用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数。
[0111] 在步骤S322中,在所述第一封装文件中添加时域层级标识符(例如下文举例的temporal_layer_id),用于指示所述目标轨道对应的视频码流中的各个样本的时域层级。
[0112] 其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内。
[0113] 图4实施例的步骤S330可以参照上述实施例。
[0114] 在AVS3视频编码技术中,虽然时域层级划分的技术得到了支持,但AVS3的编码技术仅在编码码流中指示了图像帧的层级编号、最大层数等信息。考虑到视频解码的运算复杂度以及很多网络设备不支持解码算法的现实,为了在网络传输的过程中更加便捷地获取时域层级信息,并根据时域层级信息决定各个图像帧在传输过程中的优先级,在文件封装中指示相应的时域层级信息因此十分必要。
[0115] 本公开实施方式提供的文件封装方法,针对视频编码标准例如AVS3中提出的时域层级划分算法,结合时域层级划分的应用场景,对应给出一种针对时域层级划分的文件封装方法,通过在目标视频的第一封装文件中指示该目标视频相应的时域层级信息,在第一封装文件中通过添加时域层数字段和时域层级标识符,即可指示目标视频中的各个样本所处的时域层级,一方面,可以使得视频传输和消费中的第一设备在网络传输和消费的过程中更加便捷地获取时域层级信息,不需要解码该目标视频的编码码流即可获得该时域层级信息,节约了大量的计算资源;另一方面,即使第一设备不具备解码算法的实现能力,也能够及时地获取到该目标视频的时域层级信息,从而能够更好地指导该目标视频的传输和解码过程。同时,可以使视频传输的中间节点根据网络状况、消费该目标视频的用户终端根据设备能力,选择性地丢弃处于高时域层级的视频帧,且不影响其他低时域层级视频帧的解码,从而在最大限度保证用户观看体验的前提下,达到降低网络负载、设备负载的效果。
[0116] 图6示意性示出了根据本公开的一实施例的文件封装方法的流程图。如图6所示,本公开实施例提供的文件封装方法可以包括以下步骤。
[0117] 在步骤S310中,获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息。
[0118] 图6实施例中,所述目标视频在编码过程中确定的所述样本的时域层级信息除了包括上述图5实施例中的所述目标视频中的目标轨道对应的视频码流中的时域层数,以及包括所述目标轨道对应的视频码流中的样本的时域层级,还可以包括所述目标轨道对应的视频码流中的样本中的独立切换点样本以及所述独立切换点样本的有效范围。
[0119] 其中,在时域分层技术中,除了低时域层级的视频帧在解码时不依赖高时域层级的视频帧这一特性外,还可以通过限制帧间依赖关系,使得一定范围的视频帧内(即下文所述的独立切换点的有效范围),某一视频帧之后(指解码顺序之后)的同时域层级的视频帧在解码时也不依赖该视频帧之前的同时域层级的视频帧,这种特殊的视频帧可以称之为时域层级切换点或者独立切换点样本或者独立切换点视频帧。
[0120] 更进一步地,还可以使得独立切换点视频帧之后(指解码顺序之后)的时域层级高于独立切换点视频帧的时域层级的视频帧,在解码上不依赖于独立切换点视频帧之前的与独立切换点视频帧同时域层级或高时域层级的视频帧。
[0121] 需要说明的是,在本公开实施例中,通过独立切换点样本的作用区间来规定独立切换点样本的有效范围。但在其他的标准/方案中,可以按照别的划分方式来规定独立切换点样本的有效范围,即帧间的不依赖在一定范围内有效。
[0122] 例如,如图7所示,假设目标视频中依次存在I0、P1、P2、P3、P4、P5、P6、P7和P8视频帧,I0帧为IDR(Instantaneous Decoding Refresh,即时解码刷新)帧,IDR帧属于I帧。并假设I0、P4和P8视频帧处于L0时域层级,P2和P6视频帧处于L1时域层级,P1、P3、P5和P7视频帧处于L2时域层级,由此可知,P1,P2,P3和P5视频帧均为时域层级的独立切换点样本。
[0123] 例如图7中的P2视频帧为独立切换点样本,则P2视频帧之后的时域层级高于P2视频帧的视频帧P3、P5和P7等均在解码上不依赖于P2视频帧之前的与P2视频帧同时域层级或高时域层级的视频帧,即P3,P5和P7视频帧的解码均与P1视频帧无关系。
[0124] 在步骤S320中,封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息。
[0125] 在图4实施例中,上述图3实施例中的步骤S320可以进一步包括以下步骤。
[0126] 在步骤S321中,在所述第一封装文件中添加时域层数字段,用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数。
[0127] 在步骤S322中,在所述第一封装文件中添加时域层级标识符,用于指示所述目标轨道对应的视频码流中的各个样本的时域层级。
[0128] 图6实施例的步骤S321和S322可以参照上述实施例。
[0129] 在步骤S323中,在所述第一封装文件中添加独立切换点标识符,用于指示所述目标轨道对应的视频码流中的样本中的独立切换点样本。
[0130] 在示例性实施例中,所述独立切换点标识符可以包括同层级切换点标识符(例如下文举例的same_layer_switch_flag)。
[0131] 其中,在所述第一封装文件中添加独立切换点标识符,用于指示所述目标轨道对应的视频码流中的样本中的独立切换点样本,可以包括:若所述独立切换点样本的时域层级标识符大于零,且所述独立切换点样本以及所述独立切换点样本之后的同一时域层级的样本,在解码时不依赖所述独立切换点样本之前的同一时域层级的样本,则设置所述独立切换点样本的同层级切换点标识符为第一值。
[0132] 在示例性实施例中,所述独立切换点标识符可以包括高层级切换点标识符(例如下文举例的higher_layer_switch_flag)。
[0133] 其中,在所述第一封装文件中添加独立切换点标识符,用于指示所述目标轨道对应的视频码流中的样本中的独立切换点样本,还可以包括:若所述独立切换点样本的时域层级标识符大于零,且所述独立切换点样本之后的更高时域层级的样本,在解码时不依赖所述独立切换点样本之前的相对所述独立切换点样本的同一时域层级或更高时域层级的样本,则设置所述独立切换点样本的高层级切换点标识符为所述第一值。
[0134] 其中所述独立切换点样本的高层级切换点标识符为所述第一值时,所述独立切换点样本的同层级切换点标识符为所述第一值。
[0135] 在步骤S324中,在所述第一封装文件中添加描述标识符(例如下文举例的group_description_index),用于指示所述独立切换点样本的有效范围内的样本标识号。
[0136] 在示例性实施例中,封装编码后的所述目标视频,生成第一封装文件,还可以包括:根据所述独立切换点样本的有效范围内的样本个数,在所述第一封装文件中添加数量字段(例如下文举例的group_index_count)。
[0137] 图6实施例的步骤S330可以参照上述实施例。
[0138] 本公开实施方式提供的文件封装方法,通过在目标视频的第一封装文件中指示该目标视频相应的时域层级信息,在第一封装文件中通过添加时域层数字段和时域层级标识符,即可指示目标视频中的各个样本所处的时域层级,一方面,可以使得视频传输和消费中的第一设备在网络传输和消费的过程中更加便捷地获取时域层级信息,不需要解码该目标视频的编码码流即可获得该时域层级信息,节约了大量的计算资源;另一方面,即使第一设备不具备解码算法的实现能力,也能够及时地获取到该目标视频的时域层级信息,从而能够更好地指导该目标视频的传输和解码过程。同时,可以使视频传输的中间节点根据网络状况、消费该目标视频的用户终端根据设备能力,选择性地丢弃处于高时域层级的视频帧,且不影响其他低时域层级视频帧的解码,从而在最大限度保证用户观看体验的前提下,达到降低网络负载、设备负载的效果。此外,进一步还可以在第一封装文件中独立切换点标识符指示目标视频的目标轨道对应的视频码流中的样本中的独立切换点样本和描述标识符指示独立切换点样本的有效范围内的样本标识号,可以使视频传输的中间节点根据网络状况、消费该目标视频的用户终端根据设备能力,进一步地选择性地丢弃处于独立切换点样本之前的且与独立切换点样本处于同一时域层级的视频帧,且不影响其他低时域层级或同时域层级视频帧的解码,从而进一步达到降低网络负载、设备负载的效果。
[0139] 下面以在第一封装文件中同时指示目标视频中的各视频帧的时域层级和是否独立切换点样本为例,对上述提供的文件封装方法进行举例说明。
[0140] 本公开实施例提出了一种针对AVS3编码中时域层级划分技术的文件封装方法。具体实施步骤如下:
[0141] 1、在视频编码环节,根据视频帧的帧间依赖关系,为目标视频的不同视频帧确定时域层级。进一步地,还可以确定目标视频的视频帧中的独立切换点样本,以及独立切换点样本的有效范围。
[0142] 例如,可以在图2中的帧间预测部分(对应图2中的motion prediction,motion estimation部分)确定目标视频中的各视频帧的时域层级,若A帧需要B帧来进行帧间预测,则A帧依赖于B帧。
[0143] 2、根据上述编码环节确定的各视频帧的时域层级,设置对应的目标轨道的与时域层级相关的数据盒信息例如Avs3DecoderConfigurationRecord数据盒中的temporal_layer_num字段。同时根据各视频帧的时域层级和独立切换点样本,将视频帧划分到不同的时域层级样本组(以下简称样本组)中,设置TemporalLayerSampleGroupEntry(时域层级样本组入口)中对应的各个字段。
[0144] 3、在网络传输过程中,各个网络传输的中间节点可根据第一封装文件中与时域层级相关的数据盒信息以及网络状况,选择性地丢弃一些不影响目标视频整体编解码的视频帧,从而达到减轻网络负载压力的目的。
[0145] 4、在终端设备侧,用户终端可根据自身设备能力,选择性地丢弃一些不影响目标视频整体编解码的视频帧,从而达到减轻解码算法复杂度的目的。
[0146] 为支持本公开实施例提出的实施步骤,可以在系统层添加了若干描述性字段。下文中,以扩展ISOBMFF数据盒的形式举例,定义了相关的字段以支持AVS3时域层级划分技术,具体如下(修改部分以斜体字标识)。
[0147]
[0148]
[0149] 其中,时域层级样本组入口TemporalLayerSampleGroupEntry由视频样本组入口VisualSampleGroupEntry扩展(extend)得到,对应到该样本组入口的样本(即视频帧),其时域层级标识符由temporal_layer_id指示。
[0150] 其中各字段语义如下:
[0151] temporal_layer_num为时域层数字段,指示该目标轨道对应的视频码流中的最大时域层级数,该字段例如可以取值为1~7。
[0152] temporal_layer_id为时域层级标识符,指示对应到该样本组入口的样本的时域层级标识符,该字段取值可以为0~temporal_layer_num‑1。same_layer_switch_flag为同层级切换点标识符,指示对应到该样本组入口的样本是否为时域层级的独立切换点样本。若该标志位取值为第一值例如1,则该独立切换点样本(temporal_layer_id必须大于0)以及该独立切换点样本之后(解码顺序上)的同一时域层级的样本,在解码时不依赖该独立切换点样本之前的同时域层级的样本。该独立切换点样本的有效范围为所有描述标识符group_description_index对应的样本组集合。
[0153] higher_layer_switch_flag为高层级切换点标识符,指示对应到该样本组入口的样本是否为时域层级的独立切换点样本。若该标志位取值为第一值例如1,则该独立切换点样本(temporal_layer_id必须大于0)之后(解码顺序上)的高时域层级的样本,在解码时不依赖该独立切换点样本之前的相对独立切换点样本同时域层级或高时域层级的样本,同时域层级和高时域层级的样本都不依赖。该独立切换点样本的有效范围为所有描述标识符group_description_index对应的样本组集合。且当higher_layer_switch_flag取值为1时,same_layer_switch_flag必须取值为1。
[0154] group_index_count为数量字段,指示独立切换点样本有效范围对应的样本组个数(除当前样本组外,其对应独立切换点样本的有效范围内的样本个数)。
[0155] group_description_index指示属于独立切换点样本有效范围内的样本组标识号(其对应独立切换点样本的有效范围内的样本标识号)。
[0156] 本公开实施例提供的文件传输方法可以由任意的电子设备来执行,在下面的举例说明中,以视频传输的中间节点例如CDN节点作为上述第一设备执行为例进行描述,但本公开并不限定于此。
[0157] 图8示意性示出了根据本公开的一实施例的文件传输方法的流程图。如图8所示,本公开实施例提供的文件传输方法可以包括以下步骤。
[0158] 在步骤S810中,接收第一封装文件,所述第一封装文件是封装编码后的目标视频生成的,所述目标视频包括样本,其中所述第一封装文件中包括所述样本的时域层级信息。
[0159] 在步骤S820中,根据所述第一封装文件中的所述样本的时域层级信息,确定所述目标视频中的待传输样本。
[0160] 在示例性实施例中,根据所述第一封装文件中的所述样本的时域层级信息,确定所述目标视频中的待传输样本,可以包括:获得所述第二设备的网络状态信息;若根据所述网络状态信息确定第二设备处于第一网络状态,则将所述第一封装文件传输至所述第二设备。
[0161] 在示例性实施例中,根据所述第一封装文件中的所述样本的时域层级信息,确定所述目标视频中的待传输样本,还可以包括:根据所述第一封装文件中的所述样本的时域层级信息和所述第二设备的网络状态信息,选择性地丢弃所述目标视频中的部分样本;重新封装包括选择性地丢弃所述部分样本之后剩余样本的目标视频,生成第二封装文件;发送所述第二封装文件至所述第二设备。
[0162] 在示例性实施例中,根据所述第一封装文件中的所述样本的时域层级信息和所述第二设备的网络状态信息,选择性地丢弃所述目标视频中的部分样本,可以包括:若根据所述网络状态信息确定所述第二设备处于第二网络状态,则根据所述第一封装文件中的所述样本的时域层级信息获得所述样本中的独立切换点样本;选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本。
[0163] 在示例性实施例中,根据所述第一封装文件中的所述样本的时域层级信息和所述第二设备的网络状态信息,选择性地丢弃所述目标视频中的部分样本,可以包括:若根据所述网络状态信息确定所述第二设备处于第三网络状态,则根据所述第一封装文件中的所述样本的时域层级信息获得所述样本中处于高时域层级的样本;选择性地丢弃所述样本中处于高时域层级的样本。
[0164] 在步骤S830中,发送所述目标视频中的待传输样本至第二设备。
[0165] 本公开实施例中,第二设备例如可以是最终消费该目标视频的用户终端。
[0166] 本公开实施例中的其他内容可以参照上述文件封装方法实施例中的内容。
[0167] 下面通过一个具体的应用场景来举例说明中间节点如何根据第二设备的网络状态来针对性地传输目标视频。
[0168] 1、假设服务器对视频文件A(目标视频)进行编码和封装。假设视频文件A存在3个时域层级L0~L2,且这3个时域层级的视频帧共划分为6个样本组G1~G6。则目标视频的第一封装文件中对应数据盒的各字段如下:
[0169] Avs3DecoderConfigurationRecord中temporal_layer_num=3;
[0170] G1:temporal_layer_id=0;same_layer_switch_flag=0;
[0171] higher_layer_switch_flag=0;
[0172] G2:temporal_layer_id=1;same_layer_switch_flag=0;
[0173] higher_layer_switch_flag=0;
[0174] G3:temporal_layer_id=1;same_layer_switch_flag=1;
[0175] higher_layer_switch_flag=0;group_index_count=1;
[0176] group_description_index=2;
[0177] G4:temporal_layer_id=2;same_layer_switch_flag=0;
[0178] higher_layer_switch_flag=0;
[0179] G5:temporal_layer_id=1;same_layer_switch_flag=1;
[0180] higher_layer_switch_flag=0;group_index_count=2;
[0181] group_description_index=4,6;
[0182] G6:temporal_layer_id=2;same_layer_switch_flag=0;
[0183] higher_layer_switch_flag=0。
[0184] 2、服务器根据第二设备发送的客户端请求,将视频文件A分别发送给用户1,用户2,用户3各自对应的用户终端。
[0185] 3、在网络传输的中间节点例如CDN节点,各中间节点根据用户1,用户2,用户3各自不同的用户终端对应的网络状况,进行如下选择:
[0186] 假设用户1网络情况良好即处于第一网络状态,则可以直接传输视频文件A的第一封装文件给用户1对应的用户终端。
[0187] 假设用户2网络情况较差即处于第二网络状态,由于G5样本组中对应的样本为独立切换点样本,且对应的有效范围为G4~G6,因此G6的解码不依赖G4,可以选择性地丢弃G4样本组对应的样本后,重新封装视频文件A,获得第二封装文件,将其传输给用户2对应的用户终端。
[0188] 假设用户3网络情况极差即处于第三网络状态,可以选择性地直接丢弃所有L2的样本,重新封装视频文件A,生成第二封装文件,将其传输给用户3对应的用户终端。
[0189] 4、用户1、2、3各自的用户终端分别收到对应的视频文件A,进行解码消费。
[0190] 需要说明的是,如何选择性丢弃部分样本可以根据实际情况而定,并不限于上述举例。若是独立切换点样本的有效范围内丢弃部分样本的话,可以丢弃掉处于独立切换点样本之前的样本,不能丢弃独立切换点样本。若丢弃的是属于某个时域层级的样本,则该时域层级内的独立切换点样本也是可以丢弃的。
[0191] 在上面的举例说明中,如果L2时域层级内的所有样本丢弃完了,还需要继续丢弃部分样本的话,可以选择将属于时域层级L1的G2样本组对应的样本也丢弃。
[0192] 可以理解的是,如何评价第二设备的网络状态信息,可以根据实际需求进行设置,例如可以通过网络时延、丢包率等来判断,本公开对此不做限定。
[0193] 本公开实施例提供的文件解码方法可以由任意的电子设备来执行,在下面的举例说明中,以第二设备例如用户终端执行为例进行描述,但本公开并不限定于此。
[0194] 图9示意性示出了根据本公开的一实施例的文件解码方法的流程图。
[0195] 如图9所示,本公开实施例提供的文件解码方法可以包括以下步骤。
[0196] 在步骤S910中,接收目标封装文件,所述目标封装文件是封装编码后的目标视频中的至少部分样本生成的,其中所述目标封装文件中包括所述至少部分样本的时域层级信息。
[0197] 本公开实施例中,所述目标封装文件可以是上述实施例中的目标视频的第一封装文件或者第二封装文件中的任意一者,若为第一封装文件,则目标封装文件可以是从服务器接收的,其可以是封装编码后的目标视频中的样本生成的;若为第二封装文件,则目标封装文件可以是从中间节点接收的,其可以是上述丢弃部分样本后重新封装的剩余部分样本生成的。
[0198] 在步骤S920中,根据所述目标封装文件中的所述至少部分样本的时域层级信息,确定所述目标视频中的待解码样本。
[0199] 在示例性实施例中,根据所述目标封装文件中的所述至少部分样本的时域层级信息,确定所述目标视频中的待解码样本,可以包括:获得所述第二设备的解码能力信息;若根据所述第二设备的解码能力信息确定所述第二设备处于第一解码能力状态,则将所述至少部分样本作为所述待解码样本。
[0200] 在示例性实施例中,根据所述目标封装文件中的所述至少部分样本的时域层级信息,确定所述目标视频中的待解码样本,还可以包括:根据所述目标封装文件中的所述至少部分样本的时域层级信息和所述第二设备的解码能力信息,选择性地丢弃所述至少部分样本中的部分样本,将所述至少部分样本中的剩余样本作为所述待解码样本。
[0201] 在示例性实施例中,根据所述目标封装文件中的所述至少部分样本的时域层级信息和所述第二设备的解码能力信息,选择性地丢弃所述至少部分样本中的部分样本,可以包括:若根据所述第二设备的解码能力信息确定所述第二设备处于第二解码能力状态,则根据所述目标封装文件中的所述至少部分样本的时域层级信息获得所述至少部分样本中的独立切换点样本;选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本。
[0202] 在示例性实施例中,根据所述目标封装文件中的所述至少部分样本的时域层级信息和所述第二设备的解码能力信息,选择性地丢弃所述至少部分样本中的部分样本,可以包括:若根据所述第二设备的解码能力信息确定所述第二设备处于第三解码能力状态,则根据所述目标封装文件中的所述至少部分样本的时域层级信息获得所述至少部分样本中处于高时域层级的样本;选择性地丢弃处于所述至少部分样本中处于高时域层级的样本。
[0203] 在步骤S930中,在第二设备解码所述待解码样本。
[0204] 本公开实施例中的其他内容可以参照上述文件封装方法和文件传输方法实施例中的内容。
[0205] 下面以用户终端根据设备内存的大小来判断其解码能力所处状态为例,举例说明如何针对性地解码目标视频。
[0206] 1、类似地,假设服务器对视频文件A(目标视频)进行编码和封装。假设视频文件A存在3个时域层级L0~L2,且这3个时域层级的视频帧共划分为6个样本组G1~G6。则目标视频的第一封装文件中对应数据盒的各字段如下:
[0207] Avs3DecoderConfigurationRecord中temporal_layer_num=3;
[0208] G1:temporal_layer_id=0;same_layer_switch_flag=0;
[0209] higher_layer_switch_flag=0;
[0210] G2:temporal_layer_id=1;same_layer_switch_flag=0;
[0211] higher_layer_switch_flag=0;
[0212] G3:temporal_layer_id=1;same_layer_switch_flag=1;
[0213] higher_layer_switch_flag=0;group_index_count=1;
[0214] group_description_index=2;
[0215] G4:temporal_layer_id=2;same_layer_switch_flag=0;
[0216] higher_layer_switch_flag=0;
[0217] G5:temporal_layer_id=1;same_layer_switch_flag=1;
[0218] higher_layer_switch_flag=0;group_index_count=2;
[0219] group_description_index=4,6;
[0220] G6:temporal_layer_id=2;same_layer_switch_flag=0;
[0221] higher_layer_switch_flag=0。
[0222] 2、服务器根据第二设备发送的客户端请求,确定要将视频文件A分别发送给用户1,用户2,用户3各自对应的用户终端。
[0223] 可以由服务器直接将视频文件A的第一封装文件发送给用户1,用户2,用户3各自对应的用户终端,也可以是服务器先将第一封装文件发送给某个或多个中间节点,中间节点在传输过程中,可以根据第一封装文件中的时域层级信息和用户1,用户2,用户3各自对应的用户终端的网络状况,选择直接将第一封装文件或者上述第二封装文件作为目标封装文件转发至用户1,用户2,用户3各自对应的用户终端。
[0224] 3、用户1,用户2,用户3各自对应的用户终端分别收到对应的视频文件A,根据各自对应的用户终端的设备内存使用情况选择如何解码消费:
[0225] 假设用户1对应的用户终端的设备内存较大即处于第一解码能力状态,则可以直接解码目标封装文件对应的视频文件A进行呈现。
[0226] 假设用户2对应的用户终端的设备内存较小即处于第二解码能力状态,由于G5样本组对应的样本是独立切换点样本,且对应的有效范围为G4~G6,因此G6样本组对应的样本的解码不依赖G4样本组对应的样本,丢弃G4样本组对应的样本后,解码视频文件A消费。
[0227] 假设用户3对应的用户终端的设备内存十分受限即处于第三解码能力状态,则可以直接丢弃所有L2时域层级的样本后,解码视频文件A消费。
[0228] 需要说明的是,如何选择性丢弃部分样本可以根据实际情况而定,并不限于上述举例。若是独立切换点样本的有效范围内丢弃部分样本的话,可以丢弃掉处于独立切换点样本之前的样本,不能丢弃独立切换点样本。若丢弃的是属于某个时域层级的样本,则该时域层级内的独立切换点样本也是可以丢弃的。
[0229] 在上面的举例说明中,如果L2时域层级内的所有样本丢弃完了,还需要继续丢弃部分样本的话,可以选择将属于时域层级L1的G2样本组对应的样本也丢弃。
[0230] 可以理解的是,如何评价第二设备的解码能力信息,可以根据实际需求进行设置,这里仅以设备内存大小为例进行举例说明,但本公开对此不做限定。且设备内存大小的比较也是相对而言的。
[0231] 本公开实施方式提供的文件封装方法、文件传输方法和文件解码方法,可应用于视频存储、传输、封装、解封装过程中。
[0232] 图10示意性示出了根据本公开的一实施例的文件封装装置的框图。
[0233] 如图10所示,本公开实施例提供的文件封装装置1000可以包括时域层级信息获得单元1010、第一封装文件生成单元1020以及第一封装文件发送单元1030。
[0234] 本公开实施例中,时域层级信息获得单元1010可以用于获得编码后的目标视频以及所述目标视频在编码过程中确定的样本的时域层级信息。第一封装文件生成单元1020可以用于封装编码后的所述目标视频,生成第一封装文件,所述第一封装文件中包括所述样本的时域层级信息。第一封装文件发送单元1030可以用于将所述第一封装文件发送至第一设备。
[0235] 本公开实施方式提供的文件封装装置,通过在目标视频的第一封装文件中指示该目标视频相应的时域层级信息,一方面,可以使得视频传输和消费中的第一设备在网络传输和消费的过程中更加便捷地获取时域层级信息,不需要解码该目标视频的编码码流即可获得该时域层级信息,节约了大量的计算资源;另一方面,即使第一设备不具备解码算法的实现能力,也能够及时地获取到该目标视频的时域层级信息,从而能够更好地指导该目标视频的传输和解码过程。
[0236] 在示例性实施例中,所述目标视频在编码过程中确定的所述样本的时域层级信息可以包括所述目标视频中的目标轨道对应的视频码流中的时域层数,以及包括所述目标轨道对应的视频码流中的各个样本的时域层级。其中,第一封装文件生成单元1020可以包括:时域层数字段添加单元,可以用于在所述第一封装文件中添加时域层数字段,用于指示所述目标视频中的目标轨道对应的视频码流中的时域层数;时域层级标识符添加单元,可以用于在所述第一封装文件中添加时域层级标识符,用于指示所述目标轨道对应的视频码流中的各个样本的时域层级。其中所述第一封装文件中的时域层级标识符的取值范围在零至所述时域层数减一之内。
[0237] 在示例性实施例中,所述目标视频在编码过程中确定的所述样本的时域层级信息还可以包括所述目标轨道对应的视频码流中的样本中的独立切换点样本以及所述独立切换点样本的有效范围。其中,第一封装文件生成单元1020还可以包括:独立切换点标识符添加单元,可以用于在所述第一封装文件中添加独立切换点标识符,用于指示所述目标轨道对应的视频码流中的样本中的独立切换点样本;描述标识符添加单元,可以用于在所述第一封装文件中添加描述标识符,用于指示所述独立切换点样本的有效范围内的样本标识号。
[0238] 在示例性实施例中,所述独立切换点标识符可以包括同层级切换点标识符。其中,独立切换点标识符添加单元可以包括:同层级切换点标识符设置单元,可以用于若所述独立切换点样本的时域层级标识符大于零,且所述独立切换点样本以及所述独立切换点样本之后的同一时域层级的样本,在解码时不依赖所述独立切换点样本之前的同一时域层级的样本,则设置所述独立切换点样本的同层级切换点标识符为第一值。
[0239] 在示例性实施例中,所述独立切换点标识符可以包括高层级切换点标识符。其中,独立切换点标识符添加单元还可以包括:高层级切换点标识符设置单元,可以用于若所述独立切换点样本的时域层级标识符大于零,且所述独立切换点样本之后的更高时域层级的样本,在解码时不依赖所述独立切换点样本之前的相对所述独立切换点样本的同一时域层级或更高时域层级的样本,则设置所述独立切换点样本的高层级切换点标识符为所述第一值。其中所述独立切换点样本的高层级切换点标识符为所述第一值时,所述独立切换点样本的同层级切换点标识符为所述第一值。
[0240] 在示例性实施例中,第一封装文件生成单元1020还可以包括:数量字段添加单元,可以用于根据所述独立切换点样本的有效范围内的样本个数,在所述第一封装文件中添加数量字段。
[0241] 本公开实施例提供的文件封装装置中的各个单元的具体实现可以参照上述文件封装方法中的内容,在此不再赘述。
[0242] 图11示意性示出了根据本公开的一实施例的文件传输装置的框图。如图11所示,本公开实施例提供的文件传输装置1100可以包括第一封装文件接收单元1110、待传输样本确定单元1120以及待传输样本发送单元1130。
[0243] 本公开实施例中,第一封装文件接收单元1110可以用于接收第一封装文件,所述第一封装文件是封装编码后的目标视频生成的,所述目标视频包括样本,其中所述第一封装文件中包括所述样本的时域层级信息。待传输样本确定单元1120可以用于根据所述第一封装文件中的所述样本的时域层级信息,确定所述目标视频中的待传输样本。待传输样本发送单元1130可以用于发送所述目标视频中的待传输样本至第二设备。
[0244] 在示例性实施例中,待传输样本确定单元1120可以包括:网络状态信息获得单元,可以用于获得所述第二设备的网络状态信息;第一封装文件直接传输单元,可以用于若根据所述网络状态信息确定所述第二设备处于第一网络状态,则将所述第一封装文件传输至所述第二设备。
[0245] 在示例性实施例中,待传输样本确定单元1120还可以包括:部分样本丢弃单元,可以用于根据所述第一封装文件中的所述样本的时域层级信息和所述第二设备的网络状态信息,选择性地丢弃所述目标视频中的部分样本;重新封装单元,可以用于重新封装选择性地丢弃所述部分样本的目标视频,生成第二封装文件;第二封装文件发送单元,可以用于发送所述第二封装文件至所述第二设备。
[0246] 在示例性实施例中,部分样本丢弃单元可以包括:独立切换点样本获得单元,可以用于若根据所述网络状态信息确定所述第二设备处于第二网络状态,则根据所述第一封装文件中的所述样本的时域层级信息获得所述样本中的独立切换点样本;样本选择性丢弃单元,可以用于选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本。
[0247] 在示例性实施例中,部分样本丢弃单元可以包括:高时域层级样本获得单元,可以用于若根据所述网络状态信息确定所述第二设备处于第三网络状态,则根据所述第一封装文件中的所述样本的时域层级信息获得所述样本中处于高时域层级的样本;高时域层级样本丢弃单元,可以用于选择性地丢弃所述样本中处于高时域层级的样本。
[0248] 本公开实施例提供的文件传输装置中的各个单元的具体实现可以参照上述文件传输方法中的内容,在此不再赘述。
[0249] 图12示意性示出了根据本公开的一实施例的文件解码装置的框图。图12所示,本公开实施例提供的文件解码装置1200可以包括目标封装文件接收单元1210、待解码样本确定单元1220以及待解码样本解码单元1230。
[0250] 本公开实施例中,目标封装文件接收单元1210可以用于接收目标封装文件,所述目标封装文件是封装编码后的目标视频中的至少部分样本生成的,其中所述目标封装文件中包括所述至少部分样本的时域层级信息。待解码样本确定单元1220可以用于根据所述目标封装文件中的所述至少部分样本的时域层级信息,确定所述目标视频中的待解码样本。待解码样本解码单元1230可以用于在第二设备解码所述待解码样本。
[0251] 在示例性实施例中,待解码样本确定单元1220可以包括:解码能力信息获得单元,可以用于获得所述第二设备的解码能力信息;直接解码单元,可以用于若根据所述第二设备的解码能力信息确定所述第二设备处于第一解码能力状态,则将所述至少部分样本作为所述待解码样本。
[0252] 在示例性实施例中,待解码样本确定单元1220还可以包括:剩余样本确定单元,可以用于根据所述目标封装文件中的所述至少部分样本的时域层级信息和所述第二设备的解码能力信息,选择性地丢弃所述至少部分样本中的部分样本,将所述至少部分样本中的剩余样本作为所述待解码样本。
[0253] 在示例性实施例中,剩余样本确定单元可以包括:独立切换点样本确定单元,可以用于若根据所述第二设备的解码能力信息确定所述第二设备处于第二解码能力状态,则根据所述目标封装文件中的所述至少部分样本的时域层级信息获得所述至少部分样本中的独立切换点样本;独立切换点样本前样本丢弃单元,可以用于选择性地丢弃处于所述独立切换点样本的有效范围内且位于所述独立切换点样本之前的样本。
[0254] 在示例性实施例中,剩余样本确定单元可以包括:高时域层级样本确定单元,可以用于若根据所述第二设备的解码能力信息确定所述第二设备处于第三解码能力状态,则根据所述目标封装文件中的所述至少部分样本的时域层级信息获得所述至少部分样本中处于高时域层级的样本;高时域层级样本舍弃单元,可以用于选择性地丢弃处于所述至少部分样本中处于高时域层级的样本。
[0255] 本公开实施例提供的文件解码装置中的各个单元的具体实现可以参照上述文件解码方法中的内容,在此不再赘述。
[0256] 应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
[0257] 本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的文件封装方法。
[0258] 本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的文件传输方法。
[0259] 本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的文件解码方法。
[0260] 本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的文件封装方法。
[0261] 本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的文件传输方法。
[0262] 本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的文件解码方法。
[0263] 图13示出了适于用来实现本公开实施例的电子设备的结构示意图。
[0264] 需要说明的是,图13示出的电子设备1300仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0265] 如图13所示,电子设备1300包括中央处理单元(CPU,Central Processing Unit)1301,其可以根据存储在只读存储器(ROM,Read‑Only Memory)1302中的程序或者从储存部分1308加载到随机访问存储器(RAM,Random Access Memory)1303中的程序而执行各种适当的动作和处理。在RAM 1303中,还存储有系统操作所需的各种程序和数据。CPU1301、ROM 
1302以及RAM 1303通过总线1304彼此相连。输入/输出(input/output,I/O)接口1305也连接至总线1304。
[0266] 以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,Liquid Crystal Display)等以及扬声器等的输出部分1307;包括硬盘等的储存部分1308;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入储存部分1308。
[0267] 特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的方法和/或装置中限定的各种功能。
[0268] 需要说明的是,本公开所示的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有至少一个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF(Radio Frequency,射频)等等,或者上述的任意合适的组合。
[0269] 附图中的流程图和框图,图示了按照本公开各种实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0270] 描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
[0271] 作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3或图4或图6或图8或图9所示的各个步骤。
[0272] 通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
[0273] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0274] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。