CN117440167B - 一种视频解码方法、装置、计算机设备、介质及产品 - Google Patents

一种视频解码方法、装置、计算机设备、介质及产品 Download PDF

Info

Publication number
CN117440167B
CN117440167B CN202311277450.0A CN202311277450A CN117440167B CN 117440167 B CN117440167 B CN 117440167B CN 202311277450 A CN202311277450 A CN 202311277450A CN 117440167 B CN117440167 B CN 117440167B
Authority
CN
China
Prior art keywords
target
video
decoding
data packet
operand
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.)
Active
Application number
CN202311277450.0A
Other languages
English (en)
Other versions
CN117440167A (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.)
Shuhang Technology Beijing Co ltd
Original Assignee
Shuhang Technology Beijing 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 Shuhang Technology Beijing Co ltd filed Critical Shuhang Technology Beijing Co ltd
Priority to CN202311277450.0A priority Critical patent/CN117440167B/zh
Publication of CN117440167A publication Critical patent/CN117440167A/zh
Application granted granted Critical
Publication of CN117440167B publication Critical patent/CN117440167B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream

Landscapes

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

Abstract

本申请实施例公开了一种视频解码方法、装置、计算机设备、介质及产品,其中方法包括:获取针对目标视频的编码码流;编码码流中包括目标视频中每个视频帧对应的编码数据包;遍历目标视频中的视频帧,若当前遍历到目标视频帧时,从编码码流中获取目标视频帧的目标编码数据包,并确定目标编码数据包的字节数;获取目标视频的视频分辨率,并基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的线程数量;调用线程数量的线程对目标编码数据包进行解码,得到针对目标视频帧的解码数据;可实现在视频解码时线程数量的合理分配,以有效降低设备耗电量。

Description

一种视频解码方法、装置、计算机设备、介质及产品
技术领域
本申请涉及视频处理技术领域,尤其涉及一种视频解码方法、装置、计算机设备、介质及产品。
背景技术
在视频播放场景中,待播放的视频文件可以通过编码处理进行压缩后再进行存储,视频播放时可以使用解码器对压缩后的视频文件进行解压计算,以还原原始的视频数据。而在解码的过程中,解码器通常会消耗大量的计算资源,此时播放设备的CPU会持续以高功率高负荷运行,进而会消耗大量的电池电量。目前,为了避免视频播放时的卡顿,解码器会采用多线程技术来加速解码,但是线程数量的增加会进一步导致CPU的占用率变高,从而导致耗电量升高。因此,如何合理的分配在进行视频解码时的线程的线程数量,以达到降低耗电量的目的成为了当前研究热点。
发明内容
本申请实施例提供了一种视频解码方法、装置、计算机设备、介质及产品,可实现在视频解码时线程数量的合理分配,以有效降低设备耗电量。
本申请实施例第一方面公开了一种视频解码方法,所述方法包括:
获取针对目标视频的编码码流;所述编码码流中包括所述目标视频中每个视频帧对应的编码数据包;
遍历所述目标视频中的视频帧,若当前遍历到目标视频帧时,从所述编码码流中获取所述目标视频帧的目标编码数据包,并确定所述目标编码数据包的字节数;
获取所述目标视频的视频分辨率,并基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量;
调用所述线程数量的线程对所述目标编码数据包进行解码,得到针对所述目标视频帧的解码数据。
本申请实施例第二方面公开了一种视频解码装置,所述装置包括:
获取单元,用于获取针对目标视频的编码码流;所述编码码流中包括所述目标视频中每个视频帧对应的编码数据包;
所述获取单元,还用于遍历所述目标视频中的视频帧,若当前遍历到目标视频帧时,从所述编码码流中获取所述目标视频帧的目标编码数据包,并确定所述目标编码数据包的字节数;
确定单元,用于获取所述目标视频的视频分辨率,并基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量;
解码单元,用于调用所述线程数量的线程对所述目标编码数据包进行解码,得到针对所述目标视频帧的解码数据。
本申请实施例第三方面公开了一种计算机设备,包括处理器和存储器,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
本申请实施例第四方面公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
本申请实施例第五方面公开了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括程序指令,所述程序指令被处理器执行时实现上述第一方面的方法。
在本申请实施例中,可以获取针对目标视频的编码码流;该编码码流中包括目标视频中每个视频帧对应的编码数据包;遍历目标视频中的视频帧,若当前遍历到目标视频帧时,从编码码流中获取目标视频帧的目标编码数据包,并确定目标编码数据包的字节数;还可以获取目标视频的视频分辨率,并基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的线程数量;进一步的,可以调用线程数量的线程对目标编码数据包进行解码,得到针对目标视频帧的解码数据。通过上述方式,可实现在视频解码时线程数量的合理分配,以有效降低设备耗电量。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种视频解码系统的架构示意图;
图2是本申请实施例提供的一种视频解码方法的流程示意图;
图3是本申请实施例提供的另一种视频解码方法的流程示意图;
图4是本申请实施例提供的又一种视频解码方法的流程示意图;
图5是本申请实施例提供的一种视频解码装置的结构示意图;
图6是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例提出了一种视频解码方案,该视频解码方案原理如下:可以先获取针对目标视频的编码码流;该编码码流中包括目标视频中每个视频帧对应的编码数据包;然后可以遍历目标视频中视频帧对应的编码数据包,以确定对视频帧对应的编码数据包进行解码所需的线程的线程数量,进而可以调用线程数量的线程对编码数据包进行解码,得到视频帧的解码数据。例如,以目标视频中的目标视频帧来说,确定该目标视频帧所对应的线程数量的具体实现可以是:从编码码流中获取目标视频帧的目标编码数据包,并确定目标编码数据包的字节数;还可以获取目标视频的视频分辨率,以基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的线程数量。
通过上述解码方式,在解码过程中,可以对视频帧的解码运算量进行预估,并可以基于视频帧的解码运算量的需求来选择最优的线程数量,从而可以动态自适应调整解码时的线程数量,以有效降低中央处理器(Central Processing Unit,CPU)负载,在保证视频解码与播放流畅性的前提下,达到降低耗电量的效果;而由于耗电量的降低,也可以有效延长视频播放时长,进而可以提升用户端视频播放的综合体验。并且,可以将视频解码运算量的估算粒度划分到了帧级别,相比于传统的文件级别,可以使得解码过程中线程数量的动态调整成为可能。
在具体实现中,上述所提及的视频解码方案的执行主体可以是计算机设备,该计算机设备可以是终端。或者该计算机设备具体可以是部署在终端的具有视频解码功能或者说视频播放功能的客户端。可以理解的是,视频解码可以利用解码器来实现,则上述的视频解码方案也可以是由计算机设备调用解码器执行的。需要说明的是,本申请实施例所提及的对目标视频进行解码处理所在设备与计算机设备可以是指同一设备。而通常进行解码处理所在设备在对目标视频进行解码处理后,可以播放该目标视频,则该设备也可以称之为是播放设备。此处所提及的终端可以是智能手机、平板电脑、笔记本电脑、台式电脑等设备;客户端可以是多媒体播放客户端、浏览器客户端、信息流客户端,等等。
示例的,当计算机设备为客户端时,本申请实施例提供了一种视频解码系统,如图1所示,该视频解码系统可包括至少一个客户端和至少一个服务器。服务器可以先对目标视频进行解码,以得到该目标视频的编码码流;而客户端存在对目标视频的播放需求时,可以向服务器发送针对目标视频的拉流请求,以请求从服务器中拉取目标视频的编码码流;而在服务器接收到该拉流请求中,可以响应于该拉流请求,并向客户端发送目标视频的编码码流;而在客户端接收到目标视频的编码码流后,客户端可以采用视频解码方案对拉取到的编码码流进行解码,从而还原目标视频,进而对该目标视频进行播放。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。
需说明的是,本申请实施例中涉及到用户信息相关的数据均为用户授权后的数据。
基于上述所提供的视频解码方案,本申请实施例提供了一种视频解码方法,该视频解码方法可由上述所提及的计算机设备执行。请参阅图2,该视频解码方法包括但不限于以下步骤:
S201,获取针对目标视频的编码码流;编码码流中包括目标视频中每个视频帧对应的编码数据包。
其中,目标视频可以为任意类型的视频,如类型可以是影视类型、教育类型、体育类型等中的任一种,该目标视频也可以是任意时长的视频,如可以是20秒或8分等时长的视频。
在一种实现方式中,可以理解的是,针对一个视频的编解码来说,需要先对该视频进行编码,以得到对应的编码码流;进而对该编码码流进行解码,以还原原始的视频。基于此可知,步骤S201的具体实现可以是:先获取针对目标视频的视频文件;该视频文件可以是对目标视频进行编码处理后的编码码流,并对编码码流进行封装得到的文件;在得到该视频文件之后,即可以对视频文件进行解封装,以得到目标视频的编码码流。
其中,封装处理可以是指将针对一个视频的已经编码压缩好的视频流、音频流等放到一个文件(如此处提及的视频文件),以便于设备可以利用该视频文件对视频进行播放;在进行封装时,具有对应的封装格式,对应的封装格式可以为mp4格式、flv(flashvideo,流媒体)格式等等。通常,视频文件的后缀名即可以表征对应的封装格式,如视频文件的后缀名可以是mp4、flv等等。其中,解封装处理为封装处理的逆过程,即是将一个视频文件,拆解成视频码流以及音频码流;而此处的目标视频的编码码流可以理解为是对视频文件解封装后所得到的视频码流。
S202,遍历目标视频中的视频帧,若当前遍历到目标视频帧时,从编码码流中获取目标视频帧的目标编码数据包,并确定目标编码数据包的字节数。
通过实践表明,在视频播放中,在利用解码器对视频进行解码时,线程的线程数量(或简称为线程数)对设备的耗电量会有一定的影响,即使均采用1倍速(即在进行视频播放时,采用1倍速进行播放)定速的方式对视频进行解码,采用多线程(即多个线程)方式进行解码的耗电量也会比单线程(即一个线程)进行解码的耗电量要高。其原因在于:多线程进行解码的过程中需要维护多个线程的上下文信息,并需要定期进行上下文信息的切换,而这种操作会带来额外的不必要的性能开销。可以理解的是,在进行播放视频(或者说视频解码)时,设备中的解码器会消耗大量的计算资源,则设备中的CPU持续以高功率高负荷运行,而CPU的运行会消耗大量的电池电量,在采用多线程技术进行解码时,在避免视频播放时出现卡顿时,也会进一步导致CPU的占用率变高,从而导致设备在进行视频播放时的耗电量升高。
那么为了降低CPU的负载,在保证视频解码与播放流畅性的前提下,达到降低端侧电池的耗电量,提升用户端视频播放的综合体验,考虑在视频的解码过程中选择不同的线程数量,以保证解码性能的前提下,选择最少的线程数量进行解码运算,从而达到降低CPU功率、降低耗电量的效果。在本申请实施例中,在对视频的解码过程中,可以预估该视频中视频帧的计算量需求,以基于视频帧的计算量需求,从而动态自适应地调整视频帧进行解码所需的线程的线程数量,既保证了解码性能、避免卡顿,又降低了电池的耗电量。
基于此可知,针对目标视频而言,可以遍历该目标视频中的视频帧,以确定视频帧进行解码所需的线程的线程数量,进而调用线程数量的线程对目标编码数据包进行解码,得到针对目标视频帧的解码数据。
其中,目标视频帧可以是指目标视频中的任一视频帧,也可以是指目标视频中的特定视频帧。
其中,在目标视频帧为目标视频中的任一视频帧时,即表明可以对目标视频中的每一个视频帧确定对应的进行解码所需的线程数量,以有效降低CPU负载,在保证视频解码与播放流畅性的前提下,可以达到降低端侧耗电量的效果,而由于可以降低端侧耗电量的效果,则也额可以有效延长视频播放时长,从而达到提升用户体验、降低碳排放的综合效果。
其中,在目标视频帧为目标视频中的特定视频帧时,即表明可以对目标视频中的部分视频确定对应的进行解码所需的线程数量。通过这种方式,在尽可能降低CPU负载,降低端侧耗电量的同时,还可以尽量降低确定线程数量所消耗的计算开销。在一种实现方式中,特定视频帧以及特定视频帧的数量可以基于需求确定。
可选的,特定视频帧可以从目标视频中随机抽取的视频帧;例如,特定视频帧包含目标视频中所有帧号为奇数的视频帧,或者,特定视频帧包含目标视频中所有帧号为偶数的视频帧。
可选的,特定视频帧是基于视频帧的帧画面复杂度确定的,如可以将帧画面复杂度较高的视频帧作为特定视频帧,以为这些视频帧分配合适的线程数量,尽可能的加快解码。在一个实施例中,当遍历到目标视频帧的一个视频帧时,可以获取该视频帧的帧画面复杂度,并将该帧画面复杂度与预设复杂度进行比较,如果比较结果为帧画面复杂度大于预设复杂度,则可以将该视频帧确定为特定视频帧(也就是目标视频帧),而如果比较结果为帧画面复杂度不大于预设复杂度,则可以将该视频帧不确定为特定视频帧。
其中,预设复杂度可以预先设置,其具体数值不作限定。一个视频帧的帧画面复杂度可以是指帧画面中的平均每像素的字节数。基于此可知,可以获取目标视频的视频分辨率以及视频帧的字节数,以基于目标视频的视频分辨率以及视频帧的字节数确定该视频帧的帧画面复杂度。例如,可以将视频帧的字节数与目标视频的视频分辨率之间的比值,作为该视频帧的帧画面复杂度。
其中,视频分辨率可以包括针对目标视频的目标视频尺寸信息,该目标视频尺寸信息可以包括目标视频高度以及目标视频宽度,目标视频尺寸信息可以记为(w,h)或w*h,w(width)表示目标视频宽度,h(height)表示目标视频高度,即目标视频的视频分辨率也可以记为w*h或width*height。width*height可以表示一个视频帧的帧画面中的像素个数。
例如,如果目标视频的视频分辨率为540p,则对应的目标视频尺寸信息为(540,960),或者说目标视频的视频分辨率为540*960;又如,如果目标视频的视频分辨率为720p,则对应的目标视频尺寸信息为(720,1280),或者说目标视频的视频分辨率为720*1280。
基于上述的描述可知,例如,假设视频分辨率记为w*h,视频帧的字节数记为frame_size,则视频帧的帧画面复杂度可以表示为frame_size/(w*h)。
在一种实现方式中,对于目标视频而言,在当前遍历到目标视频中的目标视频帧时,可以确定该目标视频帧进行解码所需的线程数量。可选的,可以先从编码码流中获取该目标视频帧的编码数据包,为方便描述,可以将此处的编码数据包称之为目标编码数据包。可以理解的是,对于一个视频来说,对该视频进行编码处理,也就是对该视频进行压缩处理,则此处的编码数据包也可以理解为压缩数据包。该目标编码数据包是用来对目标视频帧进行解码的,则确定目标视频帧进行解码所需的线程数量,也就是确定对该目标编码数据包进行解码所需的线程数量。
基于此可知,可以获取该目标编码数据包的数据量,如该数据量可以利用字节数来表征,即可以获取目标编码数据包的字节数。在一个实施例中,该目标编码数据包中可以包含大量关于数据包对应的属性信息,如该目标编码数据包中可以包含用于指示目标编码数据包大小的大小(size)字段,该size字段中指明了目标编码数据包的字节数。例如,可以将目标编码数据包的字节数记为pkt_size。
在一种实现方式中,可以获取与目标视频相关联的特征参数,以基于该特征参数确定是否执行步骤S202的操作,或者说是否执行关于确定目标视频中视频帧进行解码所需的线程数量的实现过程。其中,该特征参数可以包括:对目标视频进行解码所需的设备的剩余电池量,目标视频的播放时长等中的一种或多种。
1.在特征参数包括对目标视频进行解码所需的设备的剩余电池量的情况下。
可以获取用于对目标视频进行解码所需的设备的剩余电池量,以基于该剩余电池量确定是否执行步骤S202。可选的,可以获取一个预先设置的第一预设电池量,并将剩余电池量与第一预设电池量进行比较,以基于比较结果确定是否执行步骤S202;如果比较结果为剩余电池量低于第一预设电池量,则可以执行步骤S202,而如果比较结果为剩余电池量不低于第一预设电池量,则可以不执行步骤S202,即按照传统的解码方式对目标视频进行解码。
其中,第一预设电池量可以基于需求进行设置,其具体数值不作限定,例如,为保证设备可以使用更长的时间,则可以将第一预设电池量设置为较大数值。通过这种方式,可以在设备的电池量不足时,通过动态自适应调整视频中视频帧所需的线程数量,降低CPU负载,在保证视频解码与播放流畅性的前提下,达到降低端侧耗电量的效果。
2.在特征参数包括目标视频的播放时长的情况下。
可以获取目标视频的播放时长,以基于该播放时长确定是否执行步骤S202。可选的,可以获取一个预先设置的第一预设时长,并将播放时长与第一预设时长进行比较,以基于比较结果确定是否执行步骤S202;如果比较结果为播放时长高于第一预设时长,则可以执行步骤S202,而如果比较结果为播放时长不高于第一预设时长,则可以不执行步骤S202,即按照传统的解码方式对目标视频进行解码。
其中,第一预设时长可以是基于需求进行设置,其具体数值不作限定。通过这种方式,可以针对一个需花费较长时间进行解码播放的视频时,通过动态自适应调整视频中视频帧所需的线程数量,在加速解码的同时,降低CPU负载,达到降低端侧耗电量的效果。
3.在特征参数包括对目标视频进行解码所需的设备的剩余电池量,目标视频的播放时长的情况下。
可以先获取用于对目标视频进行解码所需的设备的剩余电池量以及目标视频的播放时长;然后,将剩余电池量与第二预设电池量进行比较,得到对应的电池量比较结果,并可以将播放时长与第二预设时长进行比较,得到对应的时长比较结果;进而基于电池量比较结果以及时长比较结果确定是否执行步骤S202。可选的,如果满足电池量比较结果为剩余电池量低于第二预设电池量,以及时长比较结果为播放时长高于第二预设时长中的一种或多种,则可以确定执行步骤S202。而如果电池量比较结果为剩余电池量不低于第二预设电池量,且时长比较结果为播放时长不高于第二预设时长,则可以确定不执行步骤S202。
其中,第二预设电池量与第二预设时长可以预先设置,其具体数值不作限定,第二预设电池量可以与上述的第一预设电池量相同或不相同,第二预设时长也可以与上述的第二预设电池量相同或不相同。
S203,获取目标视频的视频分辨率,并基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的线程数量。
在一种实现方式中,在获取到目标视频的视频分辨率之后,即可以基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的线程数量。可选的,可以先基于目标编码数据包的字节数据以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的解码运算量,进而基于该解码运算量确定对目标编码数据包进行解码所需的线程数量。
S204,调用线程数量的线程对目标编码数据包进行解码,得到针对目标视频帧的解码数据。
可以理解的是,可以基于上述方式确定对目标视频中每个视频帧进行解码所需的线程数量,则可以调用视频帧所对应的线程数量的线程对相应视频帧的编码数据包进行解码,以得到目标视频中每个视频帧的解码数据,而这些解码数据可以构成目标视频,从而使得目标设置可以播放该目标视频。
需要说明的是,此处解码处理所得到的目标视频与编码处理之前的目标视频可以是一致的,也可以是存在差异的。在一个实施例中,在无损压缩的场景中,由于无损压缩可以达到完全还原的目的,则解码处理得到的目标视频是和编码处理之前的目标视频是一致的。而在有损压缩的场景中,由于在压缩过程中会损失一些信息,则在解码处理时,并不能完全恢复原始的数据,即解码处理得到的目标视频不能完全还原为编码处理之前的目标视频;那么,此处解码处理所得到的目标视频与编码处理之前的目标视频通常会存在一些差异,这些差异可能是针对视频清晰度、或视频色彩度的差异,如解码处理所得到的目标视频的视频清晰度比编码处理之前的目标视频的视频清晰度差。
在本申请实施例中,在解码过程中,可以对视频帧的解码运算量进行预估,并可以基于视频帧的解码运算量的需求来选择最优的线程数量,从而可以动态自适应调整解码时的线程数量,以有效降低CPU负载,在保证视频解码与播放流畅性的前提下,达到降低耗电量的效果;而由于耗电量的降低,也可以有效延长视频播放时长,进而可以提升用户端视频播放的综合体验。并且,可以将视频解码运算量的估算粒度划分到了帧级别,相比于传统的文件级别,可以使得解码过程中线程数量的动态调整成为可能。
请参阅图3,图3是本申请实施例提供的另一种视频解码方法的流程示意图,本实施例所描述的视频解码方法可应用于上述的计算机设备,如图3所示,该方法可包括:
S301,获取针对目标视频的编码码流;编码码流中包括目标视频中每个视频帧对应的编码数据包。
S302,遍历目标视频中的视频帧,若当前遍历到目标视频帧时,从编码码流中获取目标视频帧的目标编码数据包,并确定目标编码数据包的字节数。
其中,步骤S301-S302的具体实施方式可以参考上述步骤S201-S202中的描述,此处不再赘述。
S303,获取目标视频的视频分辨率,基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的解码运算量。
在一种实现方式中,可以基于目标编码数据包的字节数以及目标视频的视频分辨率,直接确定对目标编码数据包进行解码所需的解码运算量。可选的,可以将目标视频的视频分辨率与目标编码数据包的字节数之间的比值,作为对目标编码数据包进行解码所需的解码运算量。例如,假设视频分辨率记为w*h,目标编码数据包的字节数记为pkt_size,则对目标编码数据包进行解码所需的解码运算量可以表示为(w*h)/pkt_size。
在一种实现方式中,可以先基于目标编码数据包的字节数以及目标视频的视频分辨率,确定对目标编码数据包进行解码所需的参考运算量。其中,确定参考运算量与上述确定解码运算量的方式一致,即可以将目标视频的视频分辨率与目标编码数据包的字节数之间的比值,作为对目标编码数据包进行解码所需的参考运算量。
而在确定对目标编码数据包进行解码所需的参考运算量之后,还可以进一步确定对目标视频帧进行解码的复杂度缩放因子(或称之为是计算复杂度缩放因子),该复杂度缩放因子可以对一个视频帧的计算复杂度进行更加精细的量化,即该复杂度缩放因子可以用于量化一个视频帧在进行解码时的计算复杂度。可选的,可以基于复杂度缩放因子以及上述的参考运算量确定对目标编码数据包进行解码所需的解码运算量;例如,可以利用该复杂度缩放因子对参考运算量进行加权,并将加权结果作为对目标编码数据包进行解码所需的解码运算量。在此实施方式中,计算机设备可以通过如下公式(1)计算得到对目标编码数据包进行解码所需的解码运算量:
C=(w*h)*S/pkt_size (1)
其中,C表示对一个编码数据包进行解码所需的解码运算量,S表示复杂度缩放因子。
在一种实现方式中,目标视频帧的复杂度缩放因子可以是随机生成的,即一个目标视频中的每个视频帧进行解码时,可以随机生成目标视频中每个视频帧的复杂度缩放因子。
在一种实现方式中,确定对目标视频帧进行解码的复杂度缩放因子的原理可以是基于目标视频帧的帧画面复杂度来确定的;例如,可以根据帧画面中的“平均每像素的字节数”对复杂度缩放因子进行估算。
基于此可知,确定目标视频帧的复杂度缩放因子的具体实现可以是:可先获取目标视频帧的字节数,该目标视频帧的字节数也可以称之为是目标视频帧的帧画面字节数;进而可以基于目标视频帧的字节数以及目标视频的视频分辨率,确定对目标视频帧进行解码的复杂度缩放因子。可选的,可以将目标视频帧的字节数与目标视频的视频分辨率之间的比值,作为对目标视频帧进行解码的复杂度缩放因子。例如,假设视频分辨率记为w*h,目标视频帧的字节数记为frame_size,则目标视频帧进行解码的复杂度缩放因子可以表示为frame_size/(w*h)。
示例性的,在常见的视频文件中,YUV(YUV一种视频格式,YUV中的Y表示明亮度,U和V表示色度)降采样策略可以决定S值。例如,在YUV4:2:0降采样策略中S可取值1.5,在YUV4:4:4降采样策略中S可取值3.0。其中,YUV是一种视频格式,YUV中的Y表示明亮度,U和V表示色度;YUV降采样策略可以理解为将YUV格式的视频进行降采样所对应的策略。可见,上述针对视频帧的解码运算量的预估公式(1)可以是一个基于视频帧大小与YUV降采样策略的帧解码计算量预估公式,这个预估公式能够更加精确地选择解码的线程数量数,以保证解码卡顿率与耗电量的最优。
S304,基于目标编码数据包的解码运算量确定对目标编码数据包进行解码所需的线程数量。
在一种实现方式中,为确定对目标编码数据包进行解码所需的线程数量,可以考虑先确定单线程对编码数据包进行解码所对应的解码运算量,以基于单线程所具有的解码运算量确定对目标编码数据包进行解码所需的线程数量。其中,单线程所具有的解码运算量可以是指:单个线程在CPU满负荷运行时保证视频不卡顿时的最大解码运算量。可选的,可以通过利用单线程对参考视频进行解码,以确定单线程所具有的解码运算量。其中,该参考视频可以是任意视频,对此不作限定。
在一个实施例中,可以获取在利用单线程对参考视频的编码码流中每个视频帧的编码数据包进行解码时,参考视频中每个视频帧的编码数据包解码所消耗的解码耗时;即在通过一个设备运行单线程的解码器并对参考视频进行解码时,可以记录参考视频的编码码流中每个视频帧的解码耗时。然后,可以基于参考视频的编码码流中每个视频帧的解码耗时确定单线程所具有的解码运算量。基于上述对单线程所具有的解码运算量的理解可知,为确定该值,可以先基于参考视频中每个视频帧的编码数据包的解码耗时,从参考视频中确定解码耗时为目标耗时的参考视频帧。该目标耗时可以是指解码器在进行解码时不会出现卡顿的最大耗时;该目标耗时可以是一个经验值,例如,在实践中表明,解码器在对一个视频帧进行解码所耗费的解码耗时小于30ms时通常不会卡顿,则可以将目标耗时设置为30毫秒,或者可以将目标耗时可在[(30-x)ms,(30+x)ms]范围内取值,其中,x可以是一个较小的数值,例如,可以是1、2等数值。
在确定参考视频帧之后,可以进一步确定利用单线程对该参考视频帧进行解码所需的解码运算量,并可将所确定的运算量确定为单线程所具有的解码运算量。具体实现中,可以获取参考视频帧所对应的编码数据包(可称之为是参考编码数据包)的字节数,并进一步获取该参考视频的视频分辨率,以便于可以基于该参考编码数据包对应的字节数,以及该参考视频的视频分辨率,确定单线程所具有的解码运算量。在一个实施例中,可以基于参考编码数据包的字节数以及参考视频的视频分辨率,确定对参考编码数据包进行解码所需的解码运算量,并将参考编码数据包的解码运算量作为单线程所具有的解码运算量。其中,确定参考数据包进行解码所需的解码运算量与上述提及的确定目标编码数据包进行解码所需的解码运算量的原理是类似的,此处对此不再赘述。
可以理解的是,对于对视频解码处理的设备或者说播放视频的设备的设备类型是繁多的,且不同的设备类型的设备所具有的CPU芯片的计算能力也可能存在区别,则不同设备类型的设备在利用单线程对视频进行解码时,所具有的解码运算量也会存在区别,则为更为精确的确定单线程具有的解码运算量,对于不同的设备类型,可以确定不同的单线程具有的解码运算量。
基于此可知,可以预先建立参考设备类型与参考单线程所具有的解码运算量之间的映射关系,以便于后续在需要利用某一设备类型的单线程所具有的解码运算量时,可以直接基于该映射关系确定所需的数据。
在这种情况下,获取单线程所具有的解码运算量的实现可以是:可以先获取对目标视频进行解码处理的所在设备的目标设备类型;进一步可以获取参考设备类型与参考单线程所具有的解码运算量之间的映射关系,以基于映射关系确定与目标设备类型匹配的单线程所具有的解码运算量。
其中,对于映射关系中任一参考设备类型所对应的参考单线程所具有的解码运算量的确定原理是上述所描述的确定单线程所具有的解码运算量的原理是一致的,区别在于:在通过利用单线程对参考视频进行解码时,解码处理所处的设备的设备类型存在区别,即在确定某一参考设备类型所对应的参考单线程所具有的解码运算量时,需要利用该参考设备类型所对应的设备对参考频进行解码。
在一种实现方式中,在确定单线程所具体有的解码运算量之后,即可以基于该单线程所具体有的解码运算量以及目标编码数据包解码运算量,确定对目标编码数据包进行解码所需的线程数量。可选的,可以将单线程的解码运算量与目标编码数据包的解码运算量进行大小比较,以基于该比较结果确定对目标编码数据包进行解码所需的线程数量。
当比较结果为目标编码数据包的解码运算量小于或等于单线程的解码运算量时,表明利用单线程即可以实现对目标编码数据包的解码,则可以将线程数量确定为指定数值,该指定数值为1。
当比较结果为目标编码数据包的解码运算量大于单线程的解码运算量时,表明在对目标编码数据包进行解码时,利用单线程不能满足该目标编码数据包所需的解码运算量,则在这种情况下,需要进一步确定对目标编码数据包所需的线程数量。例如,可以基于单线程的解码运算量与目标编码数据包的解码运算量确定对目标编码数据包进行解码所需的线程数量。此处的线程数量可以是针对对目标编码数据包进行解码所需的最小线程数量,即在保证视频不卡顿的情况下,利用最少的线程数量实现对目标编码数据包的解码,以尽可能降低对CPU的占用率(负载),从而降低电池耗电量。
在这种情况下,需要找到一个最小的线程数量,如记为k,该k值需要满足如下公式(2)所示的关系:
k×C0≤C<(k+1)×C0 (2)
其中,C0表示单线程所具有的解码运算量,C表示目标编码数据包的解码运算量。
找到满足公式(2)所示关系的k值,也就是找到能够满足目标视频帧对应解码运算量的最小的线程数量。基于这种思想,确定目标编码数据包进行解码所需的线程数量的具体实现可以是:可先计算目标编码数据包的解码运算量与单线程的解码运算量之间的比值;然后,可以对该比值以目标取整方式进行取整,并将取整结果作为对目标编码数据包进行解码所需的线程数量。其中,此处的目标取整方式可以是指向上取整;例如,假设比值为3.2,则对应的取整结果为4;例如,假设比值为3.7,则对应的取整结果为4。
举例来说,假设单线程的解码运算量为10。如果目标解码数据包所需的解码运算量为8,则该目标编码数据包所需的线程数量为1。如果目标解码数据包所需的解码运算量为57,通过计算目标解码数据包与单线程的解码运算量之间的比值可得5.7,通过对该比值进行向上取整可得6,则该目标编码数据包所需的线程数量为6。
在一种实现方式中,可以为目标视频中的每个视频帧对应的编码数据包设置一个对应的初始线程数量,例如,该初始线程数量可以设置为1,如可以记为thread_num=1。基于此可知,此处目标视频帧对应的目标编码数据包进行解码所需的初始线程数量为1,而在基于上述确定对目标编码数据包进行解码所需的线程数量之后,可以将初始线程数量更新为所确定的线程数量。在本申请实施例中,可以将所确定的对目标视频帧的目标编码数据包进行解码所需的线程数量理解为最优的线程数量。
在一种实现方式中,可以获取预先设置的参考解码运算量与参考线程数量之间的映射关系,以基于该映射关系以及目标编码数据包的解码运算量确定对目标编码数据包进行解码所需的线程数量。例如,可以从映射关系中查找与解码运算量匹配的参考解码运算量,并将所匹配到的参考解码运算量对应的参考线程数量,作为目标编码数据包进行解码所需的线程数量。其中,该映射关系可以预先设置的;在一个实施例中,该映射关系中参考解码运算量与参考线程数量之间的对应关系可以利用上述确定目标编码数据包所需的线程数量的原理来实现,即可以预先利用上述方式确定多个参考解码运算量中每个参考解码运算量对应的参考线程数量,并构建为映射关系,以便于后续可以直接基于该映射关系确定线程数量,从而可以加快确定线程数量的速度,进而可以提高解码速度。
S305,调用线程数量的线程对目标编码数据包进行解码,得到针对目标视频帧的解码数据。
为更加理解本申请实施例所提出的视频解码方法,下述结合图4进一步说明。例如,参见图4所示,视频解码方法的实现流程可如下所示:
1.设置一个初始线程数量,如可记为thread_num=1。
2.打开视频文件进行解封装,得到需解码的编码码流。
其中,此处的视频文件的理解可参考上述描述。
3.打开解码器,将该解码器对应的线程数量设置为thread_num。
4.读取一个视频帧的编码数据包,并获取该编码数据包的大小,如可记为pkt_size。
其中,此处编码数据包的大小就是上述提及的编码数据包的字节数。针对一个待解码的视频文件,当解码到一个视频帧时,可以读取该视频帧的编码数据包,以通过编码数据包中的size字段获得编码数据包的字节数,并将其记为pkt_size。
5.基于编码数据包的大小以及视频分辨率估算出针对编码数据包的解码运算量。
其中,可以基于编码数据包的大小以及视频的视频分辨率估算出这个视频帧的解码运算量。例如,该视频帧的解码运算量可用上述公式(1)预估。
6.根据编码数据包的解码运算量选择最优的线程数量thread_num。
7.设置解码器的线程数量为thread_num。
其中,此处是使用最优的线程数更新初始线程数量。
8.利用最优的线程数量对视频帧的编码数据包括进行解码得到对应的解码数据。
9.检测目标视频中的所有帧是否解码完毕;若未完毕,则调回步骤4;若完毕,则结束。
在本申请实施例中,在解码过程中,可以对视频帧的解码运算量进行预估,并可以基于视频帧的解码运算量的需求来选择最优的线程数量,从而可以动态自适应调整解码时的线程数量,以有效降低CPU负载,在保证视频解码与播放流畅性的前提下,达到降低耗电量的效果;而由于耗电量的降低,也可以有效延长视频播放时长,进而可以提升用户端视频播放的综合体验。并且,可以将视频解码运算量的估算粒度划分到了帧级别,相比于传统的文件级别,可以使得解码过程中线程数量的动态调整成为可能。
请参阅图5,图5是本申请实施例提供的一种视频解码装置的结构示意图。本实施例中所描述的视频解码装置,包括:
获取单元501,用于获取针对目标视频的编码码流;所述编码码流中包括所述目标视频中每个视频帧对应的编码数据包;
所述获取单元501,还用于遍历所述目标视频中的视频帧,若当前遍历到目标视频帧时,从所述编码码流中获取所述目标视频帧的目标编码数据包,并确定所述目标编码数据包的字节数;
确定单元502,用于获取所述目标视频的视频分辨率,并基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量;
解码单元503,用于调用所述线程数量的线程对所述目标编码数据包进行解码,得到针对所述目标视频帧的解码数据。
在一种实现方式中,所述确定单元502,具体用于:
基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的解码运算量;
基于所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述确定单元502,具体用于:
基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的参考运算量;
获取所述目标视频帧的字节数,并基于所述目标视频帧的字节数以及所述目标视频的视频分辨率,确定对所述目标视频帧进行解码的复杂度缩放因子;
基于所述参考运算量以及所述复杂度缩放因子,确定对所述目标编码数据包进行解码所需的解码运算量。
在一种实现方式中,所述确定单元502,具体用于:
获取单线程所具有的解码运算量;
将所述单线程的解码运算量与所述目标编码数据包的解码运算量进行大小比较,并基于比较结果确定对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述确定单元502,具体用于:
获取对所述目标视频进行解码处理的所在设备的目标设备类型;
获取参考设备类型与参考单线程所具有的解码运算量之间的映射关系,基于所述映射关系确定与所述目标设备类型匹配的单线程所具有的解码运算量。
在一种实现方式中,所述确定单元502,具体用于:
获取在利用单线程对参考视频的编码码流中每个视频帧的编码数据包进行解码时,所述参考视频中每个视频帧的编码数据包解码所消耗的解码耗时;
基于所述参考视频中每个视频帧的编码数据包的解码耗时,从所述参考视频中确定解码耗时为目标耗时的参考视频帧;
获取所述参考视频帧的参考编码数据包的字节数,并获取所述参考视频的视频分辨率;
基于所述参考编码数据包的字节数以及所述参考视频的视频分辨率,确定对所述参考编码数据包进行解码所需的解码运算量,并将所述参考编码数据包的解码运算量作为所述单线程所具有的解码运算量。
在一种实现方式中,所述确定单元502,具体用于:
当比较结果为所述目标编码数据包的解码运算量小于或等于所述单线程的解码运算量时,将所述线程数量确定为指定数值;
当比较结果为所述目标编码数据包的解码运算量大于所述单线程的解码运算量时,则基于所述单线程的解码运算量与所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述确定单元502,具体用于:
计算所述目标编码数据包的解码运算量与所述单线程的解码运算量之间的比值;
对所述比值以目标取整方式进行取整,并将取整结果作为对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述获取单元501,具体用于:
获取针对目标视频的视频文件;所述视频文件是对目标视频进行编码处理后的编码码流,并对所述编码码流进行封装得到的文件;
对所述视频文件进行解封装,得到所述目标视频的编码码流。
可以理解,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
请参阅图6,图6是本申请实施例提供的一种计算机设备的结构示意图。计算机设备包括:处理器601、存储器602。可选的,该计算机设备还可包括网络接口603。上述处理器601、存储器602以及网络接口603之间可以交互数据。
上述处理器601可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器602可以包括只读存储器和随机存取存储器,并向处理器601提供程序指令和数据。存储器602的一部分还可以包括非易失性随机存取存储器。其中,所述处理器601调用所述程序指令时用于执行:
获取针对目标视频的编码码流;所述编码码流中包括所述目标视频中每个视频帧对应的编码数据包;
遍历所述目标视频中的视频帧,若当前遍历到目标视频帧时,从所述编码码流中获取所述目标视频帧的目标编码数据包,并确定所述目标编码数据包的字节数;
获取所述目标视频的视频分辨率,并基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量;
调用所述线程数量的线程对所述目标编码数据包进行解码,得到针对所述目标视频帧的解码数据。
在一种实现方式中,所述处理器601,具体用于:
基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的解码运算量;
基于所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述处理器601,具体用于:
基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的参考运算量;
获取所述目标视频帧的字节数,并基于所述目标视频帧的字节数以及所述目标视频的视频分辨率,确定对所述目标视频帧进行解码的复杂度缩放因子;
基于所述参考运算量以及所述复杂度缩放因子,确定对所述目标编码数据包进行解码所需的解码运算量。
在一种实现方式中,所述处理器601,具体用于:
获取单线程所具有的解码运算量;
将所述单线程的解码运算量与所述目标编码数据包的解码运算量进行大小比较,并基于比较结果确定对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述处理器601,具体用于:
获取对所述目标视频进行解码处理的所在设备的目标设备类型;
获取参考设备类型与参考单线程所具有的解码运算量之间的映射关系,基于所述映射关系确定与所述目标设备类型匹配的单线程所具有的解码运算量。
在一种实现方式中,所述处理器601,具体用于:
获取在利用单线程对参考视频的编码码流中每个视频帧的编码数据包进行解码时,所述参考视频中每个视频帧的编码数据包解码所消耗的解码耗时;
基于所述参考视频中每个视频帧的编码数据包的解码耗时,从所述参考视频中确定解码耗时为目标耗时的参考视频帧;
获取所述参考视频帧的参考编码数据包的字节数,并获取所述参考视频的视频分辨率;
基于所述参考编码数据包的字节数以及所述参考视频的视频分辨率,确定对所述参考编码数据包进行解码所需的解码运算量,并将所述参考编码数据包的解码运算量作为所述单线程所具有的解码运算量。
在一种实现方式中,所述处理器601,具体用于:
当比较结果为所述目标编码数据包的解码运算量小于或等于所述单线程的解码运算量时,将所述线程数量确定为指定数值;
当比较结果为所述目标编码数据包的解码运算量大于所述单线程的解码运算量时,则基于所述单线程的解码运算量与所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述处理器601,具体用于:
计算所述目标编码数据包的解码运算量与所述单线程的解码运算量之间的比值;
对所述比值以目标取整方式进行取整,并将取整结果作为对所述目标编码数据包进行解码所需的线程数量。
在一种实现方式中,所述处理器601,具体用于:
获取针对目标视频的视频文件;所述视频文件是对目标视频进行编码处理后的编码码流,并对所述编码码流进行封装得到的文件;
对所述视频文件进行解封装,得到所述目标视频的编码码流。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图2或者图3对应实施例中的视频解码方法的部分或全部步骤。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序指令,程序指令被处理器执行时可实现上述方法中的部分或全部步骤。例如,该程序指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该程序指令,处理器执行该程序指令,使得该计算机设备执行上述各方法的实施例中所执行的步骤。
以上对本申请实施例所提供的一种视频解码方法、装置、计算机设备、介质及产品进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (13)

1.一种视频解码方法,其特征在于,所述方法包括:
获取针对目标视频的编码码流;所述编码码流中包括所述目标视频中每个视频帧对应的编码数据包;
遍历所述目标视频中的视频帧,若当前遍历到目标视频帧时,从所述编码码流中获取所述目标视频帧的目标编码数据包,并确定所述目标编码数据包的字节数;
获取所述目标视频的视频分辨率,并基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量;
调用所述线程数量的线程对所述目标编码数据包进行解码,得到针对所述目标视频帧的解码数据。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量,包括:
基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的解码运算量;
基于所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的解码运算量,包括:
基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的参考运算量;
获取所述目标视频帧的字节数,并基于所述目标视频帧的字节数以及所述目标视频的视频分辨率,确定对所述目标视频帧进行解码的复杂度缩放因子;
基于所述参考运算量以及所述复杂度缩放因子,确定对所述目标编码数据包进行解码所需的解码运算量。
4.根据权利要求2所述的方法,其特征在于,所述基于所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量,包括:
获取单线程所具有的解码运算量;
将所述单线程的解码运算量与所述目标编码数据包的解码运算量进行大小比较,并基于比较结果确定对所述目标编码数据包进行解码所需的线程数量。
5.根据权利要求4所述的方法,其特征在于,所述获取单线程所具有的解码运算量,包括:
获取对所述目标视频进行解码处理的所在设备的目标设备类型;
获取参考设备类型与参考单线程所具有的解码运算量之间的映射关系,基于所述映射关系确定与所述目标设备类型匹配的单线程所具有的解码运算量。
6.根据权利要求4所述的方法,其特征在于,所述获取单线程所具有的解码运算量,包括:
获取在利用单线程对参考视频的编码码流中每个视频帧的编码数据包进行解码时,所述参考视频中每个视频帧的编码数据包解码所消耗的解码耗时;
基于所述参考视频中每个视频帧的编码数据包的解码耗时,从所述参考视频中确定解码耗时为目标耗时的参考视频帧;
获取所述参考视频帧的参考编码数据包的字节数,并获取所述参考视频的视频分辨率;
基于所述参考编码数据包的字节数以及所述参考视频的视频分辨率,确定对所述参考编码数据包进行解码所需的解码运算量,并将所述参考编码数据包的解码运算量作为所述单线程所具有的解码运算量。
7.根据权利要求4所述的方法,其特征在于,所述基于比较结果确定对所述目标编码数据包进行解码所需的线程数量,包括:
当比较结果为所述目标编码数据包的解码运算量小于或等于所述单线程的解码运算量时,将所述线程数量确定为指定数值;
当比较结果为所述目标编码数据包的解码运算量大于所述单线程的解码运算量时,则基于所述单线程的解码运算量与所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量。
8.根据权利要求7所述的方法,其特征在于,所述基于所述单线程的解码运算量与所述目标编码数据包的解码运算量确定对所述目标编码数据包进行解码所需的线程数量,包括:
计算所述目标编码数据包的解码运算量与所述单线程的解码运算量之间的比值;
对所述比值以目标取整方式进行取整,并将取整结果作为对所述目标编码数据包进行解码所需的线程数量。
9.根据权利要求1所述的方法,其特征在于,所述获取针对目标视频的编码码流,包括:
获取针对目标视频的视频文件;所述视频文件是对目标视频进行编码处理后的编码码流,并对所述编码码流进行封装得到的文件;
对所述视频文件进行解封装,得到所述目标视频的编码码流。
10.一种视频解码装置,其特征在于,包括:
获取单元,用于获取针对目标视频的编码码流;所述编码码流中包括所述目标视频中每个视频帧对应的编码数据包;
所述获取单元,还用于遍历所述目标视频中的视频帧,若当前遍历到目标视频帧时,从所述编码码流中获取所述目标视频帧的目标编码数据包,并确定所述目标编码数据包的字节数;
确定单元,用于获取所述目标视频的视频分辨率,并基于所述目标编码数据包的字节数以及所述目标视频的视频分辨率,确定对所述目标编码数据包进行解码所需的线程数量;
解码单元,用于调用所述线程数量的线程对所述目标编码数据包进行解码,得到针对所述目标视频帧的解码数据。
11.一种计算机设备,其特征在于,包括处理器和存储器,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-9任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-9任一项所述的方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括程序指令,所述程序指令被处理器执行时实现权利要求1-9任一项所述方法。
CN202311277450.0A 2023-09-28 2023-09-28 一种视频解码方法、装置、计算机设备、介质及产品 Active CN117440167B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311277450.0A CN117440167B (zh) 2023-09-28 2023-09-28 一种视频解码方法、装置、计算机设备、介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311277450.0A CN117440167B (zh) 2023-09-28 2023-09-28 一种视频解码方法、装置、计算机设备、介质及产品

Publications (2)

Publication Number Publication Date
CN117440167A CN117440167A (zh) 2024-01-23
CN117440167B true CN117440167B (zh) 2024-05-28

Family

ID=89554473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311277450.0A Active CN117440167B (zh) 2023-09-28 2023-09-28 一种视频解码方法、装置、计算机设备、介质及产品

Country Status (1)

Country Link
CN (1) CN117440167B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110876060A (zh) * 2018-08-31 2020-03-10 网宿科技股份有限公司 一种编码过程中的码率调整方法及装置
CN112565627A (zh) * 2020-11-30 2021-03-26 天津津航计算技术研究所 一种基于位图叠加的多路视频集中显示设计方法
CN115866268A (zh) * 2022-11-30 2023-03-28 北京广播电视台 基于处理器异构并行计算的超高清视频分层解码方法
CN116170582A (zh) * 2023-02-17 2023-05-26 腾讯科技(深圳)有限公司 一种视频数据处理方法、装置、计算机设备以及存储介质
CN116634151A (zh) * 2022-02-11 2023-08-22 腾讯科技(深圳)有限公司 视频处理方法、装置、计算机设备、存储介质及程序产品

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113347421B (zh) * 2021-06-02 2023-07-14 黑芝麻智能科技(上海)有限公司 视频编码和解码方法、装置和计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110876060A (zh) * 2018-08-31 2020-03-10 网宿科技股份有限公司 一种编码过程中的码率调整方法及装置
CN112565627A (zh) * 2020-11-30 2021-03-26 天津津航计算技术研究所 一种基于位图叠加的多路视频集中显示设计方法
CN116634151A (zh) * 2022-02-11 2023-08-22 腾讯科技(深圳)有限公司 视频处理方法、装置、计算机设备、存储介质及程序产品
CN115866268A (zh) * 2022-11-30 2023-03-28 北京广播电视台 基于处理器异构并行计算的超高清视频分层解码方法
CN116170582A (zh) * 2023-02-17 2023-05-26 腾讯科技(深圳)有限公司 一种视频数据处理方法、装置、计算机设备以及存储介质

Also Published As

Publication number Publication date
CN117440167A (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
US11936884B2 (en) Coded-block-flag coding and derivation
CN110636346B (zh) 一种码率自适应切换方法、装置、电子设备及存储介质
WO2017219896A1 (zh) 视频流的传输方法及装置
CN103733632B (zh) 带宽变化连接上的动态比特率调节
US20210168418A1 (en) Method and device for controlling video transcoding code rate
US20130223509A1 (en) Content network optimization utilizing source media characteristics
US11012742B2 (en) Video scrambling method and device with adaptive mode selection, network camera and readable storage medium
US20200351504A1 (en) Differential adaptive bitrate streaming based on scene complexity
US10003626B2 (en) Adaptive real-time transcoding method and streaming server therefor
CN114222194A (zh) 一种视频码流调整方法、装置及系统
JP2004507985A (ja) Cpuの負荷を安定させるためにスケーラブルビデオを動的に適応復号化するためのシステム及び方法
CN114205662B (zh) iOS端的低延迟视频渲染方法及装置
CN113286146B (zh) 媒体数据处理方法、装置、设备以及存储介质
US20240080487A1 (en) Method, apparatus for processing media data, computer device and storage medium
Ko et al. Implementation and evaluation of fast mobile VNC systems
CN116634151A (zh) 视频处理方法、装置、计算机设备、存储介质及程序产品
CN117440167B (zh) 一种视频解码方法、装置、计算机设备、介质及产品
US20120265858A1 (en) Streaming portions of a quilted graphic 2d image representation for rendering into a digital asset
US9083954B2 (en) Video processing method and system and related device
WO2023071469A1 (zh) 视频处理方法、电子设备及存储介质
CN114422792B (zh) 视频图像压缩方法、装置、设备及存储介质
WO2012154157A1 (en) Apparatus and method for dynamically changing encoding scheme based on resource utilization
CN117440159A (zh) 一种视频解码方法、装置、计算机设备及介质
US7423652B2 (en) Apparatus and method for digital video decoding
CN115118921B (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