CN114339257A - 用于解码视频文件的方法及装置 - Google Patents
用于解码视频文件的方法及装置 Download PDFInfo
- Publication number
- CN114339257A CN114339257A CN202210091121.6A CN202210091121A CN114339257A CN 114339257 A CN114339257 A CN 114339257A CN 202210091121 A CN202210091121 A CN 202210091121A CN 114339257 A CN114339257 A CN 114339257A
- Authority
- CN
- China
- Prior art keywords
- hardware
- decoding
- decoder
- decoders
- video file
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000008569 process Effects 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 21
- 230000002159 abnormal effect Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 18
- 230000002547 anomalous effect Effects 0.000 claims description 12
- 230000001747 exhibiting effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 11
- 230000005856 abnormality Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开的实施例提供一种用于解码视频文件的方法和装置。在该方法中,在客户端上安装多个硬件解码器和一个软件解码器。使用多个硬件解码器中的一个或多个来解码视频文件。确定视频文件是否被成功解码。如果视频文件未被成功解码,则使用软件解码器来解码视频文件。
Description
技术领域
本公开的实施例涉及计算机技术领域,具体地,涉及用于解码视频文件的方法及装置。
背景技术
随着计算机技术的发展,市面上出现越来越多的电子显示设备用于播放视频文件。在播放视频文件时,通常需要先对视频文件进行解码,然后才能够播放。对视频文件进行解码的方式主要有软件解码和硬件解码两种方式。软件解码主要使用中央处理器(CPU)的资源。硬件解码主要使用图形处理器(GPU)的资源。借助于GPU,硬件解码的解码速度更快,能够比软件解码方式更流畅地播放高清视频。但是硬件解码器需要与GPU适配。市面上的电子显示设备所搭载的主板种类繁多。这些主板可能使用各种牌子和型号的GPU,例如Intel的GPU,AMD的GPU、Nvidia的GPU、甚至不知名的GPU。由于硬件解码器的硬件解码接口的不同,单个硬件解码器可能仅支持市面上某几个牌子的GPU,而不能够兼容所有牌子的GPU。因此需要针对不同GPU配备相应的硬件解码器。
发明内容
本文中描述的实施例提供了一种用于解码视频文件的方法、装置以及存储有计算机程序的计算机可读存储介质。
根据本公开的第一方面,提供了一种用于解码视频文件的方法。在该方法中,在客户端上安装多个硬件解码器和一个软件解码器。使用多个硬件解码器中的一个或多个来解码视频文件。确定视频文件是否被成功解码。如果视频文件未被成功解码,则使用软件解码器来解码视频文件。
在本公开的一些实施例中,在使用多个硬件解码器中的一个或多个来解码视频文件过程中,按照指示多个硬件解码器的排序的硬件解码器列表将多个硬件解码器中的每一个硬件解码器确定为目标硬件解码器。针对目标硬件解码器执行以下操作:使用目标硬件解码器解码视频文件。如果目标硬件解码器成功解码视频文件,则停止将硬件解码器列表中的后续硬件解码器确定为目标硬件解码器。如果目标硬件解码器在解码视频文件的过程中出现异常,则停止使用目标硬件解码器来解码视频文件,确定目标硬件解码器是否是硬件解码器列表中的最后一个硬件解码器。如果目标硬件解码器不是硬件解码器列表中的最后一个硬件解码器,将出现异常的解码位置发送给在硬件解码器列表中的后一个硬件解码器,以指示后一个硬件解码器将出现异常的解码位置作为开始解码的起始点。如果目标硬件解码器是硬件解码器列表中的最后一个,则将出现异常的解码位置发送给软件解码器,以指示软件解码器将出现异常的解码位置作为开始解码的起始点。
在本公开的一些实施例中,客户端包括N个GPU,N是大于或者等于2的正整数。在使用多个硬件解码器中的一个或多个来解码视频文件的过程中,按照指示多个硬件解码器的排序的硬件解码器列表将多个硬件解码器中的每N个硬件解码器确定为N个目标硬件解码器。针对N个目标硬件解码器执行以下操作:使用N个目标硬件解码器分别通过N个GPU来并行地解码视频文件。如果N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件,则停止将硬件解码器列表中的后续硬件解码器确定为N个目标硬件解码器。如果N个目标硬件解码器中的一个目标硬件解码器在解码视频文件的过程中出现异常,则停止使用该目标硬件解码器来解码视频文件。如果N个目标硬件解码器在解码视频文件的过程中均出现异常,则确定N个目标硬件解码器是否包括硬件解码器列表中的最后一个硬件解码器。如果N个目标硬件解码器不包括硬件解码器列表中的最后一个硬件解码器,则将N个目标硬件解码器中最后出现异常的解码位置发送给在硬件解码器列表中的后N个硬件解码器,以指示后N个硬件解码器将最后出现异常的解码位置作为开始解码的起始点。如果N个目标硬件解码器包括硬件解码器列表中的最后一个,则将最后出现异常的解码位置发送给软件解码器,以指示软件解码器将最后出现异常的解码位置作为开始解码的起始点。
在本公开的一些实施例中,该方法还包括:如果N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件,则停止N个目标硬件解码器中的其他目标硬件解码器解码视频文件的进程。
在本公开的一些实施例中,该方法还包括:如果N个目标硬件解码器中的至少两个目标硬件解码器成功解码视频文件,则确定至少两个目标硬件解码器中解码速度最快的目标硬件解码器,并且将由所确定的目标硬件解码器解码的视频文件用于播放。
在本公开的一些实施例中,该方法还包括:在多个客户端上安装多个硬件解码器和软件解码器;在多个客户端上使用多个硬件解码器来解码视频文件;确定多个硬件解码器的解码成功率,以及按照解码成功率来调整多个硬件解码器在硬件解码器列表中的排序。
在本公开的一些实施例中,异常包括以下中的一个或多个:目标硬件解码器的硬件解码接口接收到指示异常的返回值;目标硬件解码器的输出缓存中没有数据;在指定时间内在目标硬件解码器的输出缓存中的数据量不变;以及在目标硬件解码器的输出缓存中的数据值异常。
在本公开的一些实施例中,在使用软件解码器来解码视频文件的过程中,使用软件解码器从起始点开始解码视频文件。
根据本公开的第二方面,提供了一种用于解码视频文件的装置。该装置包括至少一个处理器;以及存储有计算机程序的至少一个存储器。当计算机程序由至少一个处理器执行时,使得装置在客户端上安装多个硬件解码器和一个软件解码器;使用多个硬件解码器中的一个或多个来解码视频文件;确定视频文件是否被成功解码;以及响应于视频文件未被成功解码,使用软件解码器来解码视频文件。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得装置通过以下操作来使用多个硬件解码器中的一个或多个来解码视频文件:按照指示多个硬件解码器的排序的硬件解码器列表将多个硬件解码器中的每一个硬件解码器确定为目标硬件解码器,针对目标硬件解码器执行以下操作:使用目标硬件解码器解码视频文件;响应于目标硬件解码器成功解码视频文件,停止将硬件解码器列表中的后续硬件解码器确定为目标硬件解码器;以及响应于目标硬件解码器在解码视频文件的过程中出现异常,停止使用目标硬件解码器来解码视频文件;确定目标硬件解码器是否是硬件解码器列表中的最后一个硬件解码器;响应于目标硬件解码器不是硬件解码器列表中的最后一个硬件解码器,将出现异常的解码位置发送给在硬件解码器列表中的后一个硬件解码器,以指示后一个硬件解码器将出现异常的解码位置作为开始解码的起始点;以及响应于目标硬件解码器是硬件解码器列表中的最后一个,将出现异常的解码位置发送给软件解码器,以指示软件解码器将出现异常的解码位置作为开始解码的起始点。
在本公开的一些实施例中,客户端包括N个GPU,N是大于或者等于2的正整数。计算机程序在由至少一个处理器执行时使得装置通过以下操作来使用多个硬件解码器中的一个或多个来解码视频文件:按照指示多个硬件解码器的排序的硬件解码器列表将多个硬件解码器中的每N个硬件解码器确定为N个目标硬件解码器,针对N个目标硬件解码器执行以下操作:使用N个目标硬件解码器分别通过N个GPU来并行地解码视频文件;响应于N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件,停止将硬件解码器列表中的后续硬件解码器确定为N个目标硬件解码器;响应于N个目标硬件解码器中的一个目标硬件解码器在解码视频文件的过程中出现异常,停止使用该目标硬件解码器来解码视频文件;响应于N个目标硬件解码器在解码视频文件的过程中均出现异常,确定N个目标硬件解码器是否包括硬件解码器列表中的最后一个硬件解码器;响应于N个目标硬件解码器不包括硬件解码器列表中的最后一个硬件解码器,将N个目标硬件解码器中最后出现异常的解码位置发送给在硬件解码器列表中的后N个硬件解码器,以指示后N个硬件解码器将最后出现异常的解码位置作为开始解码的起始点;以及响应于N个目标硬件解码器包括硬件解码器列表中的最后一个,将最后出现异常的解码位置发送给软件解码器,以指示软件解码器将最后出现异常的解码位置作为开始解码的起始点。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得装置还:响应于N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件,停止N个目标硬件解码器中的其他目标硬件解码器解码视频文件的进程。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得装置还:响应于N个目标硬件解码器中的至少两个目标硬件解码器成功解码视频文件,确定至少两个目标硬件解码器中解码速度最快的目标硬件解码器;以及将由所确定的目标硬件解码器解码的视频文件用于播放。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得装置还:在多个客户端上安装多个硬件解码器和软件解码器;在多个客户端上使用多个硬件解码器来解码视频文件;确定多个硬件解码器的解码成功率,以及按照解码成功率来调整多个硬件解码器在硬件解码器列表中的排序。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得装置通过以下操作来使用软件解码器来解码视频文件:使用软件解码器从起始点开始解码视频文件。
根据本公开的第三方面,提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时实现根据本公开的第一方面所述的方法的步骤。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的附图进行简要说明,应当知道,以下描述的附图仅仅涉及本公开的一些实施例,而非对本公开的限制,其中:
图1是根据本公开的实施例的用于解码视频文件的方法的示例性流程图;
图2是根据本公开的实施例的使用多个硬件解码器中的一个或多个来解码视频文件的过程的示例性流程图;
图3是根据本公开的实施例的使用多个硬件解码器中的一个或多个来解码视频文件的过程的另一示例性流程图;以及
图4是根据本公开的实施例的用于解码视频文件的装置的示意性框图。
附图中的元素是示意性的,没有按比例绘制。
具体实施方式
为了使本公开的实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开的实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域技术人员在无需创造性劳动的前提下所获得的所有其它实施例,也都属于本公开保护的范围。
除非另外定义,否则在此使用的所有术语(包括技术和科学术语)具有与本公开主题所属领域的技术人员所通常理解的相同含义。进一步将理解的是,诸如在通常使用的词典中定义的那些的术语应解释为具有与说明书上下文和相关技术中它们的含义一致的含义,并且将不以理想化或过于正式的形式来解释,除非在此另外明确定义。诸如“第一”和“第二”的术语仅用于将一个部件(或部件的一部分)与另一个部件(或部件的另一部分)区分开。
如上所述,电子显示设备所搭载的主板型号众多,而不同主板上的GPU解码方式(即,硬件解码方式)具有差异性。目前没有一个万能的硬件解码器能够兼容所有型号的GPU。各种主板对于播放器来说像是一个黑盒子,不知道播放器中的硬件解码器是否兼容主板上的GPU。因此用户可能需要在电子显示设备上安装多个播放器来尝试播放视频文件。这可能需要耗费大量的人力资源,且十分影响用户的使用体验。
图1示出了根据本公开的实施例的用于解码视频文件的方法的示例性流程图。下面参考图1来描述用于解码视频文件的方法100。
在该方法100中,在框S102处,在客户端上安装多个硬件解码器和一个软件解码器。在本公开的一些实施例中,客户端可以是具备硬件解码视频文件的能力的任意客户端。该客户端的GPU可以是例如,Intel的GPU,AMD的GPU、Nvidia的GPU、其它品牌的GPU,或者是未知品牌的GPU。该多个硬件解码器可以包括不同的硬件解码接口,以适配不同的GPU。在本公开的一些实施例中,该多个硬件解码器可根据经验值来选择。例如,可以收集市面上主流电子播放设备和非主流电子播放设备上使用的硬件解码器,并将它们安装在客户端上。在本公开的一些实施例中,可由CPU来控制该多个硬件解码器和该软件解码器的运行。在本公开的一些实施例中,该多个硬件解码器和该软件解码器可以被同一个视频播放器调用。
在框S104处,使用多个硬件解码器中的一个或多个来解码视频文件。在本公开的一些实施例中,视频文件可以经过预处理。由于视频编码技术的多样性,视频文件格式可能有很多种,例如MPEG-4、MPEG-2、H264、VP9、MKV、MP4、MOV、WEBM等。而不同电子显示设备支持的格式和尺寸可能不一样。例如,第一电子显示设备支持的最大分辨率为4K,视频格式为MPEG-4和H264,音频格式为MP3和AAC。第二电子显示设备支持的最大分辨率为1080P,视频格式为VP9和H264,音频格式为WAV和AAC。第三电子显示设备支持的最大分辨率为720P,视频格式为MPEG-2和H264,音频格式为OGG和AAC。因此,为了使得视频文件能够在未知的电子显示设备上播放,在一个示例中,可以预先将视频文件转码成主流的视频文件格式。该主流的视频文件格式可以是经验值,例如视频格式为H264,音频格式为AAC。
使用多个硬件解码器中的一个或多个来解码视频文件的过程将在下面参考图2和图3来具体描述。
在框S106处,确定视频文件是否被成功解码。在本公开的一些实施例中,一个或一个以上的硬件解码器成功解码视频文件,都可以确定视频文件被成功解码。
如果视频文件被成功解码(在框S106处为“是”),则在框S108处结束解码视频文件的过程。
如果视频文件未被成功解码(在框S106处为“否”),则在框S110处使用软件解码器来解码视频文件。通过框S104的操作,基本上可以适配大多数的主板了。这样能充分利用硬件资源来达到最佳播放效果。但因为硬件解码器无法穷举,还是可能出现所安装的硬件解码器无法播放视频文件的情况。例如,可能是视频编码问题或者视频文件尺寸匹配不佳导致播放失败。另外,主板硬件本身也存在不稳定性问题,比如在某种环境下,硬件解码芯片内会发生状态错乱,从而导致所有的硬件无法正常工作。此种情况下将设备断电再重启是一种可行的操作方式,但需要人工介入。对于这种特殊情况,软件解码就是很好的补充。软件解码具备通用性的特点。虽然不同设备的CPU的运算能力不一样,但不存在兼容性问题。而且软件解码可以进行线上的版本迭代,从而支持更多的格式,成本比较低。当硬件解码失败的情况下,使用软件解码来继续播放,比根本无法播放的体验是更好的。
如上所述,下面分别参考图2和图3来具体描述使用多个硬件解码器中的一个或多个来解码视频文件的过程的两个示例。图2示出根据本公开的实施例的使用多个硬件解码器中的一个或多个来解码视频文件的过程的示例性流程图。在本公开的一些实施例中,可设置指示(或定义)该多个硬件解码器的排序的硬件解码器列表。该硬件解码器列表的初始排序可根据经验值来确定。在一个示例中,可统计多个主流电子显示设备所使用的硬件解码器的类型或型号,按照这些硬件解码器的使用频率降序排列这些硬件解码器。将使用最频繁的硬件解码器排在最前面。
在框S202处,按照硬件解码器列表将多个硬件解码器中的每一个硬件解码器确定为目标硬件解码器。在一个示例中,先将硬件解码器列表中的首个硬件解码器作为目标硬件解码器。
在框S204处,使用目标硬件解码器解码视频文件。目标硬件解码器可先对视频文件进行解封装操作。然后经由硬件解码接口,将经解封装的视频帧发送给GPU,以进行硬件解码操作。
如果目标硬件解码器成功解码视频文件(在框S206处为“是”),则不再将硬件解码器列表中的后续硬件解码器确定为目标硬件解码器,即,不再使用后续硬件解码器来解码视频文件。过程可进行到框S208,结束使用多个硬件解码器中的一个或多个来解码视频文件的过程。
如果目标硬件解码器尚未成功解码视频文件(在框S206处为“否”),则可在框S210处确定目标硬件解码器在解码视频文件的过程中是否出现异常。在本公开的一些实施例中,如果目标硬件解码器的硬件解码接口接收到指示异常的返回值,则可确定解码出现异常。在本公开的一些实施例中,如果目标硬件解码器的输出缓存中没有数据,则可确定解码出现异常。在本公开的一些实施例中,如果在指定时间内在目标硬件解码器的输出缓存中的数据量不变,则可确定解码出现异常。在本公开的一些实施例中,如果在目标硬件解码器的输出缓存中的数据值异常(例如,全部数据值都为同一个值),则可确定解码出现异常。
如果目标硬件解码器在解码视频文件的过程中未出现异常(在框S210处为“否”),则过程可进行到框S204处,继续使用目标硬件解码器解码视频文件。
如果目标硬件解码器在解码视频文件的过程中出现异常(在框S210处为“是”),则在框S212处可停止使用目标硬件解码器来解码视频文件,以避免占用GPU资源。
在框S214处,确定目标硬件解码器是否位于硬件解码器列表的结尾,即,目标硬件解码器是否是硬件解码器列表中的最后一个硬件解码器。
如果目标硬件解码器不是硬件解码器列表中的最后一个硬件解码器(在框S214处为“否”),则在框S216处可将出现异常的解码位置发送给在硬件解码器列表中的后一个硬件解码器,以指示后一个硬件解码器将出现异常的解码位置作为开始解码的起始点。然后,过程进行到框S202,将后一个硬件解码器作为目标硬件解码器。
在一个示例中,在目标硬件解码器解码出一定数量的视频帧的时候,可开始播放所解码的视频帧。在开始播放视频帧之后,如果目标硬件解码器在解码到X(X大于0且小于视频文件的总时长)秒的时候出现异常,那么后一个硬件解码器可从X秒的位置开始继续解码。这样视频文件的播放不会出现间断、倒退或跳帧。
如果目标硬件解码器是硬件解码器列表中的最后一个(在框S214处为“是”),则可将出现异常的解码位置发送给软件解码器,以指示软件解码器将出现异常的解码位置作为开始解码的起始点。
图3示出根据本公开的实施例的使用多个硬件解码器中的一个或多个来解码视频文件的过程的另一示例性流程图。在该实施例中,客户端可包括N个GPU,N是大于或者等于2的正整数。这N个GPU可以是相同型号的GPU,也可以是不同型号的GPU。如上所述,可设置指示该多个硬件解码器的排序的硬件解码器列表。
在框S302中,按照硬件解码器列表将多个硬件解码器中的每N个硬件解码器确定为N个目标硬件解码器。在一个示例中,先将硬件解码器列表中的首N个硬件解码器作为目标硬件解码器。在N等于2的示例中,可将硬件解码器列表中的前2个硬件解码器作为目标硬件解码器。
在框S304处,使用N个目标硬件解码器分别通过N个GPU来并行地解码视频文件。在一个示例中,N个目标硬件解码器可各自获得完整的视频文件,并独立地对视频文件进行解封装操作。然后分别经由这N个目标硬件解码器的硬件解码接口,将经解封装的视频帧发送给相应的GPU,以进行硬件解码操作。
如果N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件(在框S306处为“是”),则可不再将硬件解码器列表中的后续硬件解码器确定为目标硬件解码器,即,不再使用后续的硬件解码器来解码视频文件。在这种情况下,尽管未在图3中示出,在一个示例中,可停止N个目标硬件解码器中的其他目标硬件解码器解码视频文件的进程。过程可进行到框S308,结束使用多个硬件解码器中的一个或多个来解码视频文件的过程。在另一个示例中,可不停止N个目标硬件解码器中的其他目标硬件解码器解码视频文件的进程。如果有两个或两个以上的目标硬件解码器成功解码视频文件,则确定这些目标硬件解码器中解码速度最快的目标硬件解码器,并且将由所确定的目标硬件解码器解码的视频文件用于播放。这样可以最快地播放视频文件。在N个目标硬件解码器都获得解码结果(成功解码或出现异常)的情况下,过程可进行到框S308,结束使用多个硬件解码器中的一个或多个来解码视频文件的过程。
如果N个目标硬件解码器中尚未有目标硬件解码器成功解码视频文件(在框S306处为“否”),则可在框S310处确定N个目标硬件解码器中是否有目标硬件解码器在解码视频文件的过程中出现异常。如果N个目标硬件解码器中没有目标硬件解码器在解码视频文件的过程中出现异常(在框S310处为“否”),则过程进行到框S304,继续使用N个目标硬件解码器分别通过N个GPU来并行地解码视频文件。
如果N个目标硬件解码器中的一个目标硬件解码器在解码视频文件的过程中出现异常(在框S310处为“是”),则在框S312处可停止使用该目标硬件解码器来解码视频文件。
在框S314处,确定N个目标硬件解码器在解码视频文件的过程中是否均出现异常。如果N个目标硬件解码器在解码视频文件的过程中均出现异常(在框S314处为“是”),则在框S316处可确定N个目标硬件解码器是否到达硬件解码器列表的结尾,即,确定N个目标硬件解码器是否包括硬件解码器列表中的最后一个硬件解码器。
如果N个目标硬件解码器不包括硬件解码器列表中的最后一个硬件解码器(在框S316处为“否”),则在框S318处可将N个目标硬件解码器中最后出现异常的解码位置发送给在硬件解码器列表中的后N个硬件解码器,以指示后N个硬件解码器将最后出现异常的解码位置作为开始解码的起始点。在一个示例中,N个目标硬件解码器中的第一目标硬件解码器可在解码到X1秒的时候出现异常。N个目标硬件解码器中的第二目标硬件解码器可在解码到X2秒的时候出现异常。N个目标硬件解码器中的第N目标硬件解码器可在解码到XN秒的时候出现异常。X1至XN都大于0且小于视频文件的总时长。可计算X1至XN中的最大值Xmax。Xmax就是最后出现异常的解码位置。
在框S318之后,过程进行到框S302,将后N个硬件解码器作为目标硬件解码器。
如果N个目标硬件解码器包括硬件解码器列表中的最后一个(在框S316处为“是”),则在框S320处将最后出现异常的解码位置发送给软件解码器,以指示软件解码器将最后出现异常的解码位置作为开始解码的起始点。
通过上述过程,可自动无缝衔接地解码并播放视频文件,避免人员介入,从而提高了用户的体验。
进一步地,在本公开的一些实施例中,可在多个客户端上安装多个硬件解码器和软件解码器。该多个客户端可以是实际使用的客户端,或者是测试机。在该多个客户端上使用上述多个硬件解码器来解码视频文件。在硬件解码器在一个客户端上成功解码视频文件之后,相应地计算或更新该硬件解码器的解码成功率。解码成功率例如等于成功次数/(成功次数+失败次数)。在确定多个硬件解码器的解码成功率之后,按照解码成功率来调整多个硬件解码器在硬件解码器列表中的排序。在一个示例中,按照这些硬件解码器的解码成功率来排列这些硬件解码器。可将解码成功率最高的硬件解码器排在硬件解码器列表中的首位。
这样可以根据实际使用情况或者随着技术的发展来及时更新硬件解码器列表中的硬件解码器的优先级,以便在客户端上更快地解码视频文件,提高用户使用体验。
更进一步地,随着技术的发展还可以将新开发的硬件解码器加入到硬件解码器列表中,以适配更多的电子显示设备。
图4示出根据本发明的实施例的用于解码视频文件的装置400的示意性框图。如图4所示,该装置400可包括处理器410和存储有计算机程序的存储器420。当计算机程序由处理器410执行时,使得装置400可执行如图1所示的方法100的步骤。在一个示例中,装置400可以是计算机设备或云计算节点。装置400可在客户端上安装多个硬件解码器和一个软件解码器。装置400可使用多个硬件解码器中的一个或多个来解码视频文件。装置400可确定视频文件是否被成功解码。如果视频文件未被成功解码,则装置400可使用软件解码器来解码视频文件。
在本公开的一些实施例中,装置400可按照指示多个硬件解码器的排序的硬件解码器列表将多个硬件解码器中的每一个硬件解码器确定为目标硬件解码器。针对目标硬件解码器执行以下操作:装置400可使用目标硬件解码器解码视频文件。如果目标硬件解码器成功解码视频文件,则装置400可停止将硬件解码器列表中的后续硬件解码器确定为目标硬件解码器。如果目标硬件解码器在解码视频文件的过程中出现异常,则装置400可停止使用目标硬件解码器来解码视频文件,并确定目标硬件解码器是否是硬件解码器列表中的最后一个硬件解码器。如果目标硬件解码器不是硬件解码器列表中的最后一个硬件解码器,装置400可将出现异常的解码位置发送给在硬件解码器列表中的后一个硬件解码器,以指示后一个硬件解码器将出现异常的解码位置作为开始解码的起始点。如果目标硬件解码器是硬件解码器列表中的最后一个,则装置400可将出现异常的解码位置发送给软件解码器,以指示软件解码器将出现异常的解码位置作为开始解码的起始点。
在本公开的一些实施例中,装置400可按照指示多个硬件解码器的排序的硬件解码器列表将多个硬件解码器中的每N个硬件解码器确定为N个目标硬件解码器。针对N个目标硬件解码器执行以下操作:装置400使用N个目标硬件解码器分别通过N个GPU来并行地解码视频文件。如果N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件,则装置400停止将硬件解码器列表中的后续硬件解码器确定为N个目标硬件解码器。如果N个目标硬件解码器中的一个目标硬件解码器在解码视频文件的过程中出现异常,则装置400停止使用该目标硬件解码器来解码视频文件。如果N个目标硬件解码器在解码视频文件的过程中均出现异常,则装置400确定N个目标硬件解码器是否包括硬件解码器列表中的最后一个硬件解码器。如果N个目标硬件解码器不包括硬件解码器列表中的最后一个硬件解码器,则装置400将N个目标硬件解码器中最后出现异常的解码位置发送给在硬件解码器列表中的后N个硬件解码器,以指示后N个硬件解码器将最后出现异常的解码位置作为开始解码的起始点。如果N个目标硬件解码器包括硬件解码器列表中的最后一个,则装置400将最后出现异常的解码位置发送给软件解码器,以指示软件解码器将最后出现异常的解码位置作为开始解码的起始点。
在本公开的一些实施例中,如果N个目标硬件解码器中的一个目标硬件解码器成功解码视频文件,则装置400可停止N个目标硬件解码器中的其他目标硬件解码器解码视频文件的进程。
在本公开的一些实施例中,如果N个目标硬件解码器中的至少两个目标硬件解码器成功解码视频文件,则装置400可确定至少两个目标硬件解码器中解码速度最快的目标硬件解码器,并且将由所确定的目标硬件解码器解码的视频文件用于播放。
在本公开的一些实施例中,装置400可在多个客户端上安装多个硬件解码器和软件解码器。装置400可在多个客户端上使用多个硬件解码器来解码视频文件。装置400可确定多个硬件解码器的解码成功率。装置400可按照解码成功率来调整多个硬件解码器在硬件解码器列表中的排序。
在本公开的一些实施例中,装置400可使用软件解码器从起始点开始解码视频文件。
在本公开的实施例中,处理器410可以是例如中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、基于多核的处理器架构的处理器等。存储器420可以是使用数据存储技术实现的任何类型的存储器,包括但不限于随机存取存储器、只读存储器、基于半导体的存储器、闪存、磁盘存储器等。
此外,在本公开的实施例中,装置400也可包括输入设备430,例如麦克风、键盘、鼠标等,用于输入视频文件。另外,装置400还可包括输出设备440,例如显示器等,用于输出或显示解码后的视频文件。
在本公开的其它实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时能够实现如图1至图3所示的方法的步骤。
综上所述,通过在客户端安装多个硬件解码器和一个软件解码器,并且依次或并行地使用它们来解码视频文件,可自动无缝衔接地解码并播放视频文件,避免人员介入,从而提高了用户的体验。进一步地,通过设置更新硬件解码器列表的机制,可适应技术的发展,与时俱进地提高解码视频文件的效率。
附图中的流程图和框图显示了根据本公开的多个实施例的装置和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除非上下文中另外明确地指出,否则在本文和所附权利要求中所使用的词语的单数形式包括复数,反之亦然。因而,当提及单数时,通常包括相应术语的复数。相似地,措辞“包含”和“包括”将解释为包含在内而不是独占性地。同样地,术语“包括”和“或”应当解释为包括在内的,除非本文中明确禁止这样的解释。在本文中使用术语“示例”之处,特别是当其位于一组术语之后时,所述“示例”仅仅是示例性的和阐述性的,且不应当被认为是独占性的或广泛性的。
适应性的进一步的方面和范围从本文中提供的描述变得明显。应当理解,本申请的各个方面可以单独或者与一个或多个其它方面组合实施。还应当理解,本文中的描述和特定实施例旨在仅说明的目的并不旨在限制本申请的范围。
以上对本公开的若干实施例进行了详细描述,但显然,本领域技术人员可以在不脱离本公开的精神和范围的情况下对本公开的实施例进行各种修改和变型。本公开的保护范围由所附的权利要求限定。
Claims (10)
1.一种用于解码视频文件的方法,包括:
在客户端上安装多个硬件解码器和一个软件解码器;
使用所述多个硬件解码器中的一个或多个来解码所述视频文件;
确定所述视频文件是否被成功解码;以及
响应于所述视频文件未被成功解码,使用所述软件解码器来解码所述视频文件。
2.根据权利要求1所述的方法,其中,使用所述多个硬件解码器中的一个或多个来解码所述视频文件包括:
按照指示所述多个硬件解码器的排序的硬件解码器列表将所述多个硬件解码器中的每一个硬件解码器确定为目标硬件解码器,针对所述目标硬件解码器执行以下操作:
使用所述目标硬件解码器解码所述视频文件;
响应于所述目标硬件解码器成功解码所述视频文件,停止将所述硬件解码器列表中的后续硬件解码器确定为所述目标硬件解码器;以及
响应于所述目标硬件解码器在解码所述视频文件的过程中出现异常,
停止使用所述目标硬件解码器来解码所述视频文件;
确定所述目标硬件解码器是否是所述硬件解码器列表中的最后一个硬件解码器;
响应于所述目标硬件解码器不是所述硬件解码器列表中的最后一个硬件解码器,将出现异常的解码位置发送给在所述硬件解码器列表中的后一个硬件解码器,以指示所述后一个硬件解码器将所述出现异常的解码位置作为开始解码的起始点;以及
响应于所述目标硬件解码器是所述硬件解码器列表中的最后一个,将所述出现异常的解码位置发送给在所述软件解码器,以指示所述软件解码器将所述出现异常的解码位置作为开始解码的起始点。
3.根据权利要求1所述的方法,其中,所述客户端包括N个GPU,N是大于或者等于2的正整数,使用所述多个硬件解码器中的一个或多个来解码所述视频文件包括:
按照指示所述多个硬件解码器的排序的硬件解码器列表将所述多个硬件解码器中的每N个硬件解码器确定为N个目标硬件解码器,针对所述N个目标硬件解码器执行以下操作:
使用所述N个目标硬件解码器分别通过所述N个GPU来并行地解码所述视频文件;
响应于所述N个目标硬件解码器中的一个目标硬件解码器成功解码所述视频文件,停止将所述硬件解码器列表中的后续硬件解码器确定为所述N个目标硬件解码器;
响应于所述N个目标硬件解码器中的一个目标硬件解码器在解码所述视频文件的过程中出现异常,停止使用该目标硬件解码器来解码所述视频文件;
响应于所述N个目标硬件解码器在解码所述视频文件的过程中均出现异常,
确定所述N个目标硬件解码器是否包括所述硬件解码器列表中的最后一个硬件解码器;
响应于所述N个目标硬件解码器不包括所述硬件解码器列表中的最后一个硬件解码器,将所述N个目标硬件解码器中最后出现异常的解码位置发送给在所述硬件解码器列表中的后N个硬件解码器,以指示所述后N个硬件解码器将所述最后出现异常的解码位置作为开始解码的起始点;以及
响应于所述N个目标硬件解码器包括所述硬件解码器列表中的最后一个,将所述最后出现异常的解码位置发送给在所述软件解码器,以指示所述软件解码器将所述最后出现异常的解码位置作为开始解码的起始点。
4.根据权利要求3所述的方法,还包括:
响应于所述N个目标硬件解码器中的一个目标硬件解码器成功解码所述视频文件,停止所述N个目标硬件解码器中的其他目标硬件解码器解码所述视频文件的进程。
5.根据权利要求3所述的方法,还包括:
响应于所述N个目标硬件解码器中的至少两个目标硬件解码器成功解码所述视频文件,
确定所述至少两个目标硬件解码器中解码速度最快的目标硬件解码器;以及
将由所确定的目标硬件解码器解码的视频文件用于播放。
6.根据权利要求2至5中任一项所述的方法,还包括:
在多个客户端上安装所述多个硬件解码器和所述软件解码器;
在所述多个客户端上使用所述多个硬件解码器来解码所述视频文件;
确定所述多个硬件解码器的解码成功率,以及
按照所述解码成功率来调整所述多个硬件解码器在所述硬件解码器列表中的排序。
7.根据权利要求2至5中任一项所述的方法,其中,所述异常包括以下中的一个或多个:
所述目标硬件解码器的硬件解码接口接收到指示异常的返回值;
所述目标硬件解码器的输出缓存中没有数据;
在指定时间内在所述目标硬件解码器的所述输出缓存中的数据量不变;以及
在所述目标硬件解码器的所述输出缓存中的数据值异常。
8.根据权利要求2至5中任一项所述的方法,其中,使用所述软件解码器来解码所述视频文件包括:
使用所述软件解码器从所述起始点开始解码所述视频文件。
9.一种用于解码视频文件的装置,包括:
至少一个处理器;以及
存储有计算机程序的至少一个存储器;
其中,当所述计算机程序由所述至少一个处理器执行时,使得所述装置执行根据权利要求1至8中任一项所述的方法的步骤。
10.一种存储有计算机程序的计算机可读存储介质,其中,所述计算机程序在由处理器执行时实现根据权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210091121.6A CN114339257B (zh) | 2022-01-26 | 2022-01-26 | 用于解码视频文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210091121.6A CN114339257B (zh) | 2022-01-26 | 2022-01-26 | 用于解码视频文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114339257A true CN114339257A (zh) | 2022-04-12 |
CN114339257B CN114339257B (zh) | 2023-11-28 |
Family
ID=81029511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210091121.6A Active CN114339257B (zh) | 2022-01-26 | 2022-01-26 | 用于解码视频文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114339257B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115209223A (zh) * | 2022-05-12 | 2022-10-18 | 广州方硅信息技术有限公司 | 视频编/解码的控制处理方法、装置、终端以及存储介质 |
CN115334352A (zh) * | 2022-08-11 | 2022-11-11 | 北京蔚领时代科技有限公司 | 一种自动匹配视频解码方法、装置、解码器及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101322321A (zh) * | 2005-12-09 | 2008-12-10 | 辉达公司 | 硬件多标准视频解码器装置 |
CN105430408A (zh) * | 2015-12-04 | 2016-03-23 | 武汉斗鱼网络科技有限公司 | 一种基于Intel、AMD和Nvidia三平台的H264硬件解码系统 |
CN106658174A (zh) * | 2016-10-31 | 2017-05-10 | 努比亚技术有限公司 | 一种视频解码终端及方法 |
CN106792066A (zh) * | 2016-12-20 | 2017-05-31 | 暴风集团股份有限公司 | 优化的视频解码播放的方法及系统 |
CN107172432A (zh) * | 2017-03-23 | 2017-09-15 | 杰发科技(合肥)有限公司 | 一种视频处理方法、装置及终端 |
CN108134956A (zh) * | 2016-12-01 | 2018-06-08 | 腾讯科技(深圳)有限公司 | 一种硬解适配白名单的更新方法、终端以及系统 |
CN109600619A (zh) * | 2018-12-11 | 2019-04-09 | 晶晨半导体(上海)股份有限公司 | 一种解码硬件的分时复用方法 |
-
2022
- 2022-01-26 CN CN202210091121.6A patent/CN114339257B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101322321A (zh) * | 2005-12-09 | 2008-12-10 | 辉达公司 | 硬件多标准视频解码器装置 |
CN105430408A (zh) * | 2015-12-04 | 2016-03-23 | 武汉斗鱼网络科技有限公司 | 一种基于Intel、AMD和Nvidia三平台的H264硬件解码系统 |
CN106658174A (zh) * | 2016-10-31 | 2017-05-10 | 努比亚技术有限公司 | 一种视频解码终端及方法 |
CN108134956A (zh) * | 2016-12-01 | 2018-06-08 | 腾讯科技(深圳)有限公司 | 一种硬解适配白名单的更新方法、终端以及系统 |
CN106792066A (zh) * | 2016-12-20 | 2017-05-31 | 暴风集团股份有限公司 | 优化的视频解码播放的方法及系统 |
CN107172432A (zh) * | 2017-03-23 | 2017-09-15 | 杰发科技(合肥)有限公司 | 一种视频处理方法、装置及终端 |
CN109600619A (zh) * | 2018-12-11 | 2019-04-09 | 晶晨半导体(上海)股份有限公司 | 一种解码硬件的分时复用方法 |
US20200186845A1 (en) * | 2018-12-11 | 2020-06-11 | Amlogic (Shanghai) Co., Ltd. | Time Division Multiplexing Method for Decoding Hardware |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115209223A (zh) * | 2022-05-12 | 2022-10-18 | 广州方硅信息技术有限公司 | 视频编/解码的控制处理方法、装置、终端以及存储介质 |
CN115209223B (zh) * | 2022-05-12 | 2024-09-20 | 广州方硅信息技术有限公司 | 视频编/解码的控制处理方法、装置、终端以及存储介质 |
CN115334352A (zh) * | 2022-08-11 | 2022-11-11 | 北京蔚领时代科技有限公司 | 一种自动匹配视频解码方法、装置、解码器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114339257B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114339257B (zh) | 用于解码视频文件的方法及装置 | |
CN108495164B (zh) | 音视频同步处理方法及装置、计算机装置及存储介质 | |
US10114865B2 (en) | Tile cache | |
US10531149B2 (en) | Method and system for managing buffers | |
US20070006080A1 (en) | Synchronization aspects of interactive multimedia presentation management | |
CN110933482B (zh) | 视频加载方法、装置、计算机可读存储介质和计算机设备 | |
US20070006064A1 (en) | Aspects of media content rendering | |
US9298556B2 (en) | Graphics processing watchdog active reset | |
US20170104800A1 (en) | Performance optimization for streaming video | |
US9674255B1 (en) | Systems, devices and methods for presenting content | |
CN110858827B (zh) | 启播加速方法、装置及计算机可读取存储介质 | |
US10838691B2 (en) | Method and apparatus of audio/video switching | |
KR20080112146A (ko) | 균일한 비디오 디코딩 및 디스플레이 | |
US20170279868A1 (en) | Upstream Fault Detection | |
US20180095665A1 (en) | Data storage system with multimedia assets | |
KR101389807B1 (ko) | 미러링과 파일 스트리밍 자동 전환 기능을 갖는 미러링 장치 | |
KR101947726B1 (ko) | 영상 처리 장치 및 이의 영상 처리 방법 | |
CN113873316A (zh) | 直播间视频播放方法及装置 | |
CN110855645B (zh) | 流媒体数据播放方法、装置 | |
US11272227B1 (en) | Buffer recovery in segmented media delivery applications | |
CN103037209A (zh) | 视频帧的解码处理方法和装置 | |
US9699463B2 (en) | Constant quality video encoding | |
CN112118473B (zh) | 视频弹幕显示方法、装置、计算机设备及可读存储介质 | |
US20220086528A1 (en) | Video playing control method, device and storage medium based on a video source selection | |
JP2013157734A (ja) | 電子機器及びインデックス生成方法 |
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 |