CN114979775A - 视频解码方法、装置、电子设备及存储介质 - Google Patents

视频解码方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114979775A
CN114979775A CN202210550946.XA CN202210550946A CN114979775A CN 114979775 A CN114979775 A CN 114979775A CN 202210550946 A CN202210550946 A CN 202210550946A CN 114979775 A CN114979775 A CN 114979775A
Authority
CN
China
Prior art keywords
client
video decoding
video
decoding component
loading
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
CN202210550946.XA
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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202210550946.XA priority Critical patent/CN114979775A/zh
Publication of CN114979775A publication Critical patent/CN114979775A/zh
Pending legal-status Critical Current

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本公开关于一种视频解码方法、装置、电子设备及存储介质,所述视频解码方法包括:检测客户端的操作性能,其中,所述操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作;基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件;基于加载的视频解码组件,在所述客户端对输入的视频进行解码。根据本公开的视频解码方法、装置、电子设备及存储介质可以根据客户端对多线程操作和单指令多数据流操作的能力,针对性地加载适合客户端的视频解码器,以解决客户端自身的解码能力不足的问题。

Description

视频解码方法、装置、电子设备及存储介质
技术领域
本公开涉及视频技术领域,尤其涉及一种视频解码方法、装置、电子设备及存储介质。
背景技术
在使用诸如浏览器的客户端上浏览网页信息时,通常需要播放一些网页视频,但是随着视频技术的发展,视频的编码格式在不断革新,在此情况下,由于用于浏览网页的客户端本身的视频解码能力是一定的,因此,当客户端的视频解码能力不足时,可能不支持一些编码格式的视频的播放,从而为信息传递带来障碍。
发明内容
本公开提供一种视频解码方法、装置、电子设备及存储介质,以至少解决相关技术中在页客户端的视频解码能力不足时不支持一些编码格式的视频播放的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种视频解码方法,应用于客户端,所述视频解码方法包括:检测所述客户端的操作性能,其中,所述操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作;基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件;基于加载的视频解码组件,在所述客户端对输入的视频进行解码。
可选地,所述视频解码方法还包括:检测所述客户端的解码能力,其中,所述解码能力包括是否支持对预定编码格式进行解码;在检测到所述客户端的解码能力不支持对所述预定编码格式进行解码的情况下,执行所述检测客户端的操作性能的步骤。
可选地,所述基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件的步骤包括:基于检测到的所述客户端的操作性能,向服务端发送解码组件加载请求,其中,所述解码组件加载请求中携带有检测到的操作性能的信息;基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件。
可选地,所述基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件的步骤包括:基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,将所述执行文件转换为与所述客户端的操作标准对应的文件格式;通过执行转换后的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件。
可选地,所述基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件的步骤包括:基于检测到所述客户端支持所述多线程操作的情况,在所述客户端加载第一类型的视频解码组件;或者基于检测到所述客户端不支持所述多线程操作的情况,在所述客户端加载第二类型的视频解码组件;其中,所述第一类型的视频解码组件的解码能力高于所述第二类型的视频解码组件的解码能力。
可选地,所述第一类型的视频解码组件包括第一视频解码组件和第二视频解码组件,所述第二类型的视频解码组件包括第三视频解码组件和第四视频解码组件,其中,所述基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件的步骤还包括:基于检测到所述客户端支持所述单指令多数据流操作的情况,在所述客户端加载所述第一视频解码组件或所述第三视频解码组件;或者基于检测到所述客户端不支持所述单指令多数据流操作的情况,在所述客户端加载所述第二视频解码组件或所述第四视频解码组件,其中,所述第一视频解码组件的解码能力高于所述第二视频解码组件的解码能力,所述第三视频解码组件的解码能力高于所述第四视频解码组件的解码能力。
可选地,所述视频解码方法还包括:响应于所述客户端的更新,检测所述操作性能是否被更新;在检测到所述操作性能被更新时,卸载所述客户端当前加载的解码器组件并在所述客户端加载与更新后的操作性能对应的视频解码组件。
根据本公开实施例的第二方面,提供一种视频解码装置,应用于客户端,所述视频解码装置包括:检测单元,被配置为所述检测客户端的操作性能,其中,所述操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作;加载单元,被配置为基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件;解码单元,被配置为基于加载的视频解码组件,在所述客户端对输入的视频进行解码。
可选地,所述检测单元还被配置为:检测所述客户端的解码能力,其中,所述解码能力包括是否支持对预定编码格式进行解码;在检测到所述客户端的解码能力不支持对所述预定编码格式进行解码的情况下,执行所述检测客户端的操作性能的操作。
可选地,所述加载单元还被配置为:基于检测到的所述客户端的操作性能,向服务端发送解码组件加载请求,其中,所述解码组件加载请求中携带有检测到的操作性能的信息;基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件。
可选地,所述加载单元还被配置为:基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,将所述执行文件转换为与所述客户端的操作标准对应的文件格式;通过执行转换后的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件。
可选地,所述加载单元还被配置为:基于检测到所述客户端支持所述多线程操作的情况,在所述客户端加载第一类型的视频解码组件;或者基于检测到所述客户端不支持所述多线程操作的情况,在所述客户端加载第二类型的视频解码组件;其中,所述第一类型的视频解码组件的解码能力高于所述第二类型的视频解码组件的解码能力。
可选地,所述第一类型的视频解码组件包括第一视频解码组件和第二视频解码组件,所述第二类型的视频解码组件包括第三视频解码组件和第四视频解码组件,其中,所述加载单元还被配置为:基于检测到所述客户端支持所述单指令多数据流操作的情况,在所述客户端加载所述第一视频解码组件或所述第三视频解码组件;或者基于检测到所述客户端不支持所述单指令多数据流操作的情况,在所述客户端加载所述第二视频解码组件或所述第四视频解码组件,其中,所述第一视频解码组件的解码能力高于所述第二视频解码组件的解码能力,所述第三视频解码组件的解码能力高于所述第四视频解码组件的解码能力。
可选地,所述检测单元还被配置为:响应于所述客户端的更新,检测所述操作性能是否被更新;在检测到所述操作性能被更新时,卸载所述客户端当前加载的解码器组件并在所述客户端加载与更新后的操作性能对应的视频解码组件。
根据本公开实施例的第三方面,提供一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器,其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据本公开所述的视频解码方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由处理器执行时,使得所述处理器能够执行根据本公开所述的视频解码方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现根据本公开所述的视频解码方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
可以根据客户端对多线程操作和/或单指令多数据流操作的能力,针对性地加载适合客户端的视频解码器,以解决客户端自身的解码能力不足的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是现有的视频解码方法的一示例的流程图。
图2是根据一示例性实施例示出的一种视频解码方法的流程图。
图3是根据一示例性实施例示出的一种视频解码方法的加载视频解码组件的步骤的流程图。
图4是根据一示例性实施例示出的一种视频解码方法的一示例的流程图。
图5是根据一示例性实施例示出的一种视频解码装置的框图。
图6是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
还需要说明的是,根据本公开示例性实施例提供的视频解码方法的实施场景包括用户终端,用户终端可以安装有用于网页浏览的客户端(例如,浏览器或者Web端)。本文中所提到的服务端可以接收用户终端发送的请求,并响应于该请求执行相应的操作。这里,服务端可以是指任何可以执行下面描述的服务端操作的执行主体,例如服务器。服务端可以包括一个独立运行的服务器,也可以是分布式服务器,或者由多个服务器组成的服务器集群,还可以是云计算平台或虚拟化中心。用户终端可以是与服务端相对应的概念,其可以为用户提供本地服务,这里的用户终端例如可以为终端设备,具体可包括智能手机、平板电脑、笔记本电脑、数字助理、可穿戴设备、车载终端等的实体设备,也可以包括诸如网页浏览器、虚拟机、应用程序客户端等的运行于实体设备的软体,其通过从服务端接收相应的服务信息等来为用户提供服务。
如前面所述,在客户端播放视频的应用场景中,受限于客户端自身的视频解码能力,可能使得其无法播放一些编码格式、特别是高清编码格式的视频。
一般来说,以网页客户端为例,大多数涉及视频的应用场景均需要采用H.264视频编码格式,而无法使用更先进的H.265视频编码格式或其他网页客户端不支持的视频编码格式,导致这些编码格式的视频无法在网页中正常播放。
对于这种情况,现有的一种视频播放方法是在网页客户端上加载低性能的单线程视频解码器用于对所有诸如H.265视频编码格式的视频进行解码,如图1所示,可以对输入的具有H.265视频编码格式的视频源的视频数据进行解析,并通过单线程视频解码器对其进行解码,以输出视频画面(即,颜色空间(YUV)数据)。
上面所述的H.264指的是由国际电信联盟电信标准分局(InternatialTelecommunication Union-Telecommunication Standardization Sector,ITU-T)视频编码专家组(Video Coding Experts Group,VCEG)和国际标准化组织(InternationalOrganization for Standardization,ISO)/国际电工委员会(InternationalElectrotechnical Commission,IEC)动态图像专家组(Moving Picture Experts Group,MPEG)联合组成的联合视频组(Joint Video Team,JVT)提出的高度压缩数字视频编解码器标准,该标准通常被称为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4AVC或MPEG-4/H.264AVC)。
上面所述的H.265指的是ITU-T VCEG继H.264标准之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新的H.265标准使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置,其包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。
相比之下,H.264由于算法优化,可以低于1Mbps的速度实现标清(分辨率在1280P*720以下)数字图像传送;H.265则可以实现利用1Mbps~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。
然而,在上述方法中,低性能的单线程视频解码器的性能低效、解码效率较低,主流配置的诸如个人计算机的电子设备仅能支持720P、30帧、1.3Mbps码率的视频流畅播放,更高清晰度的视频无法达到视频播放需要的解码速度,例如在播放1080P、30帧、3Mbps码率的视频时可能会出现卡顿情况。
鉴于上述问题,本公开示例性实施例提供一种视频解码方法、视频解码装置、电子设备、计算机可读存储介质及计算机程序产品,以能够至少部分地解决上述问题。下面将结合附图1至图6进行详细描述。
根据本公开示例性实施例的第一方面提供一种视频解码方法,其可应用于客户端。需要说明的是,尽管在下面的实施例中以网页客户端(即,浏览器)为例进行了说明,但是根据本公开示例性实施例的视频解码方法的应用对象不限于此,也可以应用于任何具有网页浏览功能的客户端,例如加载到一些应用中的有网页浏览插件等。
图2是根据一示例性实施例示出的一种视频解码方法的流程图,如图2所示,该视频解码方法可以包括以下步骤:
在步骤S10,可以检测客户端的操作性能。
这里,客户端的操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作。
具体来说,多线程操作指的是能够开启多个线程并行工作,以同时进行多项任务。单指令多数据流(Single Instruction Multiple Data,SIMD)操作指的是能够复制多个操作数并且将这些操作数打包在大型寄存器的一组指令集。
在视频解码过程中,当借助于多线程操作和/或单指令多数据流操作时,可以改善解码性能,提高解码效率,然而,由于用于网页浏览的客户端的版本诸多,不同版本、不同供应商提供的客户端的自身操作性能各不相同,在一些版本较低的客户端(例如,浏览器)中,可能不支持多线程操作和单指令多数据流操作,而一些版本改进中的客户端中,可能能够支持多线程操作和单指令多数据流操作中的一者,在一些主流客户端中,则既支持多线程操作又支持单指令多数据流操作。这里,通过检测客户端自身的操作性能,可以确定客户端所能为视频解码提供的性能支撑,从而可以最优化在客户端时的视频解码。
例如,可以通过检测客户端的网页汇编组件(WebAssembly)的版本来检测客户端的操作性能。具体来说,网页汇编组件是一种在客户端中运行的可移植、体积小、加载快并且兼容网页的全新字节码格式,其由万维网联盟(World Wide Web Consortium,W3C)组织制定的客户端规范,其在大部分主流浏览器中被使用。在现有的较高版本的网页汇编组件(WebAssembly)中,可以支持多线程操作以及单指令多数据流操作,在这种情况下,可以依赖于网页汇编组件的能力加载高性能的视频解码器,以提高视频解码能力,从而在客户端播放诸如H.265的视频。
在该步骤中,检测客户端的操作性能的方法可以通过检测客户端的兼容性来执行,或者通过查询当前客户端的安装信息或版本信息来执行,例如,在客户端的安装信息中,可以查询到当前的客户端的线程操作能力以及数据流操作能力,而通过获取客户端的版本信息,可以查询到该版本客户端的线程操作能力和数据流操作能力。
这里对客户端的操作性能的检测主要是为了在客户端自身解码能力有限导致无法播放诸如H.265编码格式的视频的情况下,能够针对性地改善客户端的视频解码问题,而在客户端的自身解码能力允许提供高性能的视频解码功能时则无需执行上述操作。
对此,根据本公开的示例性实施例的视频解码方法还可以包括:检测客户端的解码能力;在检测到客户端的解码能力不支持对预定编码格式进行解码的情况下,执行上述检测客户端的操作性能的步骤。
这里,客户端的解码能力包括是否支持对预定编码格式进行解码,预定编码格式例如可以是上面提到的H.265编码格式或客户端不支持的其他视频编码格式,其可以根据视频编码技术的应用情况来指定;或者预定编码格式可以是在客户端无法播放输入视频的情况下该输入视频的编码格式。在检测到客户端的解码能力不支持对预定编码格式进行解码的情况下,则可检测客户端的操作性能,从而便于针对性地改善客户端的视频解码问题。
在步骤S20,可以基于检测到的客户端的操作性能,在客户端加载与操作性能对应的视频解码组件。
在该步骤中,可以根据客户端的操作性能,在客户端加载诸如视频解码器的视频解码组件。
图3示出了根据一示例性实施例的一种视频解码方法的加载视频解码组件的步骤的流程图。如图3所示,步骤S20可以包括以下步骤:
在步骤S21,可以基于检测到的客户端的操作性能,向服务端发送解码组件加载请求。
这里,解码组件加载请求中可以携带有检测到的客户端的操作性能的信息。
在步骤S22,可以基于从服务端接收到的与解码组件加载请求对应的执行文件,在客户端加载与操作性能对应的视频解码组件。这里,与操作性能对应的视频解码组件可以是适用于解码上述预定视频编码格式的。
服务端在接收到解码组件加载请求后,可以根据解码组件加载请求中的客户端的操作性能信息,将与该操作性能适配的视频解码组件的执行文件发送给用户终端。
具体来说,步骤S22可以包括:基于从服务端接收到的与解码组件加载请求对应的执行文件,将执行文件转换为与客户端的操作标准对应的文件格式;通过执行转换后的执行文件,在客户端加载与操作性能对应的视频解码组件。
在一示例中,从服务端接收到的执行文件可能无法直接加载到客户端,例如该执行文件可以是通用性的视频解码器安装文件。服务端可提供的视频解码器类型例如包括支持多线程操作且支持单指令多数据流操作的视频解码器、支持多线程操作而不支持单指令多数据流操作的视频解码器、支持单指令多数据流操作而不支持多线程操作的视频解码器以及不支持多线程操作也不支持单指令多数据流操作的视频解码器。这里所述的这些视频解码器例如可以是适用于H.265视频编码格式的视频解码器。
如此,可以在客户端加载与其操作性能对应的视频解码组件,以保证在具有不同操作性能的客户端中都能提供解码能力。
在接收到与解码组件加载请求对应的执行文件后,可以通过转换组件将其转换为客户端可加载的执行文件,以进行加载。如此,可以为客户端提供可以直接加载的执行文件,提高视频解码组件的加载速度以及加载的便利性。
作为示例,在具有网页汇编组件的客户端中,转换组件可以是网页汇编组件的编译工具Emscripten,Emscripten是一个基于底层虚拟机(Low Level Virtual Machine,LLVM)的关注速度、尺寸和网页平台的WebAssembly完整编译工具链,其可以把解码器的执行文件编译成客户端可用的WebAssembly文件格式。
然而,本公开的示例性实施例不限于此,上述转换组件也可以是其他编译工具,只要其可以对执行文件的格式进行转换即可,本公开对此不作特别限制。
在另一示例中,服务端也可以直接提供执行与解码组件加载请求对应的转换后的执行文件,以供客户端直接加载使用。也就是说,执行文件的转换过程可以在服务端进行,也可以在用户终端中进行。
此外,根据本公开的示例性实施例,由于服务端可根据客户端的操作性能来提供相应的视频解码组件,以供客户端加载,因此,在步骤S20中,可以加载不同类型的视频编码组件。
具体来说,可以基于检测到客户端支持多线程操作的情况,在客户端加载第一类型的视频解码组件;或者,可以基于检测到客户端不支持多线程操作的情况,在客户端加载第二类型的视频解码组件。
这里,第一类型的视频解码组件的解码能力可以高于第二类型的视频解码组件的解码能力。视频解码组件的解码能力例如可以从解码速度、可解码的视频画质(例如针对H.264视频编码格式设定的视频画质级别profile或视频画质级别level)、可解码的视频分辨率、可解码的视频码率控制、可解码的视频失真等方面来衡量。
根据本公开的示例性实施例,考虑到在视频解码中,多线程操作的能力与解码质量关联性较强,因此,可以根据客户端是否支持多线程操作,加载不同类型的视频解码组件,以能够根据不同的客户端针对性地提供视频解码组件,提高客户端的解码能力。
这里,在考虑多线程操作能力的基础上,可以进一步地考虑客户端是否支持单指令多数据流操作,以细化适合不同操作性能的客户端的视频解码组件。
具体来说,第一类型的视频解码组件可以包括第一视频解码组件和第二视频解码组件,第二类型的视频解码组件可以包括第三视频解码组件和第四视频解码组件。
在此情况下,在步骤S20中,可以根据客户端的单指令多数据流操作能力,加载不同类型的视频编码组件。
具体来说,可以基于检测到客户端支持单指令多数据流操作的情况,在客户端加载第一视频解码组件或第三视频解码组件;或者,基于检测到客户端不支持单指令多数据流操作的情况,在客户端加载第二视频解码组件或第四视频解码组件。这里,第一视频解码组件的解码能力高于第二视频解码组件的解码能力,第三视频解码组件的解码能力高于第四视频解码组件的解码能力。
也就是说,在客户端支持多线程操作且支持单指令多数据流操作的情况下,可以在客户端加载第一视频解码组件,第一视频解码组件例如可以是具有高解码性能的H.265视频解码器;在客户端支持多线程操作而不支持单指令多数据流操作的情况下,可以在客户端加载第二视频解码组件,第二视频解码组件例如可以是具有较高解码性能的H.265视频解码器;在客户端不支持多线程操作而支持单指令多数据流操作的情况下,可以在客户端加载第三视频解码组件,第三视频解码组件例如可以是具有中等解码性能的H.265视频解码器;在客户端不支持多线程操作也不支持单指令多数据流操作的情况下,可以在客户端加载第四视频解码组件,第四视频解码组件例如可以是具有低解码性能的H.265视频解码器,其例如可以是前面描述的在现有的视频播放方法中在客户端上加载的低性能单线程视频解码器。
如此,根据本公开的示例性实施例,可以考虑到客户端的多线程操作和单指令多数据流操作两方面能力,针对不同的操作能力来提供适合客户端的视频解码器,为用户提供多种选择,以解决客户端自身的解码能力不足的问题。
此外,根据本公开示例性实施例的视频解码方法还可以在加载视频解码组件后对其进行更新。
具体来说,可以响应于客户端的更新,检测客户端的操作性能是否被更新;在检测到客户端的操作性能被更新时,卸载客户端当前加载的解码器组件并在客户端加载与更新后的操作性能对应的视频解码组件。
例如,客户端可能在使用中更新,该更新可能是将客户端更新到更高版本,即,更新后的客户端的操作性能得到提升,例如可以从不支持多线程操作更新到支持多线程操作;也可能是由于诸如设备运行优化、网页浏览需求降低等的用户需求而将客户端更新到较低版本,例如,可以从支持多线程操作更新到不支持多线程操作。在此情况下,可以检测客户端的操作性能是否被一并更新,若其操作性能更新,则可以卸载当前已加载的视频解码组件,而基于更新后的操作性能重新加载视频解码组件。
在上述过程中,允许在客户端更新时相应地更新视频解码组件,并且允许对视频解码组件的性能进行升级或降级,从而避免在客户端升级视频解码组件未升级而无法将视频解码优化到最优性能的情况、以及避免在客户端降级而视频解码组件性能较高而无法再被调用的情况。
在步骤S30,可以基于加载的视频解码组件,在客户端对输入的视频进行解码。
在客户端加载有上述视频解码组件的情况下,在输入视频源时,可以对其进行解析和播放。
需要说明的是,对于上述步骤S10至步骤S30,可以响应于输入视频而执行,例如,响应于输入的视频,对视频数据进行解析,当解析客户端无法执行解析时,可执行上述步骤S10至步骤S30;也可以在使用客户端期间的任意时间执行,例如在客户端安装时执行上述步骤S10至步骤S30。
本公开的示例性实施例可以根据客户端所能为视频解码提供的对多线程操作和/或单指令多数据流操作的性能支撑,针对性地加载适合客户端的视频解码器,以解决客户端自身的解码能力不足的问题。
下面将结合描述根据一示例性实施例的一种视频解码方法的一示例。如图4所示,在步骤S1中,可以检测诸如浏览器的客户端是否支持预定编码格式的解码,以确定客户端自身的解码能力。
在步骤S2中,可以在客户端输入视频源,这里,输入的视频可以具有H.265编码格式。
在步骤S3中,对输入的视频进行数据解析,具体来说,可以根据视频封装格式(例如MP4、FLV等格式),读取视频流中的视频帧数据、对应的解码时间、渲染时间等信息。
在步骤S4和步骤S5中,可以分别判断客户端是否支持多线程操作以及是否支持单指令多数据流操作。这里,尽管图4中示出先检测是否支持多线程操作,然后检测是否支持单指令多数据流操作,但是其仅是示例,根据本公开的其他示例性实施例,也可以先检测是否支持单指令多数据流操作,然后检测是否支持多线程操作;或者可以同时检测二者。
在客户端支持多线程操作且支持单指令多数据流操作的情况下,在步骤S6中,可以加载第一视频解码组件,以对输入的视频执行高性能的多线程、单指令多数据流解码。
在客户端支持多线程操作而不支持单指令多数据流操作的情况下,在步骤S7中,可以加载第二视频解码组件,以对输入的视频执行较高性能的多线程解码。
在客户端不支持多线程操作而支持单指令多数据流操作的情况下,在步骤S8中,可以加载第三视频解码组件,以对输入的视频执行中性能的单线程、单指令多数据流解码。
在客户端不支持多线程操作也不支持单指令多数据流操作的情况下,在步骤S9中,可以加载第四视频解码组件,以对输入的视频执行低性能的单线程解码。
最后,在步骤S10中,可以调用相应的视频解码组件传入视频帧数据,并基于视频解码数据输出视频画面,即输出YUV数据。
在上述示例中显示,在同一台设备上测试采用根据本公开的视频解码方法的最优情况下,对于输入的720P视频的解码速度可以从30~40帧每秒的速度提升至240帧每秒,约为现有的视频解码方法的6倍。
此外,相对于现有的视频解码方法无法解码1080p、60帧视频的情况,在采用根据本公开的视频解码方法的最优情况下,在同一台设备上,可以流畅播放1080p、60帧视频,并且最高可以允许流畅播放4K、30帧、6Mbps码率的视频。
图5是根据一示例性实施例示出的一种视频解码装置的框图。参照图5,该装置应用于客户端,该装置包括检测单元100、加载单元200以及解码单元300。
检测单元100可以被配置为检测客户端的操作性能,其中,操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作。
加载单元200可以被配置为基于检测到的客户端的操作性能,在客户端加载与操作性能对应的视频解码组件。
解码单元300可以被配置为基于加载的视频解码组件,在客户端对输入的视频进行解码。
作为示例,检测单元100还可以被配置为:检测客户端的解码能力,其中,解码能力包括是否支持对预定编码格式进行解码;在检测到客户端的解码能力不支持对预定编码格式进行解码的情况下,执行检测客户端的操作性能的操作。
作为示例,加载单元200还可以被配置为:基于检测到的客户端的操作性能,向服务端发送解码组件加载请求,其中,解码组件加载请求中携带有检测到的操作性能的信息;基于从服务端接收到的与解码组件加载请求对应的执行文件,在客户端加载与操作性能对应的视频解码组件。
作为示例,加载单元200还可以被配置为:基于从服务端接收到的与解码组件加载请求对应的执行文件,将执行文件转换为与客户端的操作标准对应的文件格式;通过执行转换后的执行文件,在客户端加载与操作性能对应的视频解码组件。
作为示例,加载单元200还可以被配置为:基于检测到客户端支持多线程操作的情况,在客户端加载第一类型的视频解码组件;或者基于检测到客户端不支持多线程操作的情况,在客户端加载第二类型的视频解码组件;其中,第一类型的视频解码组件的解码能力高于第二类型的视频解码组件的解码能力。
作为示例,第一类型的视频解码组件包括第一视频解码组件和第二视频解码组件,第二类型的视频解码组件包括第三视频解码组件和第四视频解码组件。
在该示例中,加载单元200还可以被配置为:基于检测到客户端支持单指令多数据流操作的情况,在客户端加载第一视频解码组件或第三视频解码组件;或者基于检测到客户端不支持单指令多数据流操作的情况,在客户端加载第二视频解码组件或第四视频解码组件,其中,第一视频解码组件的解码能力高于第二视频解码组件的解码能力,第三视频解码组件的解码能力高于第四视频解码组件的解码能力。
作为示例,检测单元100还可以被配置为:响应于客户端的更新,检测操作性能是否被更新;在检测到操作性能被更新时,卸载客户端当前加载的解码器组件并在客户端加载与更新后的操作性能对应的视频解码组件。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种电子设备的框图。如图6所示,电子设备10包括处理器101和用于存储处理器可执行指令的存储器102。这里,处理器可执行指令在被处理器运行时,促使处理器执行如上述示例性实施例所述的视频解码方法。
作为示例,电子设备10并非必须是单个的设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备10还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的服务器。
在电子设备10中,处理器101可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器101还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器101可运行存储在存储器102中的指令或代码,其中,存储器102还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器102可与处理器101集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器102可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器102和处理器101可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器101能够读取存储在存储器102中的文件。
此外,电子设备10还可以包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备10的所有组件可经由总线和/或网络而彼此连接。
在示例性实施例中,还可提供一种计算机可读存储介质,当计算机可读存储介质中的指令由处理器执行时,使得处理器能够执行如上述示例性实施例所述的视频解码方法。计算机可读存储介质例如可以是包括指令的存储器,可选地,计算机可读存储介质可以是:只读存储器(ROM)、随机存取存储器(RAM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
在示例性实施例中,还可提供一种计算机程序产品,该计算机程序产品包括计算机指令,计算机指令被处理器执行时实现如上述示例性实施例所述的视频解码方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种视频解码方法,其特征在于,所述视频解码方法包括:
检测客户端的操作性能,其中,所述操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作;
基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件;
基于加载的视频解码组件,在所述客户端对输入的视频进行解码。
2.根据权利要求1所述的视频解码方法,其特征在于,所述视频解码方法还包括:
检测所述客户端的解码能力,其中,所述解码能力包括是否支持对预定编码格式进行解码;
在检测到所述客户端的解码能力不支持对所述预定编码格式进行解码的情况下,执行所述检测客户端的操作性能的步骤。
3.根据权利要求1所述的视频解码方法,其特征在于,所述基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件的步骤包括:
基于检测到的所述客户端的操作性能,向服务端发送解码组件加载请求,其中,所述解码组件加载请求中携带有检测到的操作性能的信息;
基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件。
4.根据权利要求3所述的视频解码方法,其特征在于,所述基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件的步骤包括:
基于从所述服务端接收到的与所述解码组件加载请求对应的执行文件,将所述执行文件转换为与所述客户端的操作标准对应的文件格式;
通过执行转换后的执行文件,在所述客户端加载与所述操作性能对应的视频解码组件。
5.根据权利要求1至4中的任一项所述的视频解码方法,其特征在于,所述基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件的步骤包括:
基于检测到所述客户端支持所述多线程操作的情况,在所述客户端加载第一类型的视频解码组件;或者
基于检测到所述客户端不支持所述多线程操作的情况,在所述客户端加载第二类型的视频解码组件;
其中,所述第一类型的视频解码组件的解码能力高于所述第二类型的视频解码组件的解码能力。
6.根据权利要求5所述的视频解码方法,其特征在于,所述第一类型的视频解码组件包括第一视频解码组件和第二视频解码组件,所述第二类型的视频解码组件包括第三视频解码组件和第四视频解码组件,
其中,所述基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件的步骤还包括:
基于检测到所述客户端支持所述单指令多数据流操作的情况,在所述客户端加载所述第一视频解码组件或所述第三视频解码组件;或者
基于检测到所述客户端不支持所述单指令多数据流操作的情况,在所述客户端加载所述第二视频解码组件或所述第四视频解码组件,
其中,所述第一视频解码组件的解码能力高于所述第二视频解码组件的解码能力,所述第三视频解码组件的解码能力高于所述第四视频解码组件的解码能力。
7.一种视频解码装置,其特征在于,所述视频解码装置包括:
检测单元,被配置为检测客户端的操作性能,其中,所述操作性能包括是否支持多线程操作和/或是否支持单指令多数据流操作;
加载单元,被配置为基于检测到的所述客户端的操作性能,在所述客户端加载与所述操作性能对应的视频解码组件;
解码单元,被配置为基于加载的视频解码组件,在所述客户端对输入的视频进行解码。
8.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器,
其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据权利要求1至6中任一项所述的视频解码方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由处理器执行时,使得所述处理器能够执行根据权利要求1至6中任一项所述的视频解码方法。
10.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现根据权利要求1至6中任一项所述的视频解码方法。
CN202210550946.XA 2022-05-18 2022-05-18 视频解码方法、装置、电子设备及存储介质 Pending CN114979775A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210550946.XA CN114979775A (zh) 2022-05-18 2022-05-18 视频解码方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210550946.XA CN114979775A (zh) 2022-05-18 2022-05-18 视频解码方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114979775A true CN114979775A (zh) 2022-08-30

Family

ID=82985168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210550946.XA Pending CN114979775A (zh) 2022-05-18 2022-05-18 视频解码方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114979775A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114302176A (zh) * 2021-12-03 2022-04-08 杭州海康威视系统技术有限公司 视频播放方法及装置
CN114501149A (zh) * 2022-02-10 2022-05-13 天脉拓道(北京)科技有限公司 一种音频/视频文件的解码方法、装置、设备及可读介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114302176A (zh) * 2021-12-03 2022-04-08 杭州海康威视系统技术有限公司 视频播放方法及装置
CN114501149A (zh) * 2022-02-10 2022-05-13 天脉拓道(北京)科技有限公司 一种音频/视频文件的解码方法、装置、设备及可读介质

Similar Documents

Publication Publication Date Title
US9407921B2 (en) Adaptive codec selection
JP2022519855A (ja) ビデオストリーム復号方法、装置、端末機器およびプログラム
US10283091B2 (en) Buffer optimization
US20130160148A1 (en) Systems, methods, and program applications for selectively restricting the placeshifting of copy protected digital media content
US20150189222A1 (en) Content-adaptive chunking for distributed transcoding
JP2008042566A (ja) 情報処理装置および情報処理装置のデコード制御方法
US20090168899A1 (en) System, method and device to encode and decode video data having multiple video data formats
WO2017096823A1 (zh) 视频转码方法和装置系统
US10057599B2 (en) Method for performing image processing control with aid of predetermined tile packing, associated apparatus and associated non-transitory computer readable medium
JP4964774B2 (ja) ビデオ処理のための階層的プロセッサ構造
JP2008022475A (ja) 再生装置および再生方法、並びにプログラム
CN110933495A (zh) 基于嵌入式系统的视频播放方法及装置
US20120023148A1 (en) Applying Transcodings In A Determined Order To Produce Output Files From A Source File
JP2010109572A (ja) 画像処理装置、及び方法
US20180122340A1 (en) Electronic apparatus, image compression method thereof, and non-transitory computer readable recording medium
US8533354B1 (en) Initiating media presentation prior to receiving seek index data
CN114979775A (zh) 视频解码方法、装置、电子设备及存储介质
US8737467B2 (en) Information processing apparatus and method
CN112188285A (zh) 视频转码方法、装置、系统及存储介质
CN112203097A (zh) 一种自适应视频解码方法、装置,终端设备及存储介质
CN115460183A (zh) 基于浏览器的流媒体数据播放方法、装置及相关设备
CN105657540A (zh) 一种适配安卓系统的视频解码方法及其装置
CN116828198B (zh) 在nvidia gpu上支持va-api硬件视频加速接口的方法
JP2011160077A (ja) 復号装置および方法
Trojahn et al. A comparative analysis of media processing component implementations for the Brazilian digital TV middleware

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