一种网络离线视频文件字节流的解码方法及装置与流程

文档序号:33172277发布日期:2023-02-04 02:48阅读:18来源:国知局
一种网络离线视频文件字节流的解码方法及装置与流程

1.本技术涉及视频处理技术领域,特别是涉及一种网络离线视频文件字节流的解码方法及装置。


背景技术:

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.图1为本技术提供的一种网络离线视频文件字节流的解码方法流程图;
35.图2为本技术提供的另一种网络离线视频文件字节流的解码方法流程图;
36.图3为本技术提供的一种网络离线视频文件字节流的解码装置的结构示意图。
具体实施方式
37.如前文所述,目前对离线视频文件的字节流进行解码的过程中,在中央处理器接收到离线视频文件的字节流之后,需要将离线视频文件的字节流保存为文件存放于硬盘中,利用解封装器对硬盘中的视频文件进行解封装得到离线视频元信息,之后将离线视频文件内容主体部分与元信息在中央处理器或发送至图形处理器后,对视频文件进行解码。首先,从解码后的下游应用角度而言,接收视频字节流后落盘保存为文件的过程为非必需操作,冗余而耗时;其次,中央处理器的软解码相对图形处理单元的硬解码,性能较低;再者,在中央处理器将视频字节信息解码为视频帧后再将视频帧传输至图形处理单元,相比于将字节信息传输至图形处理单元后再解码,中央处理器与图像处理单元的数据传输负载高出很多;最后,下游计算密集型任务往往需要在图形处理单元上进行以提高计算效率,在图形处理单元上硬解码后的数据已然位于图形处理单元显存中,通过零内存拷贝技术直接构建下游任务数据对象,节省数据对象的构建显存和时间消耗。
38.为解决上述问题,本技术提供了一种网络离线视频文件字节流的解码方法及装置,所述方法通过接收离线视频文件的字节流并存储在中央处理器主内存缓冲区中,直接对内存字节信息进行解封装,获取所述离线视频文件的元信息,所述元信息用于表示所述离线视频的基础属性;将所述离线视频文件内容主体与所述元信息发送到图形处理器,使所述图形处理器利用其硬件解码单元基于所述元信息对所述视频进行解码得到视频帧数据。相较于现有技术,本技术公开的方法无需先将接收到的网络视频文件的字节流信息存储到硬盘文件中,可在中央处理器中对接收到的离线视频文件的字节信息从内存中直接进行解封装后解码,提高了解码效率。其次,本技术将解封装后的视频内容主体部分直接交给图形处理单元,利用其硬解码单元实现高性能解码操作,相比于中央处理器的软解码,解码性能大幅提升;再者,解码前的视频字节数据因其经历过帧间时序和帧内空间压缩,其数据量相对解码后的帧数据小很多,将解码前的字节数据先传输至显存再解码相较于在中央处理器端解码后传输到显存中,传输负载要小很多。
39.通过本技术提供的方法进行解码得到的视频帧位于图形处理器的存储空间即显存中,在实际应用中,多数下游计算密集型任务需在图形处理单元进行以提高计算性能,本技术解码后的数据已然位于显存内,构建下游计算任务数据对象时可通过零内存拷贝技术,通过浅拷贝的方式,将数据对象内容主体的指针直接指向解码后的视频帧的地址,节省显存空间消耗计算延时。
40.为了使本领域的技术人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行完整、清楚地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在
没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.图1为本技术提供的一种网络离线视频文件字节流的解码方法的流程图,所述方法包括以下步骤:
42.s101:接收网络侧传输的视频文件字节流并存储在中央处理器主内存缓冲区中。
43.其中,离线视频文件的字节流的提供方可以是需要进行视频分析服务的客户端,客户端将视频文件片段通过网络发送给视频分析服务提供方的服务器。服务端接收到离线视频文件的字节流时,直接将字节流存储于主内存中,无需落盘保存为视频文件。
44.s102:利用中央处理器中的解封装器对所述主内存缓冲区中的离线视频文件字节流进行解封装,获取所述离线视频文件的元信息,所述元信息包括视频内容主体的基础属性,所述基础属性包括视频帧数、帧率、包数量和分辨率。
45.其中,离线视频文件的字节流以二进制文件的方式存储在中央处理器的主内存中,元信息通常位于视频文件的头部或尾部。对视频文件进行解码的过程中需要该元信息,元信息的内容主要包括视频分辨率、视频时长、视频帧率及编码格式等。
46.s103:将所述内容主题内容主体部分与所述元信息发送到图形处理器,以便图形处理器利用其硬件解码单元基于所述元信息对所述内容主题进行硬件解码得到视频帧数据。
47.其中,可以将获取到的元信息与解封装后的二进制文件发送到图形处理器中,利用图形处理器中的硬件解码单元利用元信息对解封装后的二进制文件进行硬件解码,解码后产生的视频帧存储于图形处理器的存储空间中。
48.在上述方法中,中央处理器接收到离线视频文件的字节流后可以直接在中央处理器中利用解封装器进行解封装,现有技术中提供的方法因未提供内存地址或数据对象的解封装器,需要先将离线视频文件的字节流从内存保存到硬盘后,使用文件路径接口对硬盘中的视频文件进行解封装。现有技术使用的解封装器并不能直接对内存中的字节数据进行解封装,与现有技术相比本技术提供的方法并不需要冗余操作,提高了流程效率。在图形处理器中利用元信息对离线视频文件的字节流进行解码得到视频帧,图形处理器中存在硬件解码单元,使用硬件解码提高了解码的速度。
49.在接收离线视频文件的字节流时,元信息的位置会有所不同,图2为本技术提供的另一种网络离线视频文件字节流的解码方法的流程图,主要包括以下步骤:
50.s201:接收离线视频文件的字节流。
51.视频应用服务提供商服务端主机采用异步非阻塞的方式,接收客户端通过网络形式发送的视频文件片段于内存换缓冲区中。
52.s202:判断元信息是否位于头部。
53.解封装器根据缓冲区中已有的内容实时尝试解封装,判断元信息是否位于视频信息头部。若是,则进入s203。若否,则进入s206。
54.s203:解封装器理解解封装获得头部元信息后,将其发送到图像处理单元。
55.通常,视频文件的元信息远小于视频文件内容本身。若所述解封装器发现视频原信息位于文件头部,解封装器直接解封装获得头部元信息后,将其发送到图像处理单元。
56.s204图像处理单元异步解码。
57.在未完全接收视频文件时,已经提前获得了视频文件的元信息,此时可以采用接
收与解码异步的方式,中央处理器一边接收所述离线视频文件剩余字节流的同时,图像处理单元一边对已接收的文件信息进行解码。
58.s205:使用零内存拷贝技术构建下游计算任务数据对象。
59.下游计算密集型任务通常需要在图像处理单元上进行以提高运算速度,而使用图像处理单元硬解码后的视频帧数据已然存储于图像处理单元的显存中。下游计算任务的输入数据通常表征为指定的格式,如张量等。其内容除张量本身的内容数据外,还包括张量的一些属性信息,如形状、通道数、数据位置等。属性信息通常较小,仅花费少量的存储单元和构建时间。直接通过零内存拷贝技术使得张量数据内容主体部分直接指向解码后的视频帧数据地址,减少显存空间占用的同时,也节省了数据张量对象的构建时间,从而节省应用整个端到端应用的延时。
60.s206:同步阻塞接收完整的字节流数据后,解封装获得视频数据元信息。
61.s207:分发视频元信息和视频内容部分到图像处理单元。
62.s208:图像处理单元开始对视频包的硬解码,得到视频帧数据。
63.s209:下游计算任务通过构建的数据对象,进行相应计算和数据处理工作。
64.s210:服务端向客户端返回处理结果。
65.本技术还公开了如图3所示的一种离线视频字节流的解码装置300,其中包括:
66.接收模块301,用于接收离线视频文件的字节流并存储在中央处理器中;
67.解封装模块302,用于解封装,利用中央处理器中的解封装器对所述离线视频文件的字节流进行解封装,获取所述离线视频文件的字节流中的元信息,所述元信息用于表示所述离线视频文件的字节流所对应离线视频文件的视频信息;
68.发送模块303,用于发送解封装后的离线视频文件的字节流与所述元信息,将所述解封装后的离线视频文件的字节流与所述元信息发送到图形处理器,使所述图形处理器利用所述元信息对所述解封装后的离线视频文件的字节流进行解码得到视频帧。
69.本技术提供的离线视频字节流的解码装置示意图中还可以包括以下模块:
70.判断模块,用于判断所述元信息的位置,接收所述离线视频文件的字节流时利用所述解封装器判断所述元信息的位置;
71.若所述元信息位于所述视频文件的头部,在接收到预定的字节流数量时,所述中央处理器以异步方式继续接收剩余视频文件字节流信息并同时异步地将所述已接收到的字节流信息传输至所述图形处理器,以便图形处理器利用其硬件解码单元进行硬件解码。
72.下游任务数据对象生成模块,利用所述视频帧数据在所述图形处理器中构建下游任务数据对象,所述任务数据对象包括数据元信息与数据内容主体;
73.下游任务处理模块,下游任务处理应用对所述任务数据对象进行处理得到处理结果;
74.下游任务结果返回模块,将所述处理结果返回客户端。
75.本技术还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述离线视频字节流的解码方法步骤。
76.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质,都属于本技术保护的范围。
77.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
78.以上所述,仅为本技术的一种具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1