CN117201793A - 视频剪辑场景的解码器控制方法、设备及计算机可读介质 - Google Patents

视频剪辑场景的解码器控制方法、设备及计算机可读介质 Download PDF

Info

Publication number
CN117201793A
CN117201793A CN202311069103.9A CN202311069103A CN117201793A CN 117201793 A CN117201793 A CN 117201793A CN 202311069103 A CN202311069103 A CN 202311069103A CN 117201793 A CN117201793 A CN 117201793A
Authority
CN
China
Prior art keywords
frame data
decoding
target video
video segment
hardware decoder
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.)
Pending
Application number
CN202311069103.9A
Other languages
English (en)
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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202311069103.9A priority Critical patent/CN117201793A/zh
Publication of CN117201793A publication Critical patent/CN117201793A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请提供了一种视频剪辑场景的解码器控制方法、设备及计算机可读介质,该方案提前开启硬件解码器对目标视频片段进行解码,将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中,通过提前开启硬件解码器的方式实现解码处理的预热,避免播放画面卡顿;同时通过设置额外的二级缓存,从所述一级缓存中读取帧数据,写入到二级缓存中,由于这些帧数据能够反映出实际解码的进度,可以根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码,从而准确地确定硬件解码器的关闭时机,当完成解码时即可关闭所述硬件解码器,由此严格控制了硬件解码器的生命周期,避免了硬解资源的无效占用。

Description

视频剪辑场景的解码器控制方法、设备及计算机可读介质
技术领域
本申请涉及信息技术领域,尤其涉及一种视频剪辑场景的解码器控制方法、设备及计算机可读介质。
背景技术
视频的解码器一般包括两种类型,分别为硬件解码器和软件解码器,其中,硬件解码器的解码效率高,但同一时间同一设备上所能支持的数量有限,而软件解码器的解码效率相对较低,但是数量不受限制。在视频剪辑场景中,每个视频片段都需要单独的解码器进行解码,为了提升效率需要尽量避免使用软件解码器。但是,由于硬件解码器的数量受限,如何对硬件解码器的生命周期进行管理,以满足流畅、准确的播放和预览,是目前需要解决的主要问题。目前在视频剪辑场景中的硬件解码器的控制方案主要有如下两种方法:
1、无预热方案。该方案仅对当前播放的单个视频片段的解码结果进行缓存,每个视频片段对应的硬件解码器的开启和关闭依赖于当前的播放时间。例如,对于同一播放轨道上的两个视频片段clip1和clip2,当clip2开始播放时才去开启对应硬件解码器,由于从开始解码到渲染播放的过程需要一定处理时间,因此该方案在两个视频片段衔接的位置处,会出现播放卡顿的情况发生。
2、基于时间阈值的预热方案。该方案会播放某一个视频片段之前,基于时间阈值来预先开启该视频片段的硬件解码器对其进行解码并缓存。例如,对于同一播放轨道上的两个视频片段clip1和clip2,当clip2开始播放之前,可以提前开启clip2对应的硬件解码器对其进行解码并将解码结果放入clip2对应的缓存中。当需要播放clip2的画面内容时,从缓存中直接取出解码结果进行渲染播放即可,因此该方案通过预先启动硬件解码器可以解决视频片段衔接处播放卡顿的问题,但是仍然难以很好的控制解码器的关闭时间,即无法在已经完成clip1解码的情况下及时关闭该其对应的硬件解码器。因此,可能会出现解码过程中存在冗余的硬件解码器,导致硬解资源被无效占用,其它解码处理只能使用软解从而影响解码效率。
发明内容
本申请的多个方面提供一种视频剪辑场景的解码器控制方法、设备及计算机可读介质,用以解决目前的视频剪辑场景中无法准确控制硬件解码器的关闭时间的问题。
本申请的一方面,提供了一种视频剪辑场景的解码器控制方法,其中,所述方法包括:
提前开启硬件解码器对目标视频片段进行解码,将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中;
从所述一级缓存中读取帧数据,写入到二级缓存中;
根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码;
若已经完成对目标视频片段的解码,关闭所述硬件解码器。
基于本申请的另一方面,还提供了一种视频剪辑场景的解码器控制设备,其中,所述设备包括:
解码控制模块,用于提前开启硬件解码器对目标视频片段进行解码,以及在已经完成对目标视频片段的解码时,关闭所述硬件解码器;
缓存管理模块,用于将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中,从所述一级缓存中读取帧数据,写入到二级缓存中,以及根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码。
本申请实施例还提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述的视频剪辑场景的解码器控制方法。
本申请实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现前述的视频剪辑场景的解码器控制方法。
本申请实施例所提供了一种视频剪辑场景的解码器控制方案,该方案提前开启硬件解码器对目标视频片段进行解码,将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中,通过提前开启硬件解码器的方式实现解码处理的预热,避免播放画面卡顿;同时通过设置额外的二级缓存,从所述一级缓存中读取帧数据,写入到二级缓存中,由于这些帧数据能够反映出实际解码的进度,可以根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码,从而准确地确定硬件解码器的关闭时机,当完成解码时即可关闭所述硬件解码器,由此严格控制了硬件解码器的生命周期,避免了硬解资源的无效占用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例提供的一种视频剪辑场景的解码器控制方法的处理流程图;
图2为本申请实施例中对视频片段进行解码的实际时间与播放时间之间的示意图;
图3为本申请实施例的解码过程中解码进度和播放进度之间的示意图;
图4为本申请实施例的解码过程中的数据流向示意图;
图5为本申请实施例的解码完成时解码进度和播放进度之间的示意图;
图6为本申请实施例中同一播放轨道的两个视频片段之间的时序间隔示意图;
图7为本申请实施例中同一播放轨道的两个视频片段之间的另一种时序间隔示意图;
图8为单轨场景下对剪辑视频进行播放预览时的解码过程示意图;
图9为多轨场景下对剪辑视频进行播放预览时的解码过程示意图;
图10为本申请实施例提供的一种视频剪辑场景的解码器控制设备的结构示意图;
图11为适用于实现本申请实施例中方案的一种电子设备的结构示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机程序指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请实施例提供了一种视频剪辑场景的解码器控制方法,该方法提前开启硬件解码器对目标视频片段进行解码,将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中,通过提前开启硬件解码器的方式实现解码处理的预热,避免播放画面卡顿;同时通过设置额外的二级缓存,从所述一级缓存中读取帧数据,写入到二级缓存中,由于这些帧数据能够反映出实际解码的进度,可以根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码,从而准确地确定硬件解码器的关闭时机,当完成解码时即可关闭所述硬件解码器,由此严格控制了硬件解码器的生命周期,避免了硬解资源的无效占用。
在实际场景中,上述方法的执行主体可以是用户设备、或者用户设备与网络设备通过网络相集成所构成的设备,或者也可以是运行于上述设备的应用程序,所述用户设备包括但不限于计算机、手机、平板电脑等各类终端设备,所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
在视频剪辑场景中,用户在对视频片段执行相应的剪辑操作(如添加特效、添加背景音乐、组合视频片段、添加视频片段之间的过场画面等)后,可能需要对完成剪辑的视频进行播放预览,从而确定剪辑操作符合预期。在播放预览的过程中,需要启动解码器对各个视频片段进行解码,然后对解码的结果再进行渲染播放。在实际场景中,由于硬件解码器的解码效率较高,因此会尽可能使用硬件解码器来对剪辑后的各个视频片段进行解码,而尽量避免使用软件解码器。同时,由于硬件解码器的资源限制,同一设备在同一时间所能支持开启的硬件解码器的数量有限,因此本方案的目的在于严格控制硬件解码器的生命周期,避免硬件解码器资源的无效占用。图1示出了本申请实施例提供的一种视频剪辑场景的解码器控制方法的处理流程,至少包括以下几个步骤:
步骤S101,提前开启硬件解码器对目标视频片段进行解码,将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中。
其中,所述目标视频片段是本次需要进行解码处理的视频片段,通过提前开启硬件解码器对目标视频片段进行解码,可以使得某一视频片段解码的实际时间早于播放时间。例如,以图2所示的场景为例,该视频片段clip实际开始播放是从T2开始,但是对其进行解码会从早于T2的T1开始。由此,可以将提前获得播放时所需要解码结果,当需要播放时,直接从缓存中取出使用即可,由此可以解决视频片段切入点处的卡顿问题。
在实际场景中,可以预先设定预热时间,根据所述目标视频片段的预热时间,提前开启硬件解码器对目标视频片段进行解码。在当前的时间到达该预设时间时,即可开启硬件解码器对目标视频片段进行解码。例如,对于前述的目标视频clip,其对应的预热时间即为T1,在当前时间到达T1时,即可开启对将视频片段clip作为目标视频片段,开启硬件解码器对其进行解码。
在本申请的一些实施例中,在基于预热时间提前启动解码器时,为了避免在同一播放轨道上同时启动多个硬件解码器,从而过多的占用硬解资源,可以在确定已到达目标视频片段的预热时间后,再继续判断同一播放轨道上的前一视频片段对应的硬件解码器是否已关闭。在前一视频片段的硬件解码器已关闭的情况下,再开启新的硬件解码器对目标视频片段进行解码。
一级缓存与硬件解码器一一对应,即每个硬件解码器开启并对一个视频片段进行解码后,会将解码得到的帧数据存储至对应的一个一级缓存中,例如开启硬件解码器decoder1对视频片段clip1解码后会将帧数据写入到对应的一级缓存buffer1-1中,当开启另一个硬件解码器decoder2对下一个视频片段clip2解码后,则会将帧数据写入到一级缓存buffer1-2中。
步骤S102,从所述一级缓存中读取帧数据,写入到二级缓存中。
对于任意一个一级缓存中的帧数据,可以在第一时间写入到二级缓存中,而实际播放时按照顺序从所述二级缓存中获取对应的帧数据进行渲染并播放。其中,帧数据的顺序可以基于播放时间戳来确定,所述播放时间戳用于表示帧数据在一个视频片段中的时序位置,例如视频片段的长度为5秒,则若一个帧数据的播放时间戳为3.30s,则表示该播放时间戳对应的帧数据在时序上位于视频片段中3.30秒的位置,由此可以根据时序位置来确定帧数据的先后顺序。
以前述的视频片段clip1为例,若当前时刻为T2,表示已经播放到视频片段中t2所对应的内容时序位置t1~t2之间所对应的帧数据flame1~flame100已经播放完,此时需要播放下一帧数据flame101。由于硬件解码器是提前开启并进行解码,此时已经完成对帧数据flame1~flame120的解码,并写入到对应的一级缓存buffer1-1,同时一级缓存buffer1-1中的帧数据flame1~flame120也会读取并写入到二级缓存buffer2中。在播放时,渲染器可以从二级缓存buffer2中获取t2位置对应的帧数据flame101,完成渲染后进行播放,如图3所示。
步骤S103,根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码。
解码得到的帧数据中可以携带关于其在目标视频片段中的时序位置的相关信息,该信息可以表示某一个帧数据在目标视频片段中的位置。以前述的场景为例,若视频片段clip1播放的结束时间为t3,硬件解码器可以在T3时刻完成对所有内容的解码,获取到对应的视频帧flame1~flame500,并依次写入到一级缓存buffer1-1以及二级缓存buffer2。其中,帧数据flame500中携带了能够用于判断其是否为视频片段clip1中最后一帧的信息,如图4所示。例如,本实施中该信息可以是一个时间戳信息,即播放时间戳,表示该帧在目标视频片段中的时序位置的播放时间。
在判断时,可以将所述目标视频片段的结束时间与已写入到所述二级缓存的帧数据的播放时间进行对比。其中,所述结束时间和播放时间均可以是基于视频片段的长度所确定的相对时间,例如,某一视频片段clip的长度为10s,则该视频片段的开始时间为0s,结束时间为10s,该视频中各个帧数据的播放时间的取值区间为0~10s。解码获得的帧数据可以包括一个播放时间戳Pts,该播放时间戳表示在目标视频片段中的时序位置,将最新写入到二级缓存中的帧数据flame_n的播放时间戳与视频片段clip的结束时间10s进行比较,若两者相同,则可以确定已经完成对目标视频片段的解码。
步骤S104,若已经完成对目标视频片段的解码,即可关闭所述硬件解码器,从而释放占用该开启硬件解码器所占用的硬解资源,提升硬解资源的利用率,避免其他需要使用硬件解码器的解码过程因硬解资源不足而只能使用软件解码器。若还未完成对目标视频片段的解码,则需要继续等待,直至确定已经完成对目标视频片段的解码。
将解码得到的帧数据写入到二级缓存中,除了利用二级缓存汇总所有已经缓存中的帧数据,以便于硬件解码器的关闭时间进行判断之外,还可以在关闭硬件解码器时,同时释放所述硬件解码器对应的一级缓存,避免一级缓存中的帧数据因缓存释放而丢失,提升缓存资源的利用率。
例如,视频片段clip1播放的结束时间为t3,硬件解码器可以在T3时刻完成对所有内容的解码,获取到对应的视频帧flame1~flame500,并依次写入到一级缓存buffer1-1以及二级缓存buffer2。若T3时刻正在播放的视频内容为帧数据flame480对应的内容,此时渲染器可以从二级缓存buffer2中对应的帧数据flame480进行渲染后播放,如图5所示。在该T3时刻,二级缓存中最新写入的帧数据flame500中携带的时间戳信息为t3,与该视频片段clip1的结束时间相同,因此可以判定T3时刻硬件解码器decoder1已经完成了对目标视频片段clip1的解码。此时,可以关闭硬件解码器decoder1,同时释放其对应的一级缓存buffer1-1,由此提升应硬解资源和缓存资源的利用率。
此外,对于二级缓存中已经完成播放的帧数据,也可以从二级缓存中清理,以便于写入后续解码得到的新的帧数据。例如,在T3时刻从二级缓存buffer2中对应的帧数据flame480进行渲染播放后,可以从二级缓存中清理帧数据flame480,此时二级缓存中存储的帧数据为flame480之后解码获得的帧数据,即视频片段clip1的帧数据flame481~flame500,如图5所示。
在实际场景中,在同一播放轨道上可能存在多个不同的视频片段。当在前一视频片段对应的硬件解码器关闭后,理论上在此时即可提前开启硬件解码器对所述目标视频片段进行解码。但是在实际场景中,若所述目标视频片段与同一播放轨道上的前一视频片段之间的时间间隔较长,以图6所示的场景为例,两个视频片段clip1和clip2在播放轨道上的时间间隔为10秒,按照前述的解码处理方案,前一视频片段clip1会在T4时刻完成解码,此时其对应的硬件解码器decoder1就会关闭,若在硬件解码器decoder1关闭后,立即启动新的硬件解码器decoder2采用相同的方式对视频片段clip2进行解码,则需要在T4过后的第一时间将解码得到的帧数据写入到对应的一级缓存buffer1-2以及二级缓存buffer2中。但是,这些视频片段clip2的帧数据实际会在T5时刻才会被使用到,因此在T4~T5之间的大部分时间这部分帧数据所占用的缓存资源是浪费的。
由此,本申请实施例的方案中,在提前开启硬件解码器对目标视频片段进行解码时,可以基于所述目标视频片段与同一播放轨道上的前一视频片段之间的时间间隔进行判断,若所述目标视频片段与同一播放轨道上的前一视频片段之间的时间间隔小于等于第一预设值,则在前一视频片段对应的硬件解码器关闭后,可以立即开启硬件解码器对所述目标视频片段进行解码。
其中,所述第一预设值可以根据实际场景的需要设定,例如可以设定为0,当两个相邻视频片段需要连续播放时,两者之间的时间间隔为0,此时才会在前一视频片段对应的硬件解码器关闭后,立即开启硬件解码器对所述目标视频片段进行解码。此外,也可以结合预热时间来设定该第一预设值,将第一预设值设定为一个小于等于预热时间且大于0的数值,可以为提前解码后一个视频片段提供足够的处理时间同时,避免过多占用缓存资源。以图7所示的场景为例,两个视频片段clip1和clip2在播放轨道上的时间间隔为0,前一视频片段clip1在T5时刻完成解码后,此时其对应的硬件解码器decoder1就会关闭,若在硬件解码器decoder1关闭后,立即启动新的硬件解码器decoder2采用相同的方式对视频片段clip2进行解码,将解码得到的帧数据写入到对应的一级缓存buffer1-2以及二级缓存buffer2中。
图8示出了采用本申请实施提供的解码器控制方案在视频剪辑场景中对剪辑视频进行播放预览时的解码过程。该场景为单轨场景,即两个视频片段clip1和clip2处于同一播放轨道中,在实际播放时两个视频片段的画面内容先后播放。其中,两个视频片段clip1和clip2对应的硬件解码器分别为decoder1和decoder2,分别对应一级缓存buffer1-1和buffer1-2,一级缓存的横向长度表示其对应的硬件解码器的生命周期,二级缓存为buffer2。以下按照各个时间节点(T0~T5)对解码器以及缓存的状态进行说明,具体如下:
在T0时刻之前,硬件解码器decoder1和decoder2均处于关闭状态。
在T0时刻,开启硬件解码器decoder1,开始对视频片段clip1进行解码,将解码得到的帧数据写入到以及缓存buffer1-1中。同时,二级缓存buffer2中一级缓存buffer1-1中读取帧数据,进行保存。此时还未开始播放剪辑视频的画面内容。
在T0至T2过程中,硬件解码器decoder1持续对视频片段clip1进行解码,将解码得到的帧数据写入到以及缓存buffer1-1中。同时,二级缓存buffer2中一级缓存buffer1-1中继续读取新写入的帧数据,并进行保存。其中,在T1时刻,开始播放剪辑视频的画面内容,渲染器从二级缓存中按照播放时间戳的顺序,逐帧取出帧数据完成渲染后播出画面内容。
在T2时刻,由于二级缓存中已经从一级缓存buffer1-1中读取到视频片段clip1的最后一个帧数据,此时根据帧数据中包含的播放时间戳确定硬件解码器decoder1已经完成对视频片段clip1的解码,此时可以关闭硬件解码器decoder1,同时释放一级缓存buffer1-1。在关闭硬件解码器decoder1之后,开启硬件解码器decoder2,开始对视频片段clip2进行解码,将解码得到的帧数据写入到以及缓存buffer1-2中。同时,二级缓存buffer2中一级缓存buffer1-2中读取帧数据,进行保存。T2时刻之后的一段时间内,二级缓存可能同时存储有视频片段clip1末尾以及视频片段clip2起始部分的帧数据,如图中斜线部分对应的帧数据。
在T2至T4过程中,硬件解码器decoder2持续对视频片段clip2进行解码,将解码得到的帧数据写入到以及缓存buffer1-2中。同时,二级缓存buffer2中一级缓存buffer1-2中继续读取新写入的帧数据,并进行保存。其中,在T3时刻,视频片段clip1的画面内容播放完毕,开始播放视频片段clip2的画面内容,渲染器从二级缓存中按照播放时间戳的顺序,逐帧取出视频片段clip2帧数据完成渲染后播出画面内容。
在T4时刻,由于二级缓存中已经从一级缓存buffer1-2中读取到视频片段clip2的最后一个帧数据,此时根据帧数据中包含的播放时间戳确定硬件解码器decoder2已经完成对视频片段clip2的解码,此时可以关闭硬件解码器decoder2,同时释放一级缓存buffer1-2。此时,由于解码过程是超前于播放过程的,视频片段clip2的画面内容此时还未播放完毕,因此渲染器可以继续从二级缓存中按照播放时间戳的顺序,取出视频片段clip2帧数据完成渲染后播出画面内容。直至在T5时刻完成所有画面内容的播放。在此需要说明,由于实际进行相应的处理需要一定的时间完成各个处理过程,因此本实施例中所指的各个时间节点可以是一个足够完成相应处理的时间区间。
图9示出了在多轨场景中采用本申请实施提供的解码器控制方案在视频剪辑场景中对剪辑视频进行播放预览时的解码过程。其中涉及的两个视频片段中,clip1和clip2分别不同播放轨道track1和track2中,例如,在剪辑视频采用了画中画的播放模式时会出现此类多轨的解码处理场景。两个视频片段clip1和clip2对应的硬件解码器分别为decoder1和decoder2,分别对应一级缓存buffer1-1和buffer1-2,一级缓存的横向长度表示其对应的硬件解码器的生命周期,二级缓存为buffer2。以下按照各个时间节点(T0~T7)对解码器以及缓存的状态进行说明,具体如下:
在T0时刻之前,硬件解码器decoder1和decoder2均处于关闭状态。
在T0时刻,开启硬件解码器decoder1,开始对视频片段clip1进行解码,将解码得到的帧数据写入到以及缓存buffer1-1中。同时,二级缓存buffer2中一级缓存buffer1-1中读取帧数据,进行保存。此时还未开始播放剪辑视频的画面内容。
在T0至T4过程中,硬件解码器decoder1持续对视频片段clip1进行解码,将解码得到的帧数据写入到以及缓存buffer1-1中。同时,二级缓存buffer2中一级缓存buffer1-1中继续读取新写入的帧数据,并进行保存。其中,在T1时刻,开始播放剪辑视频中clip1的画面内容,渲染器从二级缓存中按照播放时间戳的顺序,逐帧取出帧数据完成渲染后播出画面内容。
在T2时刻,开启硬件解码器decoder2,开始对视频片段clip2进行解码,将解码得到的帧数据写入到以及缓存buffer1-2中。同时,二级缓存buffer2中一级缓存buffer1-2中读取帧数据,进行保存。此时,同时存在两个硬件解码器分别对视频片段clip1和clip2进行解码。T2至T4的时间段内,二级缓存中同时存储有视频片段clip1和clip2的部分帧数据。在T3时刻,开始播放剪辑视频中clip2的画面内容,渲染器从二级缓存中按照播放时间戳的顺序,逐帧取出帧数据完成渲染后播出画面内容,此时clip1和clip2的画面内容同时播放。
在T4时刻,由于二级缓存中已经从一级缓存buffer1-1中读取到视频片段clip1的最后一个帧数据,此时根据帧数据中包含的播放时间戳确定硬件解码器decoder1已经完成对视频片段clip1的解码,此时可以关闭硬件解码器decoder1,同时释放一级缓存buffer1-1。由于解码过程是超前于播放过程的,视频片段clip1的画面内容此时还未播放完毕,因此渲染器可以继续从二级缓存中按照播放时间戳的顺序,取出视频片段clip1帧数据完成渲染后播出画面内容。直至在T5时刻完成视频片段clip1所有画面内容的播放。
在T6时刻,由于二级缓存中已经从一级缓存buffer1-2中读取到视频片段clip2的最后一个帧数据,此时根据帧数据中包含的播放时间戳确定硬件解码器decoder2已经完成对视频片段clip2的解码,此时可以关闭硬件解码器decoder2,同时释放一级缓存buffer1-2。此时,由于解码过程是超前于播放过程的,视频片段clip2的画面内容此时还未播放完毕,因此渲染器可以继续从二级缓存中按照播放时间戳的顺序,取出视频片段clip2帧数据完成渲染后播出画面内容。直至在T7时刻完成视频片段clip2所有画面内容的播放。
此外,本申请实施例还提供了一种视频剪辑场景的解码器控制设备,该设备的结构如图10所示,包括解码控制模块1010和缓存管理模块1020。其中,所述解码控制模块1010用于提前开启硬件解码器对目标视频片段进行解码,以及在已经完成对目标视频片段的解码时,关闭所述硬件解码器。所述缓存管理模块1020用于将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中,从所述一级缓存中读取帧数据,写入到二级缓存中,以及根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码。
基于同一发明构思,本申请实施例中还提供了一种电子设备,所述电子设备对应的方法可以是前述实施例中图像预处理模型的训练方法以及图像压缩方法,并且其解决问题的原理与该方法相似。本申请实施例提供的所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述本申请的多个实施例的方法和/或技术方案。
所述电子设备可以是用户设备、或者用户设备与网络设备通过网络相集成所构成的设备,或者也可以是运行于上述设备的应用程序,所述用户设备包括但不限于计算机、手机、平板电脑等各类终端设备,所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(CloudComputing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
图11示出了适用于实现本申请实施例中的方法和/或技术方案的一种设备的结构,该设备1100包括中央处理单元(CPU,Central Processing Unit)1101,其可以根据存储在只读存储器(ROM,Read Only Memory)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM,Random Access Memory)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有系统操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O,Input/Output)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标、触摸屏、麦克风、红外传感器等的输入部分1106;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,LiquidCrystal Display)、LED显示器、OLED显示器等以及扬声器等的输出部分1107;包括硬盘、光盘、磁盘、半导体存储器等一个或多个计算机可读介质的存储部分1108;以及包括诸如LAN(局域网,Local Area Network)卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。
特别地,本申请实施例中的方法和/或实施例可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在该计算机程序被中央处理单元(CPU)1101执行时,执行本申请的方法中限定的上述功能。
本申请另一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现前述本申请的任意一个或多个实施例的方法和/或技术方案。
具体来说,本实施例可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图或框图示出了按照本申请各种实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的针对硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或页面组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。各个步骤之间的执行顺序由各个步骤之间的逻辑关系确定,与步骤序号的数值无关。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (10)

1.一种视频剪辑场景的解码器控制方法,其中,所述方法包括:
提前开启硬件解码器对目标视频片段进行解码,将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中;
从所述一级缓存中读取帧数据,写入到二级缓存中;
根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码;
若已经完成对目标视频片段的解码,关闭所述硬件解码器。
2.根据权利要求1所述的方法,其中,提前开启硬件解码器对目标视频片段进行解码,包括:
若所述目标视频片段与同一播放轨道上的前一视频片段之间的时间间隔小于等于第一预设值,在前一视频片段对应的硬件解码器关闭后,开启硬件解码器对所述目标视频片段进行解码。
3.根据权利要求1所述的方法,其中,提前开启硬件解码器对目标视频片段进行解码,包括:
根据所述目标视频片段的预热时间,提前开启硬件解码器对目标视频片段进行解码。
4.根据权利要求3所述的方法,其中,根据所述目标视频片段的预热时间,提前开启硬件解码器对目标视频片段进行解码,包括:
判断当前时间是否到达目标视频片段的预热时间;
若已到达目标视频片段的预热时间,判断同一播放轨道上的前一视频片段对应的硬件解码器是否已关闭;
若已关闭,开启硬件解码器对目标视频片段进行解码。
5.根据权利要求1所述的方法,其中,所述帧数据中包括表示该帧在目标视频片段中时序位置的播放时间戳;
根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码,包括:
将所述目标视频片段的结束时间与已写入到所述二级缓存的帧数据的播放时间戳进行对比,若最新写入的帧数据的播放时间戳与所述目标视频片段的结束时间相同,则确定已经完成对目标视频片段的解码。
6.根据权利要求1所述的方法,其中,所述方法还包括:
在关闭硬件解码器时,同时释放所述硬件解码器对应的一级缓存。
7.根据权利要求1所述的方法,其中,所述方法还包括:
按顺序从所述二级缓存中获取对应的帧数据进行渲染并播放。
8.一种视频剪辑场景的解码器控制设备,其中,所述设备包括:
解码控制模块,用于提前开启硬件解码器对目标视频片段进行解码,以及在已经完成对目标视频片段的解码时,关闭所述硬件解码器;
缓存管理模块,用于将解码获得的帧数据写入到所述硬件解码器对应的一级缓存中,从所述一级缓存中读取帧数据,写入到二级缓存中,以及根据已写入到所述二级缓存中的帧数据,判断是否已经完成对目标视频片段的解码。
9.一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7中任一项所述的方法。
10.一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现如权利要求1至7中任一项所述的方法。
CN202311069103.9A 2023-08-23 2023-08-23 视频剪辑场景的解码器控制方法、设备及计算机可读介质 Pending CN117201793A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311069103.9A CN117201793A (zh) 2023-08-23 2023-08-23 视频剪辑场景的解码器控制方法、设备及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311069103.9A CN117201793A (zh) 2023-08-23 2023-08-23 视频剪辑场景的解码器控制方法、设备及计算机可读介质

Publications (1)

Publication Number Publication Date
CN117201793A true CN117201793A (zh) 2023-12-08

Family

ID=89002635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311069103.9A Pending CN117201793A (zh) 2023-08-23 2023-08-23 视频剪辑场景的解码器控制方法、设备及计算机可读介质

Country Status (1)

Country Link
CN (1) CN117201793A (zh)

Similar Documents

Publication Publication Date Title
JP5394375B2 (ja) デジタルメディア処理用インターフェース
EP1463056A1 (en) Data recording method; data deletion method; data display method; recording apparatus; recording medium; and program
CN110418186A (zh) 音视频播放方法、装置、计算机设备和存储介质
CN110366033A (zh) 一种视频播放方法、装置、设备及存储介质
KR20080019246A (ko) 대화형 멀티미디어 프레젠테이션 관리의 동기 특징
US20190373274A1 (en) Hybrid decoding
US11600299B2 (en) Video processing method and apparatus, terminal, and storage medium
WO2017129117A1 (zh) 一种gpu资源重建的方法、用户设备,系统及存储介质
WO2021052130A1 (zh) 视频处理方法、装置、设备及计算机可读存储介质
CN112860188A (zh) 一种数据迁移方法、系统、设备以及介质
US20220303493A1 (en) Time code display system and method, displaying device, storage medium and electronic apparatus
KR20080044872A (ko) 컴퓨터 상에서 정보 또는 데이터를 처리하기 위한 시스템및 방법
CN117201793A (zh) 视频剪辑场景的解码器控制方法、设备及计算机可读介质
US20150312369A1 (en) Checkpoints for media buffering
WO2023083064A1 (zh) 视频处理方法、装置、电子设备及可读存储介质
JP2004535089A (ja) 記憶媒体へのアクセスを管理する装置及び方法
JP2000078526A (ja) 画像再生装置
KR20150005576A (ko) 컨텐츠 다운로드를 위한 시스템 및 방법
KR20100029010A (ko) 멀티미디어 데이터를 처리하기 위한 다중 프로세서 시스템들 및 그것의 방법들
JP2002373480A (ja) データ記録方法及びデータ記録装置ならびに記録媒体
CN117528177A (zh) 剪辑视频的预览方法、装置、设备及计算机介质
CN112804577B (zh) 视频切换显示方法及装置、视频处理设备和存储介质
JP2005173775A (ja) データ処理装置およびその方法と符号化装置
CN114286179B (zh) 视频编辑方法、设备和计算机可读存储介质
CN116320442A (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