CN112911390A - 一种视频数据的播放方法及终端设备 - Google Patents
一种视频数据的播放方法及终端设备 Download PDFInfo
- Publication number
- CN112911390A CN112911390A CN202110501570.9A CN202110501570A CN112911390A CN 112911390 A CN112911390 A CN 112911390A CN 202110501570 A CN202110501570 A CN 202110501570A CN 112911390 A CN112911390 A CN 112911390A
- Authority
- CN
- China
- Prior art keywords
- decoding
- video data
- playing
- video
- hardware
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明适用于多媒体技术领域,提供了一种视频数据的播放方法及终端设备,包括:获得N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数;若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则,通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据;播放所述解码后的视频数据。采用本发明实现了分配的解码资源与接收到的视频数据相匹配,提高了视频播放的实时性,避免了因解码过程出现视频播放卡顿,提高了视频播放的连续性。
Description
技术领域
本发明属于多媒体技术领域,尤其涉及一种视频数据的播放方法及终端设备。
背景技术
随着多媒体技术的不断发展,视频播放的应用领域越来越广泛,例如短视频播放、视频直播以及视频监控等,而在视频在终端设备上进行播放之前,需要对视频数据进行解码,以还原视频数据内的各个视频图像帧,因此如何能够高效地对接收到的视频数据进行解码并播放,成为了影响视频播放技术发展的关键。
现有的视频数据的播放技术,一般是通过处理器的主进程中划分出来的解码线程对接收到的视频数据进行解码,然而随着视频的播放质量越来越高,例如视频分辨率的提高以及帧率的提高,解码线程无法满足现有的视频数据的解码需求,特别在需要进行多路视频实时播放的场景下,解码线程的运算能力无法满足上述视频数据的解码需求,从而降低了视频播放的实时性,甚至会出现播放卡顿的情况,降低了视频播放连续性。
发明内容
有鉴于此,本发明实施例提供了一种视频数据的播放方法及终端设备,以提高视频播放的实时性和连续性。
本发明实施例的第一方面提供了一种视频数据的播放方法,包括:
获得待播放的N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数;
若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则,通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;
若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据;
播放所述解码后的视频数据;
其中,所述软件解码处理包括:
分别获取各路所述视频数据的播放属性信息;
基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作,得到解码后的视频数据;
播放N路所述解码后的视频数据。
本发明实施例的第二方面提供了一种视频数据的播放装置,包括:
视频数据接收单元,用于获得待播放的N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数;
第一解码操作执行单元,用于若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;
软件解码处理单元,用于若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据
视频播放单元,用于播放所述解码后的视频数据;
所述软件解码处理单元,包括:
播放属性信息获取单元,用于分别获取各路所述视频数据的播放属性信息;
第二解码操作执行单元,用于基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作。
本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面的各个步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面的各个步骤。
实施本发明实施例提供的一种视频数据的播放方法及终端设备具有以下有益效果:
本发明实施例在接收到待播放的视频数据时,可以获取终端设备对应的解码部件信息,确定本次解码所需的部件;若该解码部件信息内包含有硬件解码部件,则可以通过硬件解码部件对接收到的N路视频数据进行解码操作,相比与通过处理器创建的解码线程,由于硬件解码部件是具体用于进行图像处理,因此视频解码的效率较高,处理速率较快,能够高效处理高质量甚至多路的视频数据,在终端设备具有硬件解码部件的情况下,可以直接通过硬件解码部件对视频数据进行解码操作;若该解码部件信息内不包含硬件解码部件,则需要通过处理器创建解码线程来进行解码操作,为了能够使得解码线程与所需解码的视频数据相匹配,终端设备会首先识别视频数据对应的播放属性信息,并根据播放数据信息分配与之数量匹配的解码线程,通过多条解码线程对一个视频数据进行解码操作,从而能够使得解码线程的运算能力与视频数据相匹配,并通过解码后的视频数据进行播放,实现了分配的解码资源与接收到的视频数据相匹配,提高了视频播放的实时性,避免了因解码过程出现视频播放卡顿,提高了视频播放的连续性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种视频数据的播放方法的实现流程图;
图2是本发明第二实施例提供的一种视频数据的播放方法S104具体实现流程图;
图3是本发明第三实施例提供的一种视频数据的播放方法具体实现流程图;
图4是本发明第四实施例提供的一种视频数据的播放方法S104具体实现流程图;
图5是本发明第五实施例提供的一种视频数据的播放方法S101具体实现流程图;
图6是本发明第六实施例提供的一种视频数据的播放方法具体实现流程图;
图7是本发明一实施例提供的一种视频数据的播放装置的结构框图;
图8是本发明一实施例提供的一种终端设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例在接收到待播放的视频数据时,可以获取终端设备对应的解码部件信息,确定本次解码所需的部件;若该解码部件信息内包含有硬件解码部件,则可以通过硬件解码部件对接收到的N路视频数据进行解码操作,相比与通过处理器创建的解码线程,由于硬件解码部件是具体用于进行图像处理,因此视频解码的效率较高,处理速率较快,能够高效处理高质量甚至多路的视频数据,因此在终端设备具有硬件解码部件的情况下,可以直接通过硬件解码部件对视频数据进行解码操作;若该解码部件信息内不包含硬件解码部件,则需要通过处理器创建解码线程来进行解码操作,为了能够使得解码线程与所需解码的视频数据相匹配,终端设备会首先识别视频数据对应的播放属性信息,并根据播放数据信息分配与之数量匹配的解码线程,通过多条解码线程对一个视频数据进行解码操作,从而能够使得解码线程的运算能力与视频数据相匹配,并通过解码后的视频数据进行播放,解决了现有的视频数据的播放技术,解码线程的运算能力无法满足上述视频数据的解码需求,从而降低了视频播放的实时性,甚至会出现播放卡顿的情况,降低了视频播放连续性的问题。
在本发明实施例中,流程的执行主体为终端设备,该终端设备包括但不限于:服务器、计算机、智能手机、笔记本电脑以及平板电脑等能够执行视频播放的设备。图1示出了本发明第一实施例提供的视频数据的播放方法的实现流程图,详述如下:
在S101中,获得待播放的N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数。
在本实施例中,终端设备可以对接收到的视频数据进行解码处理,由于视频数据可以通过各种不同的格式进行封装,在终端设备上进行播放之前,需要根据该视频数据对应的格式确定解码算法,并通过对应的加密算法将视频数据转换为各帧视频图像以及对应的音频信号,才能够实现视频数据的播放。举例性地,若视频数据采用动态图像专家组4(Moving Picture Experts Group 4,MP4)的格式进行封装,则可以采用与MP4对应的解码算法对已MP4格式封装的视频数据进行解码,以得到对应的视频图像帧以及音频信号。基于此,终端设备内可以配置有对应的解码部件,通过解码部件对接收到的视频数据进行解码操作,以实现对视频播放的目的。
在本实施例中,上述视频数据可以存储于终端设备的存储器中,上述存储器可以是内部存储单元,例如硬盘存储区域、内存存储区域以及闪存存储区域的等,在该情况下,终端设备可以根据视频数据的文件名或存储路径,确定视频数据在存储器中对应的存储区域,并从上述查询得到的存储区域获取上述待播放的视频数据。上述视频数据还可以是其他设备发送给终端设备的,例如终端设备在响应用户的一播放操作时,可以基于该播放操作确定视频数据所存储的云端服务器,并从云端服务器取回所需播放的视频数据,即视频数据是云端服务器发送给终端设备的,此时,终端设备可以将待播放的视频数据存储于缓存区域,解码部件可以对缓存区域内存储的视频数据进行解码操作,以实现视频播放。
在一种可能的实现方式中,上述发送视频数据给终端设备的其他设备具体为监控终端,在该情况下,上述终端设备具体为监控平台,该监控平台可以接收各个分布于不同区域的监控终端反馈的监控视频(即上述发送的视频数据)。在该情况下,上述监控平台可以同时播放多个不同监控终端对应的监控画面,上述N的值具体为可显示的监控画面的数量,例如监控平台可以最多可以同时监控8个不同区域的监控画面,则上述N的数值可以为8,当然,终端设备可以接收大于8个监控终端发送的视频数据,并从已接收的多个视频数据中选取需要播放的N路视频数据。若接收到的视频数据的数量大于可播放的视频数量,则终端设备可以从接收到的视频数据中选取出需要N个待播放视频数据,选取方式可以根据各个视频数据的播放优先级,选取优先级前N个视频数据作为需要播放的视频数据,也可以接收用户的播放指令,上述播放指令携带有需要播放的监控终端的终端标识,基于终端标识确定所需播放的视频数据。
在一种可能的实现方式中,上述N路视频数据具体为实时视频数据,在该情况下,对端设备(即发送实时视频数据的设备)会将实时采集到的视频数据发送给终端设备,即终端设备并非在接收到所有整个视频文件后,在执行播放操作,而是一边接收对端设备发送视频数据,一边对接收到的视频数据进行解码操作并播放视频数据,此时,上述待播放的视频数据具体为当前接收到的视频数据。终端设备可以配置有预设的缓存帧数,终端设备可以先存储有一定帧数的视频数据后再执行解码以及播放的操作,上述一定帧数即为预设的缓存帧数,从而能够保证实时视频播放的连续性的同时,也能够兼顾到实时性,因此,缓存帧数的大小不易过大,也不易过小,该缓存帧数具体可以根据视频数据对应的播放帧率以及当前的网络状态确定。需要说明的是,终端设备会实时接收通信对端发送视频数据,并同步执行对上一时刻接收到的视频数据进行播放操作。举例性地,终端设备在T时刻接收到通信对端发送的T时刻的视频数据,此时,终端设备可以对T-1时刻的视频数据进行解码操作,并播放T-1时刻的视频数据,并在T+1时刻对T时刻接收到的视频数据进行解码操作,与此同时接收T+1时刻通信对端发送的T+1时刻的视频数据。
在本实施例中,终端设备可以存储有解码部件信息,该解码部件信息用于确定该终端设备可以用于解码的部件信息。具体地,若该终端设备的显卡模块可以支持视频数据的解码操作,则上述解码部件信息内可以包含有硬件解码部件;若该终端设备内的处理器配置有对应的解码线程,则上述解码部件信息可以包含有软件解码部件,其中,上述解码线程具体是通过处理器上运行的主进程中分配得到的,处理器上可以运行可以播放视频数据的应用程序,处理器在运行上述应用程序时会调用至少一条线程,运行上述播放视频数据的应用程序即为上述的解码线程,因此,解码操作具体是依赖播放视频数据的应用程序完成的,因此可以将上述解码线程识别为软件解码部件,而并非通过单独的硬件解码部件来处理解码操作的。
在一种可能的实现方式中,上述解码部件信息可以存储于预设的存储区域,终端设备可以通过读取上述预设存储区域中对应的数据,即可以确定上述的解码部件信息。
在本实施例中,若终端设备检测到上述解码部件信息内包含有硬件解码部件,则执行S102的操作;反之,若终端设备检测到上述解码部件信息内不包含硬件解码部件,则执行S103的操作。
在一种可能的实现方式中,终端设备可以获取视频数据的数据特征信息,基于该数据特征信息生成本次播放操作对应的解码部件信息。由于是否能够通过硬件解码部件对视频数据进行第一解码操作,与视频数据的数据格式、视频分辨率以及视频帧率等相关,在该情况下,终端设备可以获取视频数据对应的数据特征信息,从而生成与之对应的解码部件信息。
在S102中,若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据。
在本实施例中,终端设备在检测到解码部件信息内包含有解码部件时,则表示该终端设备可以通过硬件解码部件来对视频数据进行解码,其中,上述解码部件具体可以为显卡部件,或者其他具有视频数据的解码处理能力的部件。上述显卡部件具体可以为内置于终端设备内,也可以通过串行接口等其他接口与终端设备连接的外接显卡设备。需要说明的是,一个终端设备内可以配置有一个或以上的显示部件,例如终端设备具体为一计算机电脑,该计算机电脑内配置有主板,该主板上集成有第一显卡部件,除了主板上配置的第一显卡部件外,还可以通过总线接入第二显卡部件,当然,若终端设备的总线配置有多个不同的接口,则可以接入两个或以上的显卡部件,在此不对显卡部件的个数进行限定。基于此,终端设备可以从多个显卡部件中选取一个用于进行视频数据的解码操作,即执行上述的第一解码操作,并得到解码后的视频数据。
在一种可能的实现方式中,不同的显卡部件配置有对应的处理优先级。该处理优先级具体是根据对于视频数据的解码能力确定的,终端设备可以从多个显卡部件中选取出处理优先级最高的一个,作为目标显卡部件,并通过目标显卡部件对视频数据进行第一解码操作,从而得到解码后的视频数据。
在一种可能的实现方式中,终端设备可以获取各个显卡部件对应的资源占用率,从而确定各个显卡部件当前的负载情况,基于各个资源占用率选取出目标显卡部件,并通过目标显卡部件对视频数据进行解码操作。
需要说明的是,由于显卡部件具体是用于进行图像处理,因此对于视频数据的解码性能较高,可以同时对多路视频数据进行处理,在该情况下,终端设备可以通过显卡部件对任一路的视频数据进行解码后,在对待解码的其他路的视频数据进行解码,依次类推,直到所有路的视频数据均被解码完成。若上述视频数据具体为实时视频数据,例如包含3路视频数据,分别为视频数据A、视频数据B以及视频数据C。若在T时刻需要对T-1时刻接收到的3路视频数据进行第一解码操作,则终端设备可以通过显卡部件对任一一路视频数据进行解码,例如在T时刻先对T-1时刻的视频数据A进行第一解码操作,然后再对T-1时刻的视频数据B进行第一解码操作,继而在对T-1时刻的视频数据C进行第一解码操作,此时,显卡部件对多个视频数据解码完毕后,进入下一时隙,即T+ 1时刻,此时终端设备可以通过显卡部件对T时刻接收到的多路视频数据进行解码操作,重复执行上述流程。当然,若显卡部件支持多路视频并发解码的情况下,则可以同时对N路视频数据进行第一解码操作,并得到对应的解码后的视频数据。
在S103中,若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据;其中,所述软件解码处理包括:分别获取各路所述视频数据的播放属性信息;基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作。
在本实施例中,终端设备若检测到解码部件内不包含硬件解码部件,即表示该终端设备内没有配置有显卡部件,或者该显卡部件不支持该视频数据的解码操作,例如该显卡部件没有封装有与视频数据关联解码算法,或视频数据的格式与显卡部件不匹配等,则终端设备输出的解码部件信息中则不会包含硬件解码部件,而只包含软解解码部件,在该情况下,终端设备会执行S103的操作,以通过软件解码的方式对视频数据执行第二解码操作。
在本实施例中,终端设备通过软件解码的方式对视频数据进行解码之前,需要获取视频数据的播放属性信息,从而能够根据每个视频数据对应的播放情况,动态调整所需配置的解码线程的个数,以使视频数据与分配的解码资源相匹配,从而能够保证视频数据的解码速率的同时,也能够进一步提高解码过程的准确性。上述播放属性信息具体可以包括有视频数据的分辨率、播放帧率、视频格式、滤镜添加信息等。
需要说明的是,由于不同的视频数据可以是不同的对端设备发送给终端设备的,基于此,不同的视频数据对应的播放属性信息可以是不同的。因此,终端设备会分别获取各个视频数据的播放属性信息,并为各个视频数据分配对应数量的解码线程。
在本实施例中,终端设备可以根据播放属性信息确定解码该视频数据所需消耗的软件资源,并分配与之对应的多条解码线程。其中,若基于播放属性信息确定所需消耗的软件资源越多,则所需配置的解码线程的数量越多;反之,若基于播放属性信息确定所需消耗的软件资源越小,则所需配置的解码线程的数量越小,终端设备可以根据播放属性信息动态调整上述解码线程的条数M。
在一种可能的实现方式中,终端设备可以存储有一对应关系表,该对应关系表内记录有各个不同的播放属性信息关联的解码线程数M,终端设备可以通过查询上述对应关系表,则可以快速确定与之关联的解码线程数M。
需要说明的是,每个视频数据对应的解码线程的个数可以是相同的,也可以是不同的。若各个视频数据对应的播放属性信息是相同的,则每个视频数据对应的解码线程的M的数值可以是相同的;反之,若各个视频数据对应的播放属性信息不同,则视频数据对应的解码线程的M的数值可是相同,也可以是不同的,具体根据视频数据的播放属性信息确定。举例性地,若视频数据A的分辨率为1080P,播放帧率为60帧每秒,则终端设备可以分配3条解码线程对该视频数据进行第二解码操作;若视频数据B的分辨率为480P,播放帧率为24帧每秒,则终端设备可以分配1条解码线程对该视频数据进行第二解码操作。
在S104中,播放所述解码后的视频数据。
在本实施例中,终端设备可以通过硬件解码部件或软件解码部件对视频数据进行解码,并得到各个视频数据对应的解码后的视频数据,即还原了视频数据内各帧视频图像以及音频信号,终端设备可以基于各帧视频图像对应的时间戳以及音频信号对应的时间戳,对齐各帧视频图像以及上述的音频信号,继而进行视频的播放操作。需要说明的是,终端设备可以生成能够同时播放N路视频数据的监控界面,终端设备可以根据各个视频数据关联的显示区域,在上述显示区域内播放解码后的视频数据,以便用户可以在监控界面中同时观看到N路播放的视频。
以上可以看出,本发明实施例提供的一种视频数据的播放方法在接收到待播放的视频数据时,可以获取终端设备对应的解码部件信息,确定本次解码所需的部件;若该解码部件信息内包含有硬件解码部件,则可以通过硬件解码部件对接收到的N路视频数据进行解码操作,相比与通过处理器创建的解码线程,由于硬件解码部件是具体用于进行图像处理,因此视频解码的效率较高,处理速率较快,能够高效处理高质量甚至多路的视频数据,因此在终端设备具有硬件解码部件的情况下,可以直接通过硬件解码部件对视频数据进行解码操作;若该解码部件信息内不包含硬件解码部件,则需要通过处理器创建解码线程来进行解码操作,为了能够使得解码线程与所需解码的视频数据相匹配,终端设备会首先识别视频数据对应的播放属性信息,并根据播放数据信息分配与之数量匹配的解码线程,通过多条解码线程对一个视频数据进行解码操作,从而能够使得解码线程的运算能力与视频数据相匹配,并通过解码后的视频数据进行播放,实现了分配的解码资源与接收到的视频数据相匹配,提高了视频播放的实时性,避免了因解码过程出现视频播放卡顿,提高了视频播放的连续性。
图2示出了本发明第二实施例提供的一种视频数据的播放方法S103的具体实现流程图。参见图2,相对于图1所述实施例,本实施例提供的一种视频数据的播放方法中S103包括:S1031~S1033,具体详述如下:
进一步地,针对每路视频数据,所述基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作,得到解码后的视频数据,包括:
在S1031中,根据该路视频数据的播放属性信息以及解码线程的单位解码速率,确定所述视频数据的解码线程数。
在本实施例中,终端设备可以获取解码线程对应的单位解码速率,该单位解码速率具体是用于确定预设的单位时间内该解码线程可以解码的数据量的大小。若该单位解码速率的数值越大,则表示解码线程在单位时间内能够解码的数据量越大;反之,若该单位解码速率越小,则表示解码线程在单位时间内能够解码的数据量越小。
在一种可能的实现方式中,上述播放属性信息内携带视频数据对应的每帧图像对应的数据量以及目标播放帧率,终端设备可以基于上述每帧图像的数据量的大小以及目标播放帧率确定单位时间所需处理的数据总量,并计算上述数据总量以及单位解码速率之间的比值,从而计算得到上述的M值。需要说明的是,上述M值可以采用进一法确定最后所需配置的解码线程的个数,以确保线程的解码能力不小于视频数据的需求。举例性地,若上述视频数据对应的单位时间的数据总量为100MB,而解码线程的单位解码速率为60MB ,则上述100MB/60MB=1.67,则终端设备会分配2条解码线程来对上述视频数据进行解码处理。
进一步地,作为本申请的另一实施例,S1301具体可以包括S201~S204,具体描述如下:
在S201中,从该路视频数据的播放属性信息中提取该路视频数据的视频分辨率以及播放帧率,并根据所述视频分辨率以及所述播放帧率计算得到目标解码速率。
在本实施例中,播放属性信息内记录有视频数据对应的视频分辨率以及播放帧率,上述播放帧率具体用于限定在单位时间内所需播放的视频图像的帧数,常用单位为帧/每秒,即Fps,若上述播放帧率为60Fps,则表示一秒内会播放60帧视频图像,在播放流畅度较高的场景下,上述播放帧率的数值越大。终端设备可以根据上述视频分辨率,以确定一帧视频图像对应的数据量大小,因此,根据每帧视频图像对应的数据量以及上述的播放帧率,则可以确定在单位时间内所需处理的视频数据的总量,即上述的目标解码速率,计算上述目标解码速率的方式可以为:目标解码速率=视频分辨率*视频尺寸*播放帧率。
在一种可能的实现方式中,上述播放数据信息包含有视频格式,不同的视频格式解码的资源消耗程度不同,举例性地,avi格式的视频数据的资源消耗会大于mp4格式的视频数据的资源消耗,因此,在确定上述的目标解码率时,终端设备可以根据上述的视频格式确定对应的调整系数,则上述目标解码速率的计算方式具体可以调整为:目标解码速率=视频分辨率*视频尺寸*播放帧率*调整系数。
在S202中,根据所述终端设备已占用的运算资源参量以及所有视频数据对应的所述目标解码速率,确定预计资源占用参量。
在本实施例中,终端设备可以获取当前已占用的运算资源参量,即当前处理器的运算资源的占用情况,由于终端设备是通过软件解码部件对视频数据进行解码,而软件解码的处理速率会与当前的占用情况相关,若当前终端设备处于占用率较高的情况下,即终端设备处于满载状态,此时对应的运算效率也会降低;对应地,若终端设备处于空载或低载的状态下,对应的运算效率也会提高。基于此,终端设备在确定了上述视频数据的目标解码速率后,可以预计在执行视频解码时,终端设备的资源占用情况,即得到上述的资源占用参数,从而能够基于上述资源占用参数,以预测解码线程对应的单位解码速率。
需要说明的是,每个视频数据对应的目标解码速率可以是相同的,也可以是不同的,具体根据S201中的计算确定。并且由于各个视频数据时并发执行的,即终端设备会同时对各个视频数据执行解码操作,因此在确定预计资源占用参量时,终端设备需要确定所有视频数据对应的目标解码速率,并基于所有目标解码速率以及当前已占用的运算资源参量来确定预计资源占用参量。
在一种可能的实现方式中,若上述视频数据是实时视频数据,则终端设备是连续接收通信对端发送的实时采集的视频数据,在该情况下,终端设备是持续执行视频解码操作。在该情况下,终端设备会在响应实时视频播放的时刻,执行S201~S203的操作,而在后续接收到实时视频数据时,无需再次确定预计资源占用参量,因为当前的已占用的运算资源参量中,已经包含了对实时视频数据解码所占用的运算资源,可以继续保持原有的解码线程数M对实时视频数据进行解码操作。当然,若实时视频数据的播放属性信息发生变更时,则可以重新确定解码线程数M,并将该实时视频数据已占用的资源参量从上述已占用的运算资源参量中删除后,再确定预计资源占用参量。
在S203中,将所述预计资源占用参量导入预设的解码速率转换算法,确定所述解码线程对应的单位解码速率;所述解码速率转换算法具体为:
在本实施例中,由于单位解码速率的变化情况与资源占用情况之间是一个非线性
关系,因此,通过测试数据验证后确定上述非线性关系与ln函数之间的相似度较高,ln函数
能够较好地表达上述解码线程的单位解码速率与资源占用参量之间的对应关系。基于此,
可以构建得到预计资源占用参量与单位解码速率之间的转换算法,终端设备可以将上述计
算得到的预计资源占用参量导入到上述解码速率转换算法中,从而计算得到单位解码速率
对应的范围值,会在[]
这个范围值内。
在S204中,根据所述目标解码速率与所述单位解码速率之间的比值,确定所需配置的所述解码线程数。
在本实施例中,终端设备可以根据计算得到的单位解码速率以及每个视频数据对应的目标解码速率,确定两者之间的比值,从而确定出对应的解码线程数M。同样地,终端设备可以采用进一法来确定上述的解码线程数M,具体实现过程如上所述,在此不再赘述。
在本申请实施例中,通过获取终端设备已占用的资源参量,以及确定每个视频数据对应的目标解码速率,从而能够预计在对所有视频数据进行解码操作时,对应的预计资源参量,从而能够更为准确地确定上述解码线程在单位时间内对应的单位解码速率,继而能够准确地确定所需配置的解码线程数,提高了解码线程数确定的准确性。
在S1032中,为该路视频数据配置与所述解码线程数相应数量的解码线程。
在S1033中,调用所配置的解码线程对该路视频数据中各帧的视频子数据进行第二解码操作,得到解码后的视频子数据,并根据该路视频子数据在该路视频数据中的帧序号,为所述解码后的视频子数据添加时间戳;之后基于所述时间戳的时间先后次序,依次封装所述解码后的视频子数据,生成该路解码后的视频数据。
在本实施例中,终端设备中的各个解码线程时并行处理的,即同时对同一视频数据进行解码操作,在该情况下,多条不同的解码线程可以从视频数据中提取部分的子数据,即上述的视频子数据,并对该视频子数据进行第二解码操作,从而得到解码后的视频子数据。在一种可能的实现方式中,每个视频子数据关联有对应的时间戳或者是帧序号,各个解码线程会基于上述的时间戳或帧序号依次提取各个视频子数据,并对各个视频子数据进行第二解码操作,特别上述视频数据是实时视频数据,例如视频监控以及直播视频等,能够提高视频播放的实时性。
在本实施例中,每个视频子数据关联有对应的帧序号,终端设备中的任一解码线程在得到解码后的视频子数据后,可以基于上述视频子数据的帧序号为其配置对应的时间戳,从而能够根据时间戳以确定各个解码后的视频子数据的先后播放次序。需要说明的是,由于终端设备在播放视频时,可以根据用户的设置来调整播放的速率,因此上述帧序号与添加的时间戳可以是基于视频数据的原始播放速率确定的,上述时间戳也可以基于上述帧序号以及实际的播放速率后确定的。
在本实施例中,终端设备可以将各个解码线程输出的解码后的视频子数据存储于缓存区域,并根据各个视频子数据对应的帧序号对缓存区域内解码后的视频子数据进行排序,并基于排序后的视频子数据进行封装,从而得到解码后的视频数据。
在本申请实施例中,通过播放属性信息以及解码线程对应的单位解码速率,从而确定出所需配置的解码线程数M,在通过各个解码线程对视频数据进行并行解码的过程中,可以为不同的视频子数据配置对应的时间戳,从而在后续封装时,能够基于各个时间戳确定各个视频子数据对应的播放次序,从而能够保证视频数据内的各个视频图像帧能够基于原本的播放顺序进行播放,提高了解码过程的准确性。
图3示出了本发明第三实施例提供的一种视频数据的播放方法的具体实现流程图。参见图3,相对于图1所述实施例,本实施例提供的一种视频数据的播放方法包括S301~S304,具体详述如下:
进一步地,若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则在通过所述硬件解码部件对N路所述视频数据进行第一解码操作之前,还包括:
在S301中,获取所述硬件解码部件的硬件解码速率,以及确定N路所述视频数据对应的总解码速率。
在本实施例中,终端设备在通过硬件解码部件对N路视频数据进行解码操作之前,需要确定硬件解码部件对应的解码能力,即能否支持同时对N路视频数据进行解码操作。基于此,终端设备可以根据各个视频数据对应的播放属性信息,确定每个视频数据对应的目标解码速率,并基于所有视频数据的目标解码速率计算得到N路视频数据对应的总解码速率。与此同时,终端设备还可以获取硬件解码部件对应的硬件解码速率。上述硬件解码速率可以存储于预设的存储单元内,终端设备可以直接读取对应存储区域的数值,以确定硬件解码部件的硬件解码速率。
在一种可能的实现方式中,终端设备可以获取硬件解码部件对应的型号标识,并基于该型号标识获取与之关联的解码速率,从而能够确定了上述的硬件解码速率。
在本实施例中,若硬件解码部件的硬件解码速率大于或等于上述的总解码速率,则执行S304的操作;反之,若硬件解码速率小于总解码速率,则执行S302以及S303的操作。
在S302中,若所述硬件解码速率小于所述总解码速率,则从所述N路所述视频数据中选取P路所述视频数据,并通过所述硬件解码部件对所述P路所述视频数据进行所述第一解码操作,得到P路所述解码后的视频数据;所述P为小于N的正整数;P路所述视频数据合共的解码速率不大于所述硬件解码速率。
在本实施例中,若检测到硬件解码速率小于总解码速率,则表示硬件解码部件无法支持N路视频数据同时解码,此时需要借助软件解码部件以分担部分的解码任务。基于此,终端设备可以从N路视频数据中选取部分的视频数据交由硬件解码部件进行解码操作,而剩余的其他视频数据可以通过解码线程完成解码操作。其中,从N路视频数据中选取的P路视频数据,是基于硬件解码部件的硬件解码速率确定的,具体地,同时对上述P路视频数据进行解码的速率不大于上述硬件解码速率。即硬件解码部件同时能够对P路视频数据进行解码。
在S303中,通过多条所述解码线程对Q路所述视频数据进行所述软件解码处理,得到Q路所述解码后的视频数据;所述Q为小于N的正整数,且Q满足P+Q=N。
在本实施例中,由于终端设备的硬件解码部件最多同时对P路视频数据进行解码操作,而剩余的视频数据,即Q路视频数据需要通过解码线程进行解码操作,具体的解码过程可以参见上述任一实施例,在此不再赘述。
同样地,为Q路视频数据分配多条解码线程时,可以根据各个视频数据对应的播放属性信息确定所需配置的解码线程数,实现方式同样可以参见上述实施例确定,在此不再赘述。
所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据,具体为:
在S304中,若所述硬件解码速率大于或等于所述总解码速率,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据。
在本实施例中,若检测到硬件解码速率大于或等于总解码速率,则表示硬件解码部件的解码速率能够满足N路视频数据同时解码,此时可以通过硬件解码部件同时对N路视频数据执行第一解码操作,具体描述可以参见S102的相关描述,在此不再赘述。
在本申请实施例中,通过确定硬件解码部件对应的硬件解码速率,并确定硬件解码部件是否支持N路视频数据并行解码,在无法满足N路视频数据同时解码的情况下,可以将视频数据通过解码线程进行解码操作,能够实现动态调整解码方式的目的,提高了解码过程的灵活性。
图4示出了本发明第四实施例提供的一种视频数据的播放方法S104的具体实现流程图。参见图4,相对于图1所述实施例,本实施例提供的一种视频数据的播放方法S103包括:S401~S403,具体详述如下:
进一步地,针对每路视频数据,所述基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作,包括:
在S401中,获取该路视频数据的播放属性信息内的分辨率以及播放帧率,并根据所述分辨率以及所述播放帧率计算资源消耗等级。
在本实施例中,终端设备可以根据视频数据对应的资源消耗等级,在资源消耗较少的情况下,通过单线程来进行视频解码的操作;反之,若该视频数据对应的资源消耗较大,则通过多线程来进行视频解码操作。基于此,终端设备需要分别确定各个视频数据对应的资源消耗情况,此时,可以从播放属性信息中获取该视频数据对应的分辨率以及播放帧率,将上述两个参量导入到预设的消耗等级转换函数内,从而能够计算得到视频数据对应的资源消耗等级;其中,视频数据对应的分辨率的数值越大,则对应的资源消耗等级越高;视频数据对应的播放帧率的数值越大,则对应的资源消耗等级越高。
在S402中,若所述资源消耗等级小于预设的多线程启动阈值,则为该路视频数据配置一条解码线程,以通过所述解码线程对该路视频数据进行所述第二解码操作。
在本实施例中,终端设备若检测到某一视频数据对应的资源消耗等级小于多线程启动阈值,则表示解码该视频数据所需消耗的资源较少,在该情况下,则可以通过单线程对视频数据进行解码操作,因此,可以为该视频数据配置一条解码线程,并通过该解码线程对上述视频数据进行解码操作,得到解码后的视频数据。
在S403中,若所述资源消耗等级大于或等于所述多线程启动阈值,则基于各路视频数据的播放属性信息,分别为相应路的视频数据配置两条以上解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作。
在本实施例中,终端设备若检测到某一视频数据对应的资源消耗等级大于或等于多线程启动阈值,则表示需要通过多线程进行视频数据的解码操作。在执行多线程的解码操作之前,可以确定所需配置的解码线程数M,并在确定上述M的值后,为该视频数据分配对应数量的M条解码线程,并通过M条解码线程对视频数据进行解码,并得到对应的解码后的视频数据。具体解码的过程可以参见上述实施例的内容,在此不再赘述。
在本申请实施例中,通过确定视频数据对应的资源消耗等级,以确定是否需要为视频数据配置多条解码线程,从而能够在资源消耗较少的情况的下,通过单线程对视频数据进行解码;而在资源消耗较大的情况下,通过多线程的方式对视频数据进行解码,能够提高视频解码线程分配的灵活性,实现资源的合理分配。
图5示出了本发明第五实施例提供的一种视频数据的播放方法S101的具体实现流程图。参见图5,相对于图1-4任一项所述实施例,本实施例提供的一种视频数据的播放方法中S101包括:S1011~S1016,具体详述如下:
进一步地,所述获得待播放的N路视频数据,并确定终端设备对应的解码部件信息,包括:
在S1011中,通过预设的测试脚本对所述终端设备的显卡模块进行解码校验测试;所述测试脚本包含训练视频数据。
在本实施例中,终端设备上的解码部件信息可以预先存储于存储器内,也可以通过预设的测试脚本进行自动生成。终端设备可以配置有对应的测试脚本,终端设备可以通过内置的显卡模块来运行上述测试脚本,以确定显卡模块的解码能力,以便显卡模块输出与测试脚本对应的解码数据。
在一种可能的实现方式中,上述测试脚本中的训练视频数据可以为预先存储于终端设备内的任一视频数据,当然,终端设备还可以根据接收到的视频数据的播放属性信息,获取与上述播放属性信息相匹配的训练视频数据,并生成对应的测试脚本。
在S1012中,若在预设的反馈时间内接收到所述显卡模块输出的关于所述训练视频数据的解码数据,则播放所述解码数据,并获取基于所述解码数据对应的播放画面。
在本实施例中,终端设备中的显卡模块支持视频解码的情况下,会在预设的反馈时间内输出对应的解码数据,此时,终端设备可以对显卡模块的解码效果进行评估,以判断终端设备的显卡模块能够准确地对训练视频数据进行解码,以进一步确定显卡模块的可用性。基于此,终端设备在接收到显卡模块对应的解码数据后,可以播放上述解码数据,从而生成训练视频数据对应的播放画面。其中,上述播放画面具体可以在终端设备内置的显示模块上进行显示,也可以不进行显示。
在S1013中,计算所述播放画面内各个视频图像与所述训练视频数据对应的训练图像之间的偏差度。
在本实施例中,终端设备可以从播放画面中获取各帧视频图像,并将各帧视频图像与训练视频数据预先关联各个训练图像进行匹配,若显卡模块能够正常对训练视频数据进行解码操作,则可以输出各帧视频图像应与对应的训练视频数据是一致的,即图像之间的偏差值会小于预设的偏差阈值;反之,若显卡模块无法正常对训练视频数据进行解码操作,则输出的各帧视频图像会与训练视频数据不一致,从而两个图像之间的偏差值会大于或等于预设的偏差阈值,因此,通过比对播放画面中的视频图像与训练视频数据对应的训练图像之间的偏差度,可以确定显卡模块解码的准确性。
在一种可能的实现方式中,终端设备可以计算上述两个图像之间像素值差异的像素点的个数,基于差异的像素点的个数确定两者之间的偏差度。
在S1014中,若各个所述视频图像对应的所述偏差度均小于预设的偏差阈值,则生成用于表示所述终端设备的硬件解码部件支持视频数据解码的解码部件信息。
在本实施例中,若通过显卡模块解码后得到的播放画面中各个视频图像与训练图像之间的偏差度均小于预设的偏差阈值,则表示终端设备的显卡模块对训练视频数据后解码的准确性较高,因此可以识别该显卡模块适用于对视频数据的解码,此时,可以生成用于表示所述终端设备的硬件解码部件支持视频数据解码的解码部件信息。
在S1015中,若任一所述视频图像对应的所述偏差度大于或等于所述偏差阈值,则生成用于表示所述终端设备的硬件解码部件不支持视频数据解码的解码部件信息。
在本实施例中,若通过显卡模块解码后得到的播放画面中任一视频图像与训练图像之间的偏差度均大于或等于预设的偏差阈值,则表示终端设备的显卡模块对训练视频数据后解码的准确性较低,因此可以识别该显卡模块不适用于对视频数据的解码,此时,可以生成只包含软件解码部件的解码部件信息,不推荐通过显卡模块对视频数据进行解码操作,生成用于表示所述终端设备的硬件解码部件不支持视频数据解码的解码部件信息。
在S1016中,若所述反馈时间内未接收到所述显卡模块输出的所述解码数据,生成用于表示不包括所述硬件解码部件的解码部件信息。
在本实施例中,若在预设的反馈时间内没有接收到显卡模块输出的解码数据,则可以该终端设备并没有配置有对应的显卡模块,或者该显卡模块并不具备视频数据的解码功能,在该情况下,终端设备可以生成用于表示不包括所述硬件解码部件的解码部件信息。
在本申请实施例中,通过终端设备的显卡部件运行预设的训练脚本,并基于训练脚本输出对应的解码数据,以确定显卡模块是否具备视频数据的解码能力,并生成对应的解码部件信息,能够提高解码部件信息的准确性。
图6示出了本发明第六实施例提供的一种视频数据的播放方法的具体实现流程图。参见图6,相对于图1-4任一项所述实施例,本实施例提供的一种视频数据的播放方法中的在所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据之后,还包括:S601~S602,具体详述如下:
在S601中,若接收到关于所述硬件解码部件的解码异常信息,则增加预设的异常计数值,并返回执行所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据的操作。
在本实施例中,终端设备在通过硬件解码部件对视频数据进行解码时,若硬件解码部件无法在预设的反馈时间内输出解码后的视频数据,或者视频数据的解码准确率低于预设的准确率阈值,则终端设备会生成一个解码异常信息,该解码异常信息具体可以是硬件解码部件生成的,也可以是终端设备生成的。
在本实施例中,终端设备在接收到上述解码异常信息后,可以对预设的异常计数器进行加一处理,即增加异常计时器对应的异常计数值,并重新通过硬件解码部件对视频数据进行解码,以确定上述异常情况是否为偶发性事件。
在本实施例中,若终端设备中的硬件解码部件在再次对视频数据进行解码后,并没有再次生成上述的解码异常信息,则表示硬件解码部件并没有异常,此时,可以继续通过硬件解码部件对后续的视频数据执行第一解码操作。可选地,可以对上述的异常计数值进行清零处理。
在S602中,若所述异常计数值大于预设的异常阈值,则执行软件解码处理,得到解码后的视频数据。
在本实施例中,若终端设备检测到上述的异常计数值大于预设的异常阈值,则表示硬件解码部件连续多次解码异常,此时可以判定上述硬件解码部件处于异常状态,无法执行视频数据的解码操作,因此可以通过软件解码的方式对视频数据进行解码,因此会为每个视频数据分配对应数量的解码线程,并通过将解码线程对视频数据进行第二解码操作。其中,分配的解码线程的数量可以根据视频数据的播放属性信息确定,具体方式可以参见上面的实施例,在此不再赘述。
在本申请实施例中,通过在硬件解码部件出现异常时,进行异常计数,已确定上述异常情况是否为偶发性异常事件,抑或是硬件解码部件不支持视频数据的解码操作,能够实现对异常事件的自动识别以及修复,提高了终端设备的鲁棒性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图7示出了本发明一实施例提供的一种视频数据的播放装置的结构框图,该终端设备包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。
参见图7,所述视频数据的播放装置包括:
视频数据接收单元71,用于获得待播放的N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数;
第一解码操作执行单元72,用于若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;
软件解码处理单元73,用于若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据
视频播放单元74,用于播放所述解码后的视频数据;
所述软件解码处理单元73,包括:
播放属性信息获取单元,用于分别获取各路所述视频数据的播放属性信息;
第二解码操作执行单元,用于基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作。
可选地,所述第二解码操作执行单元732包括:
解码参数获取单元,用于根据该路视频数据的播放属性信息以及解码线程的单位解码速率,确定所述视频数据的解码线程数;
解码线程配置单元,用于为该路视频数据配置与所述解码线程数相应数量的解码线程;
并行解码单元,用于调用所配置的解码线程对该路视频数据中各帧的视频子数据进行第二解码操作,得到解码后的视频子数据,并根据该路视频子数据在该路视频数据中的帧序号,为所述解码后的视频子数据添加时间戳;之后基于所述时间戳的时间先后次序,依次封装所述解码后的视频子数据,生成该路解码后的视频数据。
可选地,所述解码参数获取单元包括:
目标解码速率确定跟单员,用于从该路视频数据的播放属性信息中提取该路视频数据的视频分辨率以及播放帧率,并根据所述视频分辨率以及所述播放帧率计算得到目标解码速率;
预计资源占用参量确定单元,用于根据所述终端设备已占用的运算资源参量以及所有视频数据对应的所述目标解码速率,确定预计资源占用参量;
单位解码速率确定单元,用于将所述预计资源占用参量导入预设的解码速率转换算法,确定所述解码线程对应的单位解码速率;
解码线程数确定单元,用于根据所述单位解码速率与所述目标解码速率之间的比值,确定所需配置的所述解码线程数;
其中,所述解码速率转换算法具体为:
可选地,所述第一解码操作执行单元72包括:
总解码速率确定单元,用于获取所述硬件解码部件的硬件解码速率,以及确定N路所述视频数据对应的总解码速率;
硬件解码执行单元,用于若所述硬件解码速率大于或等于所述总解码速率,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;
硬件部分解码单元,用于若所述硬件解码速率小于所述总解码速率,则从所述N路所述视频数据中选取P路所述视频数据,并通过所述硬件解码部件对所述P路所述视频数据进行所述第一解码操作,得到P路所述解码后的视频数据;所述P为小于N的正整数;P路所述视频数据合共的解码速率不大于所述硬件解码速率;
软件部分解码单元,用于通过多条所述解码线程对Q路所述视频数据进行所述软件解码处理,得到Q路所述解码后的视频数据;所述Q为小于N的正整数,且Q满足P+Q=N。
可选地,所述第二解码操作执行单元74包括:
资源消耗等级确定单元,用于获取该路视频数据的播放属性信息内的分辨率以及播放帧率,并根据所述分辨率以及所述播放帧率计算资源消耗等级;
单线程解码单元,用于若所述资源消耗等级小于预设的多线程启动阈值,则为该路视频数据配置一条解码线程,以通过所述解码线程对该路视频数据进行所述第二解码操作;
多线程解码单元,用于若所述资源消耗等级大于或等于所述多线程启动阈值,则基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作。
可选地,所述视频数据接收单元71包括:
解码校验测试单元,用于通过预设的测试脚本对所述终端设备的显卡模块进行解码校验测试;所述测试脚本包含训练视频数据;
播放画面获取单元,用于若在预设的反馈时间内接收到所述显卡模块输出的关于所述训练视频数据的解码数据,则播放所述解码数据,并获取基于所述解码数据对应的播放画面;
偏差度计算单元,用于计算所述播放画面内各个视频图像与所述训练视频数据对应的训练图像之间的偏差度;
第一解码部件信息生成单元,用于若各个所述视频图像对应的所述偏差度均小于预设的偏差阈值,则生成用于表示所述终端设备的硬件解码部件支持视频数据解码的解码部件信息;
第二解码部件信息生成单元,用于若任一所述视频图像对应的所述偏差度大于或等于所述偏差阈值,则生成用于表示所述终端设备的硬件解码部件不支持视频数据解码的解码部件信息;
第三解码部件信息生成单元,用于若所述反馈时间内未接收到所述显卡模块输出的所述解码数据,生成用于表示不包括所述硬件解码部件的解码部件信息。
可选地,视频数据的播放装置还包括:
解码异常信息接收单元,用于若接收到关于所述硬件解码部件的解码异常信息,则增加预设的异常计数值,并返回执行所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据的操作;
解码异常响应单元,用于若所述异常计数值大于预设的异常阈值,则执行软件解码处理,得到解码后的视频数据。
因此,本发明实施例提供的终端设备同样可以在接收到待播放的视频数据时,可以获取终端设备对应的解码部件信息,确定本次解码所需的部件;若该解码部件信息内包含有硬件解码部件,则可以通过硬件解码部件对接收到的N路视频数据进行解码操作,相比与通过处理器创建的解码线程,由于硬件解码部件是具体用于进行图像处理,因此视频解码的效率较高,处理速率较快,能够高效处理高质量甚至多路的视频数据,因此在终端设备具有硬件解码部件的情况下,可以直接通过硬件解码部件对视频数据进行解码操作;若该解码部件信息内不包含硬件解码部件,则需要通过处理器创建解码线程来进行解码操作,为了能够使得解码线程与所需解码的视频数据相匹配,终端设备会首先识别视频数据对应的播放属性信息,并根据播放数据信息分配与之数量匹配的解码线程,通过多条解码线程对一个视频数据进行解码操作,从而能够使得解码线程的运算能力与视频数据相匹配,并通过解码后的视频数据进行播放,实现了分配的解码资源与接收到的视频数据相匹配,提高了视频播放的实时性,避免了因解码过程出现视频播放卡顿,提高了视频播放的连续性。
图8是本发明另一实施例提供的一种终端设备的示意图。如图8所示,该实施例的终端设备8包括:处理器80、存储器81以及存储在所述存储器81中并可在所述处理器80上运行的计算机程序82,例如视频数据的播放程序。所述处理器80执行所述计算机程序82时实现上述各个视频数据的播放方法实施例中的步骤,例如图1所示的S101至S104。或者,所述处理器80执行所述计算机程序82时实现上述各装置实施例中各单元的功能,例如图7所示模块71至74功能。
示例性的,所述计算机程序82可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器81中,并由所述处理器80执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序82在所述终端设备8中的执行过程。例如,所述计算机程序82可以被分割成视频数据接收单元、第一解码操作执行单元、播放属性信息获取单元、第二解码操作执行单元以及视频播放单元,各单元具体功能如上所述。
所述终端设备可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是终端设备8的示例,并不构成对终端设备8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器80可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器81可以是所述终端设备8的内部存储单元,例如终端设备8的硬盘或内存。所述存储器81也可以是所述终端设备8的外部存储设备,例如所述终端设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器81还可以既包括所述终端设备8的内部存储单元也包括外部存储设备。所述存储器81用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (9)
1.一种视频数据的播放方法,其特征在于,包括:
获得待播放的N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数;
若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;
若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据;
播放所述解码后的视频数据;
其中,所述软件解码处理包括:
分别获取各路所述视频数据的播放属性信息;
基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作;
所述获得待播放的N路视频数据,并确定终端设备对应的解码部件信息,包括:
通过预设的测试脚本对所述终端设备的显卡模块进行解码校验测试;所述测试脚本包含训练视频数据;
若在预设的反馈时间内接收到所述显卡模块输出的关于所述训练视频数据的解码数据,则播放所述解码数据,并获取基于所述解码数据对应的播放画面;
计算所述播放画面内各个视频图像与所述训练视频数据对应的训练图像之间的偏差度;
若各个所述视频图像对应的所述偏差度均小于预设的偏差阈值,则生成用于表示所述终端设备的硬件解码部件支持视频数据解码的解码部件信息;
若任一所述视频图像对应的所述偏差度大于或等于所述偏差阈值,则生成用于表示所述终端设备的硬件解码部件不支持视频数据解码的解码部件信息;
若所述反馈时间内未接收到所述显卡模块输出的所述解码数据,则生成用于表示不包括所述硬件解码部件的解码部件信息。
2.根据权利要求1所述的播放方法,其特征在于,针对每路视频数据,所述基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作,包括:
根据该路视频数据的播放属性信息以及解码线程的单位解码速率,确定所述视频数据的解码线程数;
为该路视频数据配置与所述解码线程数相应数量的解码线程;
调用所配置的解码线程对该路视频数据中各帧的视频子数据进行第二解码操作,得到解码后的视频子数据,并根据该路视频子数据在该路视频数据中的帧序号,为所述解码后的视频子数据添加时间戳;之后基于所述时间戳的时间先后次序,依次封装所述解码后的视频子数据,生成该路解码后的视频数据。
3.根据权利要求2所述的播放方法,其特征在于,针对每路视频数据,所述根据各路视频数据的播放属性信息以及解码线程的单位解码速率,分别确定各路视频数据的解码线程数,包括:
从该路视频数据的播放属性信息中提取该路视频数据的视频分辨率以及播放帧率,并根据所述视频分辨率以及所述播放帧率计算得到目标解码速率;
根据所述终端设备已占用的运算资源参量以及所有视频数据对应的所述目标解码速率,确定预计资源占用参量;
将所述预计资源占用参量导入预设的解码速率转换算法,确定所述解码线程对应的单位解码速率;
根据所述目标解码速率与所述单位解码速率之间的比值,确定所需配置的所述解码线程数;
其中,所述解码速率转换算法具体为:
4.根据权利要求1所述的播放方法,其特征在于,若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则在通过所述硬件解码部件对N路所述视频数据进行第一解码操作之前,还包括:
获取所述硬件解码部件的硬件解码速率,以及确定N路所述视频数据对应的总解码速率;
若所述硬件解码速率小于所述总解码速率,则从所述N路所述视频数据中选取P路所述视频数据,并通过所述硬件解码部件对所述P路所述视频数据进行所述第一解码操作,得到P路所述解码后的视频数据;所述P为小于N的正整数;P路所述视频数据合共的解码速率不大于所述硬件解码速率;
分别对Q路所述视频数据进行所述软件解码处理,得到Q路所述解码后的视频数据;所述Q为小于N的正整数,且Q满足P+Q=N;
所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据,具体为:
当所述硬件解码速率大于或等于所述总解码速率时,通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据。
5.根据权利要求1所述的播放方法,其特征在于,针对每路视频数据,所述基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作,包括:
获取该路视频数据的播放属性信息内的分辨率以及播放帧率,并根据所述分辨率以及所述播放帧率计算资源消耗等级;
若所述资源消耗等级小于预设的多线程启动阈值,则为该路视频数据配置一条解码线程,以通过所述解码线程对该路视频数据进行所述第二解码操作;
若所述资源消耗等级大于或等于所述多线程启动阈值,则基于各路视频数据的播放属性信息,分别为相应路的视频数据配置两条以上解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作。
6.根据权利要求1-5任一项所述的播放方法,其特征在于,在所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据之后,还包括:
若接收到关于所述硬件解码部件的解码异常信息,则增加预设的异常计数值,并返回执行所述通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据的操作;
若所述异常计数值大于预设的异常阈值,则执行软件解码处理,得到解码后的视频数据。
7.一种视频数据的播放的控制装置,其特征在于,包括:
视频数据接收单元,用于获得待播放的N路视频数据,并确定终端设备对应的解码部件信息;所述N为任意正整数;
第一解码操作执行单元,用于若所述解码部件信息表示所述终端设备的硬件解码部件支持视频数据解码,则通过所述硬件解码部件对N路所述视频数据进行第一解码操作,得到解码后的视频数据;
软件解码处理单元,用于若所述解码部件信息表示所述终端设备不包括所述硬件解码部件或所述硬件解码部件不支持所述视频数据解码,则执行软件解码处理,得到解码后的视频数据;
视频播放单元,用于播放所述解码后的视频数据;
所述软件解码处理单元,包括:
播放属性信息获取单元,用于分别获取各路所述视频数据的播放属性信息;
第二解码操作执行单元,用于基于各路视频数据的播放属性信息,分别为相应路的视频数据配置至少一条解码线程,并基于所配置的解码线程为相应路的视频数据进行第二解码操作;
所述视频数据接收单元包括:
解码校验测试单元,用于通过预设的测试脚本对所述终端设备的显卡模块进行解码校验测试;所述测试脚本包含训练视频数据;
播放画面获取单元,用于若在预设的反馈时间内接收到所述显卡模块输出的关于所述训练视频数据的解码数据,则播放所述解码数据,并获取基于所述解码数据对应的播放画面;
偏差度计算单元,用于计算所述播放画面内各个视频图像与所述训练视频数据对应的训练图像之间的偏差度;
第一解码部件信息生成单元,用于若各个所述视频图像对应的所述偏差度均小于预设的偏差阈值,则生成用于表示所述终端设备的硬件解码部件支持视频数据解码的解码部件信息;
第二解码部件信息生成单元,用于若任一所述视频图像对应的所述偏差度大于或等于所述偏差阈值,则生成用于表示所述终端设备的硬件解码部件不支持视频数据解码的解码部件信息;
第三解码部件信息生成单元,用于若所述反馈时间内未接收到所述显卡模块输出的所述解码数据,生成用于表示不包括所述硬件解码部件的解码部件信息。
8.一种终端设备,其特征在于,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时如权利要求1至6任一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110501570.9A CN112911390B (zh) | 2021-05-08 | 2021-05-08 | 一种视频数据的播放方法及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110501570.9A CN112911390B (zh) | 2021-05-08 | 2021-05-08 | 一种视频数据的播放方法及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112911390A true CN112911390A (zh) | 2021-06-04 |
CN112911390B CN112911390B (zh) | 2021-07-30 |
Family
ID=76109060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110501570.9A Active CN112911390B (zh) | 2021-05-08 | 2021-05-08 | 一种视频数据的播放方法及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112911390B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176962A (zh) * | 2023-11-02 | 2023-12-05 | 中国铁塔股份有限公司 | 一种视频编解码方法、装置及相关设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901153B1 (en) * | 1996-03-14 | 2005-05-31 | Ati Technologies Inc. | Hybrid software/hardware video decoder for personal computer |
CN104683860A (zh) * | 2015-02-02 | 2015-06-03 | 北京神州天脉网络计算机有限公司 | 一种音视频多路并发解码加速卡及其解码加速方法 |
CN105635740A (zh) * | 2014-10-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 对图像进行解码的方法及装置 |
CN106658174A (zh) * | 2016-10-31 | 2017-05-10 | 努比亚技术有限公司 | 一种视频解码终端及方法 |
WO2017096885A1 (zh) * | 2015-12-07 | 2017-06-15 | 乐视控股(北京)有限公司 | 视频播放方法及装置 |
US20180035160A1 (en) * | 2015-09-28 | 2018-02-01 | Tencent Technology (Shenzhen) Company Limited | Video decoding method, server, and mobile terminal |
CN109391843A (zh) * | 2017-08-03 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 在线视频倍速播放方法、装置、介质及智能终端 |
US20200186845A1 (en) * | 2018-12-11 | 2020-06-11 | Amlogic (Shanghai) Co., Ltd. | Time Division Multiplexing Method for Decoding Hardware |
CN111510706A (zh) * | 2020-04-21 | 2020-08-07 | 咪咕文化科技有限公司 | 硬件编、解码支持度检测方法、终端及存储介质 |
CN111835994A (zh) * | 2019-04-16 | 2020-10-27 | 瑞昱半导体股份有限公司 | 多通道视频处理方法与系统 |
-
2021
- 2021-05-08 CN CN202110501570.9A patent/CN112911390B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901153B1 (en) * | 1996-03-14 | 2005-05-31 | Ati Technologies Inc. | Hybrid software/hardware video decoder for personal computer |
CN105635740A (zh) * | 2014-10-27 | 2016-06-01 | 阿里巴巴集团控股有限公司 | 对图像进行解码的方法及装置 |
CN104683860A (zh) * | 2015-02-02 | 2015-06-03 | 北京神州天脉网络计算机有限公司 | 一种音视频多路并发解码加速卡及其解码加速方法 |
US20180035160A1 (en) * | 2015-09-28 | 2018-02-01 | Tencent Technology (Shenzhen) Company Limited | Video decoding method, server, and mobile terminal |
WO2017096885A1 (zh) * | 2015-12-07 | 2017-06-15 | 乐视控股(北京)有限公司 | 视频播放方法及装置 |
CN106658174A (zh) * | 2016-10-31 | 2017-05-10 | 努比亚技术有限公司 | 一种视频解码终端及方法 |
CN109391843A (zh) * | 2017-08-03 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 在线视频倍速播放方法、装置、介质及智能终端 |
US20200186845A1 (en) * | 2018-12-11 | 2020-06-11 | Amlogic (Shanghai) Co., Ltd. | Time Division Multiplexing Method for Decoding Hardware |
CN111835994A (zh) * | 2019-04-16 | 2020-10-27 | 瑞昱半导体股份有限公司 | 多通道视频处理方法与系统 |
CN111510706A (zh) * | 2020-04-21 | 2020-08-07 | 咪咕文化科技有限公司 | 硬件编、解码支持度检测方法、终端及存储介质 |
Non-Patent Citations (3)
Title |
---|
TIAGO DIAS,NUNO ROMA, LEONEL SOUSA: "A Hardware-Software Co-design for H.264/AVG Decoder", 《2010 CONFERENCE ON DESIGN AND ARCHITECTURES FOR SIGNAL AND IMAGE PROCESSING (DASIP)》 * |
何斌等: "基于软硬件协同的AAC和AVS音频可重构解码器", 《电声技术》 * |
李炜锋,于鸿洋: "基于Android的视频软硬解码及渲染的对比研究与实现", 《电视技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117176962A (zh) * | 2023-11-02 | 2023-12-05 | 中国铁塔股份有限公司 | 一种视频编解码方法、装置及相关设备 |
CN117176962B (zh) * | 2023-11-02 | 2024-01-30 | 中国铁塔股份有限公司 | 一种视频编解码方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112911390B (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11297377B2 (en) | Passive data collection from third-party channel applications | |
CN110381322B (zh) | 视频流解码方法、装置、终端设备及存储介质 | |
US8583818B2 (en) | System and method for custom segmentation for streaming video | |
CN110312156B (zh) | 一种视频缓存方法、装置及可读存储介质 | |
EP2712205A2 (en) | Method and apparatus for image data processing, and electronic device including the apparatus | |
CN107155093B (zh) | 一种视频预览方法、装置及设备 | |
CN113542795B (zh) | 视频处理方法、装置、电子设备及计算机可读存储介质 | |
US10601891B2 (en) | Cloud streaming service system and cloud streaming service method for utilizing an optimal GPU for video decoding based on resource conditions, and apparatus for the same | |
CN110381326B (zh) | 视频系统及处理方法、设备与计算机可读介质 | |
CN108259998B (zh) | 播放器及播放控制方法、装置、电子设备及播放系统 | |
JP2023521199A (ja) | ビデオストリーム再生制御方法、機器及び記憶媒体 | |
US20150370522A1 (en) | Display Device And Control Method | |
CN109587511A (zh) | 多设备视频直播方法、设备、系统及存储介质 | |
CN110647366A (zh) | 处理卡顿的方法、装置、终端及存储介质 | |
CN110149538A (zh) | 清晰度的确定方法及装置、终端设备及可读存储介质 | |
CN112911390B (zh) | 一种视频数据的播放方法及终端设备 | |
CN107734360B (zh) | 流媒体服务器的控制方法及装置 | |
CN112672405B (zh) | 功耗计算方法、装置、存储介质、电子设备以及服务器 | |
CN100551016C (zh) | 视频播放系统、视频播放装置、及其控制方法 | |
CN109951737B (zh) | 视频处理方法、装置、电子设备和计算机可读存储介质 | |
CN111741247A (zh) | 一种录像回放的方法、装置及计算机设备 | |
CN106649621B (zh) | 一种显示评论信息的方法及装置 | |
CN114205359A (zh) | 视频渲染协同方法、装置及设备 | |
CN112887742B (zh) | 直播流处理方法、装置、设备及存储介质 | |
CN111050106B (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 |