CN115119053A - 一种视频解码方法、内存、显存、电子设备及存储介质 - Google Patents

一种视频解码方法、内存、显存、电子设备及存储介质 Download PDF

Info

Publication number
CN115119053A
CN115119053A CN202210500417.9A CN202210500417A CN115119053A CN 115119053 A CN115119053 A CN 115119053A CN 202210500417 A CN202210500417 A CN 202210500417A CN 115119053 A CN115119053 A CN 115119053A
Authority
CN
China
Prior art keywords
video
component
video decoding
link
memory
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.)
Granted
Application number
CN202210500417.9A
Other languages
English (en)
Other versions
CN115119053B (zh
Inventor
宋健
张磊
彭达达
沈建峰
裴学伟
张�杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Foss Hangzhou Intelligent Technology Co Ltd
Original Assignee
Foss Hangzhou Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Foss Hangzhou Intelligent Technology Co Ltd filed Critical Foss Hangzhou Intelligent Technology Co Ltd
Priority to CN202210500417.9A priority Critical patent/CN115119053B/zh
Publication of CN115119053A publication Critical patent/CN115119053A/zh
Application granted granted Critical
Publication of CN115119053B publication Critical patent/CN115119053B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种视频解码方法、内存、显存、电子设备及存储介质,其中,方法包括:获取待处理视频数据对应的视频参数信息;获取分析需求信息;根据视频参数信息和分析需求信息搭建视频解码链路,以使得显存对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,视频解码链路包括运行于显存中的第一组件和运行于内存中的第二组件;与显存协同工作,以基于优化后的视频解码链路对待处理视频数据进行处理。本发明显著降低了视频解码的时延,可以应用在要求超低延时的场景下。

Description

一种视频解码方法、内存、显存、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,具体涉及一种视频解码方法、内存、显存、电子设备及存储介质。
背景技术
视频解码技术被广泛地应用于多媒体领域,如实时监控、网络直播、视频播放、视频智能分析等。伴随着视频分辨率和码率的不断提升,视频解码的复杂度也在不断提高。利用中央处理器(Central Processing Unit,CPU)CPU进行视频软解码(比如ffmpeg开源库)需要占用大量资源,并且无法同时解码多路视频。为了提高视频解码效率,可以利用图形处理器(Graphic Processing Unit,GPU)对视频进行解码,GPU是显示处理的核心组件,具备强大的并行运算能力,非常适用于视频解码。然而,GPU解码链路还存在延时大大、不能根据需求动态调整解码链路等问题。
不同行业的视频应用场景对其视频数据延时有不同的要求,比如在安防监控行业300-500ms延时可以完成事件告警或者其他应用。但是在车路协同行业,V2X数据融合等视频应用场景下需要将视频数据延时控制在10ms之内。GPU解码链路过程中通长延时达到百ms以上,无法满足感知、融合与决策对低延时的要求。
不同的视频应用场景下,视频数据来源、视频编码和封装格式、解码方式、数据格式转换、数据回调保存、云端发送等等可能是不同的,而现有的GPU解码链路包括视频解码、解码显示、解码后分析等是固定,不能根据视频应用场景的需求动态调整解码链路。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明第一方面提出一种视频解码方法,所述方法应用于内存,所述方法包括:
获取待处理视频数据对应的视频参数信息;
获取分析需求信息;
根据所述视频参数信息和所述分析需求信息搭建视频解码链路,以使得显存对所述视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
与所述显存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
进一步地,所述第一组件包括视频解码组件和目标分析组件,所述第二组件包括视频输入组件,所述根据所述视频参数信息和所述分析需求信息搭建视频解码链路,包括:
根据所述视频参数信息确定所述视频输入组件和所述视频解码组件;
根据所述分析需求信息确定所述目标分析组件;
根据所述视频输入组件、所述视频解码组件和所述目标分析组件,得到所述视频解码链路;其中,所述视频解码链路包括顺次连接的所述视频输入组件、所述视频解码组件和所述目标分析组件。
进一步地,所述根据所述视频参数信息和所述分析需求信息搭建视频解码链路之后,还包括:
在所述分析需求信息变化时,根据变化后的所述分析需求信息调整所述目标分析组件,得到调整后的所述目标分析组件;
基于调整后的所述目标分析组件在所述视频解码链路中创建或删除分支链路;其中,所述视频解码链路包括至少一个分支链路,每个所述分支链路包括一个所述目标分析组件;
和/或,所述根据所述视频参数信息和所述分析需求信息搭建视频解码链路之后,还包括:
在所述视频参数信息变化时,根据变化后的所述视频参数信息调整所述视频输入组件和所述视频解码组件,得到调整后的所述视频输入组件和调整后的所述视频解码组件;
基于调整后的所述视频输入组件和调整后的所述视频解码组件调整所述视频解码链路,得到调整后的所述视频解码链路。
进一步地,所述根据所述视频参数信息和所述分析需求信息建视频解码链路之后,还包括:对所述第二组件进行多线程优化。
本发明第二方面提出一种视频解码方法,所述方法应用于显存,所述方法包括:
对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路是内存根据待处理视频数据对应的视频参数信息和分析需求信息搭建的;所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
与所述内存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
进一步地,所述第一组件包括视频解码组件和目标分析组件;所述对视频解码链路上的至少一个第一组件进行低延时优化,包括:
对解码器参数进行优化;和/或,对所述视频解码组件与所述目标分析组件中的至少一个进行多线程优化。
本发明第三方面提出一种内存,所述内存包括:
参数获取模块,用于获取待处理视频数据对应的视频参数信息;
需求获取模块,用于获取分析需求信息;
链路搭建模块,用于根据所述视频参数信息和所述分析需求信息搭建视频解码链路,以使得显存对所述视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
第一数据处理模块,用于与所述显存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
本发明第四方面提出一种显存,所述显存包括:
低延时优化模块,用于对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路是内存根据待处理视频数据对应的视频参数信息和分析需求信息搭建的;所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
第二数据处理模块,用于与所述内存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
本发明第五方面提出一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如本发明第一方面所述的一种视频解码方法或本发明第二方面所述的一种视频解码方法。
本发明第六方面提出一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如本发明第一方面所述的一种视频解码方法或本发明第二方面所述的一种视频解码方法。
本发明实施例提供的一种视频解码方法、内存、显存、电子设备及存储介质应用在要求超低延时的场景下,实施本发明具有以下有益效果:
本发明实施例在内存中根据待处理视频数据对应的视频参数信息和分析需求信息来确定视频解码链路中的各组件,利用确定出的组件搭建视频解码链路,实现了视频解码链路的自适应动态调整,在此基础上,在显存中对视频解码链路的至少一个第一组件进行低延时优化,通过内存和显存协同工作和视频解码链路的自适应动态调整,显著降低了视频解码的时延,使得优化后的视频解码链路能够满足不同场景对应的解码(例如相机机芯数据解码)或者其他需求(例如V2X数据融合)。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的一种视频解码方法的流程图;
图2是本发明实施例提供的一个管道的示意图;
图3是本发明实施例提供的数据消息交互的原理图;
图4是本发明实施例提供的步骤S103的流程图;
图5是本发明实施例提供的一条视频解码链路的示意图;
图6是本发明实施例提供的另一种视频解码方法的流程图;
图7是本发明实施例提供的内存的结构框图;
图8是本发明实施例提供的显存的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
需要说明的是,本发明实施例中所涉及的终端可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)、个人电脑(Personal Computer,PC)、MP3播放器、MP4播放器、可穿戴设备(例如,智能眼镜、智能手表、智能手环等)等。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例
图1是本发明实施例提供的一种视频解码方法的流程图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。图1示出的视频解码方法应用于内存,具体的如图1所示,该方法可以包括以下步骤:
S101:获取待处理视频数据对应的视频参数信息;
具体的,视频参数信息包括但不限于视频数据来源和视频编码参数;视频数据来源包括网络流和本地流,视频编码参数包括视频编码和封装格式信息,例如H264、H165、JPEG等格式信息;根据实际需要,其他用于对视频数据进行区分的参数信息,例如,解码方式、数据格式转换、数据回调保存、云端发送等也可以在本文中应用。
S102:获取分析需求信息;
具体的,分析需求信息是根据该视频解码方法的应用场景预先确定的,同一应用场景下的分析需求信息可以是一项或多项,同一应用场景下的分析需求信息可以完全相同、部分相同或完全不同。例如,该视频解码方法应用于安防领域的视频监控场景时,其分析需求信息可以包括安防预警或实现特定人员识别跟踪等;该视频解码方法应用于智能驾驶辅助场景时,其分析需求可以包括前向碰撞预警、绿波车速引导、盲区辅助、左转辅助以及紧急制动预警等的至少一项。需要说明的是,上述示例仅用于举例说明,根据应用场景预先确定的分析需求信息包括但不限于上述内容,本发明实施例出的视频解码方法的适用场景包括但不限于以上列举的应用场景。
S103:根据视频参数信息和分析需求信息搭建视频解码链路,以使得显存对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;
其中,视频解码链路包括第一组件和第二组件,第一组件包括视频解码组件和目标分析组件,第二组件包括视频输入组件。
第一组件运行于显存中。GPU(Graphic Processing Unit,图形处理器)是显示处理的核心组件,具备强大并行运算、非常适用视频解码。然而,GPU解码链路过程中、通常延时达到百ms之上,无法满足V2X视频低延时(时延在10ms之内)的多传感器融合应用场景。同时需要根据视频参数信息和分析需求信息等等各个环节动态调整。
第二组件运行于内存中。内存可以根据视频参数信息和分析需求信息确定或调整视频解码链路上的第一组件或第二组件,基于调整后的第一组件或第二组件调整视频解码链路,实现了视频解码链路的自适应调整,克服了常规的解码应用场景或者解决方案中视频解码链路固定的问题。
可以理解的是,本发明实施例在搭建视频解码链路时,将一个需要重复执行的流程切割成若干个不同的阶段(下述示例中“若干个不同的阶段”是四个阶段,分别是:视频数据输入,视频数据解码,目标分析,结果输出),每一个阶段由独立的单元负责(即四个组件分别负责不同的数据处理环节),所有待处理的视频数据依次进入作业队列,这种机制本身就能够提高视频解码链路的数据处理效率,有利于降低时延。
下面以具体的示例对比说明:
在一个示例中,假设有4批待处理的视频数据A、B、C、D依次进入视频解码链路并经历上述的若干个不同的阶段(这里是四个阶段),这样,当A进入视频数据输入阶段时,B、C、D处于等待进入链路的状态;当A进入视频解码阶段时,B进入视频数据输入阶段,C、D处于等待进入链路的状态;当A进入目标分析阶段时,B进入视频解码阶段,C进入视频数据输入阶段,D处于等待进入链路的状态;当A进入结果输出阶段时,B进入目标分析阶段,C进入视频解码阶段,D进入视频数据输入阶段,也就是说,此时,视频解码链路同时在对4批待处理的视频数据进行处理。
为便于比较,假设各阶段处理时长均为t,则视频解码链路从A进入视频解码链路至输出A对应的分析结果的等待时长为tA=4t;从输出A对应的分析结果至输出B对应的分析结果的等待时长为tB=t,从输出B对应的分析结果至输出C对应的分析结果的等待时长为tC=t,从输出C对应的分析结果至输出D对应的分析结果的等待时长为tD=t,因此,从A进入视频解码链路至输出D对应的分析结果的全部等待时长TA+B+C+D=tA+tB+tC+tD=7t。
在另一个示例中,则是对每批待处理的视频数据A、B、C、D依次执行整个流程,即令A进入流程,在A经历整个流程(即依次经历上述的四个阶段)之后,再令B进入流程,在B经历整个流程之后,再令C进入流程,在C经历整个流程之后,在令D进入流程直至D经历整个流程。其中,ABCD经历的流程是重复的。
为便于比较,这里参照上述的一个示例,假设各阶段处理时长均为t,则视频解码链路从A进入视频解码链路至输出A对应的分析结果的等待时长为tA=4t;从输出A对应的分析结果至输出B对应的分析结果的等待时长为tB=4t,从输出B对应的分析结果至输出C对应的分析结果的等待时长为tC=4t,从输出C对应的分析结果至输出D对应的分析结果的等待时长为tD=4t,因此,从A进入视频解码链路至输出D对应的分析结果的全部等待时长TA+B+C+D=tA+tB+tC+tD=16t。
显然,与上述的另一个示例提供的数据处理方式相比,上述的一个示例提供的数据处理方式具有更低的时延。
本发明实施例搭建视频解码链路之前,还包括:在多媒体应用程序开发框架下构建用于处理视频数据的管道。
多媒体应用程序开发框架下提供有多种组件或者插件,组件或者插件是一个管道中的基本组成功能实体,所有的组件或者插件都能够被链接到任意的已经定义了的数据流管道中,且管道中的每一个组件或者插件均可以根据应用场景开发。应用程序可以通过连接不同功能的组件或者插件来构建管道,通过管道的方式协商组件或者插件之间的衬垫连接和数据流,将多媒体处理的各个步骤组件串联起来,就可以实现一个数据流处理功能。应用程序可以安装在终端上或者服务器上。
多媒体应用程序开发框架可以是GStreamer框架还可以是其他支持视频解码链路自适应动态调整的多媒体应用程序开发框架,本实施例不以此为限。在一个具体的示例中,多媒体应用程序开发框架是GStreamer,GStreamer是一个基于插件的开源多媒体框架库,搭建视频解码链路之前还包括:创建GStreamer进程,在GStreamer进程中构建用于处理视频数据的管道。
图2是本发明实施例提供的一个管道的示意图,图2所示的管道中包括一条视频解码链路,该视频解码链路包括视频输入组件、视频解码组件、目标分析组件和结果输出组件,其中,视频输入组件与视频解码组件连接,视频解码组件与目标分析组件连接,目标分析组件连接与结果输出组件连接。
其中,目标分析组件能够基于视频解码数据进行需求分析,并生成分析结果,目标分析组件包括分类算法、检测算法、跟踪算法等中的一个或多个,其他分析算法也可以在本文中应用。分析结果可以采用文字、图片、音视频中任意一种或者多种表现形式的组合。
图3是本发明实施例提供的数据消息交互的原理图,请参照图3,管道内组件之间、组件与应用程序之间可以采用下述的数据消息交互方式:
(1)在总线注册有解码异常的回调函数,该回调函数可以接收组件消息,将其透传到应用程序,以监控管道的解码运行异常。
(2)管道内各组件之间使用事件消息传递,媒体数据通过缓冲区传递,注册回调函数可以获取组件之间传递的数据。
(3)管道的各个组件根据需求动态调整,比如图中的目标分析组件属于解码组件之后的应用。
(4)数据向组件以外流出可以通过一个或者多个source衬垫,组件接收数据是通过一个或者多个sink衬垫来完成的。Source组件和sink组件分别有且仅有一个sink衬垫或者source衬垫。
图4是本发明实施例提供的步骤S103的流程图,具体的如图4所示,根据视频参数信息和分析需求信息搭建视频解码链路,包括:
S1031:根据视频参数信息确定视频输入组件和视频解码组件;
视频参数信息包括但不限于待处理视频数据的数据来源、编码格式、视频路数等信息,例如,根据数据来源确定视频输入组件的接口类型,根据编码格式和视频路数在至少一种视频输入组件和至少一种视频解码组件中确定用于处理该待处理视频数据的对应的视频输入组件组件、视频解码组件的类型及数量等。
在一个具体的示例中,视频输入数据包括视频输入数据1、视频输入数据2和视频输入数据3,其中,视频输入数据及其对应的视频参数信息、输入组件和解码组件如下表所示。
表1视频参数信息及组件对应关系表
Figure BDA0003634213730000101
根据视频参数信息可以确定视频输入数据1对应于视频输入组件1、视频解码组件1,视频输入数据2对应于视频输入组件2、视频解码组件2,视频输入数据3对应于视频输入组件3、视频解码组件1。
S1032:根据分析需求信息确定目标分析组件;
如前所述,分析需求信息是根据应用场景预先确定的,下面以一个具体的应用场景为例对步骤S1032进行说明,该应用场景下,当车辆与行人距离小于预设距离时,需要车辆进行紧急制动预警,该应用场景下的分析需求信息可以包括分析需求1:对车辆与行人之间的相对速度进行监测,和分析需求2:对车辆与行人之间的距离进行监测,步骤S1032可以包括:根据分析需求1可以确定用于根据待处理视频数据获取车辆与行人之间相对速度的目标分析组件1,根据分析需求2可以确定根据待处理视频数据获取车辆与行人之间相对距离的目标分析组件2。需要说明的是,应用场景仅用于举例说明,不应视为对本发明实施例应用范围和领域的限制,分析需求的具体内容也不局限于上述示例。
在一个具体的示例中,分析需求信息包括分析需求1和分析需求2,根据分析需求信息可以确定分析需求1对应的目标分析组件1和结果输出组件1,分析需求2对应的目标分析组件2和结果输出组件2。
S1033:根据视频输入组件、视频解码组件和目标分析组件,得到视频解码链路;其中,视频解码链路包括顺次连接的视频输入组件、视频解码组件和、目标分析组件和结果输出组件。
其中,视频解码链路包括至少一个分支链路,每个分支链路包括一个目标分析组件,至少一个目标分析组件与同一个视频解码组件连接。目标分析组件包括视频解码数据获取模块、数据格式转换模块和数据分析模块;视频解码数据获取模块能够获取视频解码组件输出的视频解码数据;数据格式转换模块用于对视频解码数据进行颜色空间转换,将视频解码数据转换成能够被目标分析组件处理的数据格式;数据分析模块用于基于该能够被目标分析组件处理的数据进行需求分析和数据处理,得到分析结果数据。
结果输出组件与目标分析组件连接,目标分析组件生成的分析结果数据经结果输出组件输出。
可以理解的是,多个目标分析组件与同一个结果输出组件连接或者目标分析组件与结果输出组件一一对应连接都是可行的,可以根据实际需要进行设置。
当存在多路待处理视频数据时,针对每路视频数据创建一条管道或者针对多路视频数据创建一条管道都是可行的。
在一个推荐的示例中,在GStreamer进程中创建了1条管道,管道中包括1条视频解码链路。图5是本发明实施例提供的一条视频解码链路的示意图,请参照图5,该视频解码链路由视频输入组件、视频解码组件、目标分析组件1、结果输出组件1、目标分析组件2和结果输出组件2连接形成,包括两个分支链路,其中,视频输入组件、视频解码组件、目标分析组件1、结果输出组件1顺次连接形成一个分支链路,视频输入组件、视频解码组件、目标分析组件2、结果输出组件2顺次连接形成另一个分支链路,两个分支链路可以并行处理,提高并发的效率,从而达到低延时效果。
在一个可行的示例中,在GStreamer进程中创建了2条管道,管道1中包括1条视频解码链路1,管道2中包括1条视频解码链路2,视频解码链路1与视频解码链路2可以并行处理。视频解码链路1由视频输入组件1、视频解码组件1、目标分析组件1、结果输出组件1顺次连接形成,视频解码链路2由视频输入组件2、视频解码组件2、目标分析组件2、结果输出组件2顺次连接形成。
需要说明的是,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。步骤S1031与步骤S1032可以以图2示出的顺序进行,也可以以其他顺序进行,例如步骤S1031与步骤S1032同时发生、步骤S1032在步骤S1031之前发生。
具体的,显存对视频解码链路上的至少一个第一组件进行低延时优化可以从对解码器参数进行优化、对视频帧解码类型进行优化、以及对所述视频解码组件与所述目标分析组件中的至少一个进行多线程优化中的一项或多项着手。
其中,对解码器参数进行优化可以包括:设置解码器最大性能解码、关闭解码器图片缓冲区管理以及设置显存解码频率为最高频率中的一项或多项。
在一个具体的示例中,比如解码器Gst-nvvideo4linux2可以采用上述解码器参数进行低延时优化。它通过与libv4l2接口来利用Jetson的硬件解码引擎,支持H.264、H.265、JPEG和MJPEG格式,接收编码的视频流并使用NVDEC硬件引擎来解码视频流,解码输出采用NV12格式。
对视频帧解码类型进行优化是通过解码部分帧而非解码全部帧来减少延时的,可以包括以下步骤:
获取视频数据中的目标帧标识;
根据目标帧标识筛选出目标帧;
根据目标帧筛选结果对视频数据中的目标帧进行解码。
其中,目标帧包括关键帧和参考帧,关键帧即I帧。
S104:与显存协同工作,以基于优化后的视频解码链路对待处理视频数据进行处理。
基于优化后的视频解码链路对待处理视频数据进行处理包括:
内存中的视频输入组件接收待处理视频数据,将待处理视频数据沿优化后的视频解码链路传输至显存中的视频解码组件,以使得显存基于优化后的视频解码链路对待处理视频数据进行后续处理,这里的后续处理具体包括:视频解码组件对待处理视频数据进行解码处理得到视频解码数据,目标分析组件对视频解码数据进行分析得到分析结果。
基于优化后的视频解码链路对待处理视频数据进行处理坏包括:结果输出组件输出分析结果,结果输出组件可以包括在内存中,也可以包括在显存中。
在一个实例中,根据视频参数信息和分析需求信息搭建视频解码链路之后,还包括:
在视频参数信息变化时,根据变化后的视频参数信息调整视频输入组件和视频解码组件,得到调整后的视频输入组件和调整后的视频解码组件;
基于调整后的视频输入组件和调整后的视频解码组件调整视频解码链路,得到调整后的视频解码链路。
请继续参照表1,例如,当视频输入数据由包括视频输入数据1、视频输入数据2和视频输入数据3变为包括视频输入数据1和视频输入数据3时,则销毁视频输入数据2对应的视频输入组件2和视频解码组件2,当视频输入数据由包括视频输入数据1、视频输入数据2和视频输入数据3变为包括视频输入数据1和视频输入数据2时,则删除视频输入数据3对应的视频输入组件3。由于输入数据3与输入数据1对应的视频编码格式均为格式1,因此,不删除输入数据3对应的解码组件1。
在一些实施例中,根据视频参数信息和分析需求信息搭建视频解码链路之后,还包括:
在分析需求信息变化时,根据变化后的分析需求信息调整目标分析组件,得到调整后的目标分析组件;
基于调整后的目标分析组件在视频解码链路中创建或删除分支链路;其中,视频解码链路包括至少一个分支链路,每个分支链路包括一个目标分析组件;
例如,变化前的分析需求信息包括分析需求1和分析需求2,根据分析需求1和分析需求2确定出目标分析组件包括目标分析组件1和目标分析组件2;变化后的分析需求信息包括分析需求1和分析需求3,根据分析需求1和分析需求3确定出目标分析组件包括目标分析组件1和目标分析组件3,也就是说,分析需求信息的变化包括增加了分析需求3、删除了分析需求2,根据分析需求信息的变化应在视频解码链路中创建分支链路3、删除分支链路2,其中,分支链路3包括目标分析组件3,创建分支链路3包括将目标分析组件3与视频解码组件连接,将目标分析组件3与结果输出组件连接;分支链路3包括目标分析组件2,删除分支链路2包括断开目标分析组件2与视频解码的连接,断开目标分析组件2与结果输出组件的连接。
进一步地,根据视频参数信息和分析需求信息建视频解码链路之后,还包括:对第二组件进行多线程优化。
多线程优化可以是调节视频解码链路的每个组件中的线程数,每个环节配置多个线程有利于提高并发的效率,减小视频解码时延。在一个示例中,对第二组件进行多线程优化可以包括:根据待处理视频数据的视频数据路数调节视频输入组件中的线程数,每个线程处理若干路待处理视频数据。在一个示例中,多线程优化可以包括:根据视频帧数调节视频输入组件中的线程数,每个线程处理若干个视频帧。需要说明的是,多线程优化后的线程数不超出内存能处理的线程数上限。
在对使用本发明实施例提供的一种视频解码方法的视频解码延时进行测试,在一个具体示例中,其测试环境的硬件配置为Nvidia Xaiver,软件配置为Ubuntu18 jetson4.6版本。
获取网络视频RTSP流、RTP解析、解码、数据格式转换GRB、显示器输出测试命令:gst-launch-1.0-v rtspsrclocation="rtsp://admin:abcd1234@172.18.100.24/cam/realmonitor?channel=1&subtype=0"latency=0protocals=0x00000004!
rtph264depay!nvv4l2decoder enable-max-performance=1
disable-dpb=1!nvvidconv!'video/x-raw(memory:NVMM),
width=(int)1280,height=(int)720,format=(string)RGBA'!nv3dsink sync=0
通过设置GST_DEBUG_DUMP_DOT_DIR环境变量,制定输出的目录,输出运行时的组件关系图。
Gst-inspect-1.0nvv4l2decoder查看组件的详细信息,具体包含:FactoryDetails,Plugin Details,Gobject,Pad Templates,Pads,Element Properties等。
其中,解码视频延时测量方法包括:
(1)GStreamer输出整个管道的延时
GST_DEBUG="GST_TRACER:7"GST_TRACERS=latency
(2)各个组件的延时测试
export VDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1
export NVDS_ENABLE_LATENCY_MEASUREMENT=1
编号 编码格式 分辨率 帧率 I帧间隔 解码时间(ms)
1 H264 720P 25 50 1.3
2 H264 1080P 25 50 2.2
3 H264 2688*1520P 25 50 3.7
4 H264 1080P 25 25 2.4
常规CPU解码延时1-2秒,没有优化的GPU解码延时500ms,优化的解码延时可达到10ms,能满足数据融合等应用场景对超低延时的要求。
本发明实施例还提出一种视频解码方法,方法应用于显存,图6是本发明实施例提供的另一种视频解码方法的流程图,具体的如图6所示,该方法可以包括以下步骤:
S201:对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;
其中,视频解码链路是内存根据待处理视频数据对应的视频参数信息和分析需求信息搭建的;视频解码链路包括运行于显存中的第一组件和运行于内存中的第二组件,第一组件包括视频解码组件和目标分析组件;
具体的,显存对视频解码链路上的至少一个第一组件进行低延时优化可以从对解码器参数进行优化、对视频帧解码类型进行优化、以及对视频解码组件与目标分析组件中的至少一个进行多线程优化等中的一项或多项着手。
其中,对解码器参数进行优化可以包括:设置解码器最大性能解码、关闭解码器图片缓冲区管理以及设置显存解码频率为最高频率中的一项或多项。
在一个具体的示例中,比如解码器Gst-nvvideo4linux2可以采用上述解码器参数进行低延时优化。它通过与libv4l2接口来利用Jetson的硬件解码引擎,支持H.264、H.265、JPEG和MJPEG格式,接收编码的视频流并使用NVDEC硬件引擎来解码视频流,解码输出采用NV12格式。
对视频帧解码类型进行优化是通过解码部分帧而非解码全部帧来减少延时的,可以包括以下步骤:获取视频数据中的目标帧标识;根据目标帧标识筛选出目标帧;根据目标帧筛选结果对视频数据中的目标帧进行解码。其中,目标帧包括关键帧和参考帧,关键帧即I帧。
对视频解码组件与目标分析组件中的至少一个进行多线程优化可以包括:根据待处理视频数据的视频数据路数调节视频解码组件中的线程数,每个线程处理若干路待处理视频数据;在一个示例中,多线程优化可以包括:根据视频帧数调节视频解码组件中的线程数,每个线程处理若干个视频帧;在一个示例中,多线程优化还可以是将需求分析的过程拆分成多个可并行处理的步骤,对这些可并行处理的步骤采用多线程并行处理。需要说明的是,多线程优化后的线程数不超出显存能处理的线程数上限。
S202:与内存协同工作,以基于优化后的视频解码链路对待处理视频数据进行处理。
本发明实施例还提出一种内存,图7是本发明实施例提供的内存的结构框图,具体的如图7所示,该内存可以包括以下模块:
参数获取模块301,用于获取待处理视频数据对应的视频参数信息;
需求获取模块302,用于获取分析需求信息;
链路搭建模块303,用于根据视频参数信息和分析需求信息搭建视频解码链路,以使得显存对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;
其中,视频解码链路包括运行于显存中的第一组件和运行于内存中的第二组件;
具体地,第一组件包括视频解码组件和目标分析组件,第二组件包括视频输入组件,链路搭建模块303包括:
第一组件确定模块,用于根据视频参数信息确定视频输入组件和视频解码组件;
第二组件确定模块,用于根据分析需求信息确定目标分析组件;
组件连接模块,用于根据视频输入组件、视频解码组件和目标分析组件,得到视频解码链路;其中,视频解码链路包括顺次连接的视频输入组件、视频解码组件和目标分析组件。
第一数据处理模块304,用于与显存协同工作,以基于优化后的视频解码链路对待处理视频数据进行处理。
具体的,内存还包括第一调整模块和/或第二调整模块,第一调整模块包括第一组件调整模块和分支链路调整模块,第二组件调整模块包括第二组件调整模块和主链路调整模块;
目标分析组件调整模块,用于在分析需求信息变化时,根据变化后的分析需求信息调整目标分析组件,得到调整后的目标分析组件;
分支链路调整模块,用于基于调整后的目标分析组件在视频解码链路中创建或删除分支链路;其中,视频解码链路包括至少一个分支链路,每个分支链路包括一个目标分析组件,多个目标分析组件均与同一个视频解码组件连接;
第二组件调整模块,用于在视频参数信息变化时,根据变化后的视频参数信息调整视频输入组件和视频解码组件,得到调整后的视频输入组件和调整后的视频解码组件;
主链路调整模块,用于基于调整后的视频输入组件和调整后的视频解码组件调整视频解码链路,得到调整后的视频解码链路。
在根据视频参数信息和分析需求信息建视频解码链路之后,内存也能够对视频解码链路进行低延时优化,其低延时优化具体是通过对运行于内存中的第二组件进行多线程优化实现的。
本发明实施例还提出一种显存,图8是本发明实施例提供的显存的结构框图,具体的如图8所示,该显存包括:
低延时优化模块401,用于对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;
其中,视频解码链路是内存根据待处理视频数据对应的视频参数信息和分析需求信息搭建的;视频解码链路包括运行于显存中的第一组件和运行于内存中的第二组件;
具体地,第一组件包括视频解码组件和目标分析组件;对视频解码链路上的至少一个第一组件进行低延时优化,包括:
对解码器参数进行优化;和/或,对视频解码组件与目标分析组件中的至少一个进行多线程优化。
第二数据处理模块402,用于与内存协同工作,以基于优化后的视频解码链路对待处理视频数据进行处理。
本发明实施例还提出一种电子设备,电子设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述方法实施例记载的一种视频解码方法。
本发明实施例还提出一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述方法实施例记载的一种视频解码方法。
本发明实施例提供的一种视频解码方法、内存、显存、电子设备及存储介质应用在要求超低延时的场景下,实施本发明具有以下有益效果:
本发明实施例在内存中根据待处理视频数据对应的视频参数信息和分析需求信息来确定视频解码链路中的各组件,利用确定出的组件搭建视频解码链路,实现了视频解码链路的自适应动态调整,在此基础上,在显存中对视频解码链路的至少一个第一组件进行低延时优化,通过内存和显存协同工作和视频解码链路的自适应动态调整,显著降低了视频解码的时延,使得优化后的视频解码链路能够满足不同场景对应的解码(例如相机机芯数据解码)或者其他需求(例如V2X数据融合)。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种视频解码方法,其特征在于,所述方法应用于内存,所述方法包括:
获取待处理视频数据对应的视频参数信息;
获取分析需求信息;
根据所述视频参数信息和所述分析需求信息搭建视频解码链路,以使得显存对所述视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
与所述显存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述第一组件包括视频解码组件和目标分析组件,所述第二组件包括视频输入组件,所述根据所述视频参数信息和所述分析需求信息搭建视频解码链路,包括:
根据所述视频参数信息确定所述视频输入组件和所述视频解码组件;
根据所述分析需求信息确定所述目标分析组件;
根据所述视频输入组件、所述视频解码组件和所述目标分析组件,得到所述视频解码链路;其中,所述视频解码链路包括顺次连接的所述视频输入组件、所述视频解码组件和所述目标分析组件。
3.根据权利要求2所述的方法,其特征在于,
所述根据所述视频参数信息和所述分析需求信息搭建视频解码链路之后,还包括:
在所述分析需求信息变化时,根据变化后的所述分析需求信息调整所述目标分析组件,得到调整后的所述目标分析组件;
基于调整后的所述目标分析组件在所述视频解码链路中创建或删除分支链路;其中,所述视频解码链路包括至少一个分支链路,每个所述分支链路包括一个所述目标分析组件;
和/或,所述根据所述视频参数信息和所述分析需求信息搭建视频解码链路之后,还包括:
在所述视频参数信息变化时,根据变化后的所述视频参数信息调整所述视频输入组件和所述视频解码组件,得到调整后的所述视频输入组件和调整后的所述视频解码组件;
基于调整后的所述视频输入组件和调整后的所述视频解码组件调整所述视频解码链路,得到调整后的所述视频解码链路。
4.根据权利要求1所述的方法,其特征在于,所述根据所述视频参数信息和所述分析需求信息建视频解码链路之后,还包括:对所述第二组件进行多线程优化。
5.一种视频解码方法,其特征在于,所述方法应用于显存,所述方法包括:
对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路是内存根据待处理视频数据对应的视频参数信息和分析需求信息搭建的;所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
与所述内存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
6.根据权利要求5所述的方法,其特征在于,所述第一组件包括视频解码组件和目标分析组件;所述对视频解码链路上的至少一个第一组件进行低延时优化,包括:
对解码器参数进行优化;和/或,对所述视频解码组件与所述目标分析组件中的至少一个进行多线程优化。
7.一种内存,其特征在于,所述内存包括:
参数获取模块,用于获取待处理视频数据对应的视频参数信息;
需求获取模块,用于获取分析需求信息;
链路搭建模块,用于根据所述视频参数信息和所述分析需求信息搭建视频解码链路,以使得显存对所述视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
第一数据处理模块,用于与所述显存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
8.一种显存,其特征在于,所述显存包括:
低延时优化模块,用于对视频解码链路上的至少一个第一组件进行低延时优化,得到优化后的视频解码链路;其中,所述视频解码链路是内存根据待处理视频数据对应的视频参数信息和分析需求信息搭建的;所述视频解码链路包括运行于所述显存中的所述第一组件和运行于所述内存中的第二组件;
第二数据处理模块,用于与所述内存协同工作,以基于所述优化后的视频解码链路对所述待处理视频数据进行处理。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-6任一所述的一种视频解码方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-6任一所述的一种视频解码方法。
CN202210500417.9A 2022-05-09 2022-05-09 一种视频解码方法、内存、显存、电子设备及存储介质 Active CN115119053B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210500417.9A CN115119053B (zh) 2022-05-09 2022-05-09 一种视频解码方法、内存、显存、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210500417.9A CN115119053B (zh) 2022-05-09 2022-05-09 一种视频解码方法、内存、显存、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115119053A true CN115119053A (zh) 2022-09-27
CN115119053B CN115119053B (zh) 2024-05-31

Family

ID=83327149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210500417.9A Active CN115119053B (zh) 2022-05-09 2022-05-09 一种视频解码方法、内存、显存、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115119053B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105163127A (zh) * 2015-09-07 2015-12-16 浙江宇视科技有限公司 视频分析方法及装置
CN110381322A (zh) * 2019-07-15 2019-10-25 腾讯科技(深圳)有限公司 视频流解码方法、装置、终端设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105163127A (zh) * 2015-09-07 2015-12-16 浙江宇视科技有限公司 视频分析方法及装置
CN110381322A (zh) * 2019-07-15 2019-10-25 腾讯科技(深圳)有限公司 视频流解码方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN115119053B (zh) 2024-05-31

Similar Documents

Publication Publication Date Title
TWI603609B (zh) 簡化視訊隨機存取之限制及單元類型
US9654727B2 (en) Techniques to overcome communication lag between terminals performing video mirroring and annotation operations
US20070230586A1 (en) Encoding, decoding and transcoding of audio/video signals using combined parallel and serial processing techniques
US9609338B2 (en) Layered video encoding and decoding
CN111935531A (zh) 一种基于嵌入式平台的综合显示系统图形处理方法
CN111327921A (zh) 视频数据处理方法及设备
CN111343503B (zh) 视频的转码方法、装置、电子设备及存储介质
KR101680545B1 (ko) 파노라마 동영상 생성 서비스 제공 방법 및 장치
US9872062B1 (en) Enforcing synchronization by embedding audio within video frame data
US7692562B1 (en) System and method for representing digital media
CN109698850B (zh) 处理方法和系统
CN113395523A (zh) 基于并行线程的图像解码方法、装置、设备及存储介质
CN115119053B (zh) 一种视频解码方法、内存、显存、电子设备及存储介质
CN112637538B (zh) 用于优化视频分析的智能标签方法、系统、介质及终端
CN114979541A (zh) 一种视频显示系统
CN114449295A (zh) 视频处理方法、装置、电子设备及存储介质
CN114513674A (zh) 互动直播数据传输/处理方法、处理系统、介质及服务端
KR20220135483A (ko) 이동 통신 시스템에서 영상 대화 서비스를 제공하기 위한 방법 및 장치
JP4746817B2 (ja) マルチメディア・コンテンツの処理を行う方法
US20220398216A1 (en) Appliances and methods to provide robust computational services in addition to a/v encoding, for example at edge of mesh networks
US11778211B2 (en) Parallel video parsing for video decoder processing
CN117014620A (zh) 一种视频播放方法、装置、电子设备及存储介质
US11799943B2 (en) Method and apparatus for supporting preroll and midroll during media streaming and playback
US20230224557A1 (en) Auxiliary mpds for mpeg dash to support prerolls, midrolls and endrolls with stacking properties
WO2024120031A1 (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