CN111355981B - 视频数据播放方法、装置、存储介质及电子设备 - Google Patents

视频数据播放方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN111355981B
CN111355981B CN202010149729.0A CN202010149729A CN111355981B CN 111355981 B CN111355981 B CN 111355981B CN 202010149729 A CN202010149729 A CN 202010149729A CN 111355981 B CN111355981 B CN 111355981B
Authority
CN
China
Prior art keywords
coding
frame data
frame
node
layer
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
CN202010149729.0A
Other languages
English (en)
Other versions
CN111355981A (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010149729.0A priority Critical patent/CN111355981B/zh
Publication of CN111355981A publication Critical patent/CN111355981A/zh
Application granted granted Critical
Publication of CN111355981B publication Critical patent/CN111355981B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • 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
    • 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/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例公开了一种视频数据播放方法、装置、存储介质及电子设备,其中,方法包括:获取待播放视频的播放倍数,基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。采用本申请实施例,可以缩短视频数据解码的时间,进而提高视频数据的快速播放效率。

Description

视频数据播放方法、装置、存储介质及电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种视频数据播放方法、装置、存储介质及电子设备。
背景技术
随着视频播放技术的发展和终端的普及,用户可以在终端上播放视频,来丰富自己的生活。在视频播放时,时常会进行倍速播放,如用户可以选择以2倍、4倍等倍数来播放视频数据。
待播放视频在编码时通常采用IPPP编码模式,即IPPP…IPPP…IPPP…编码模式,IPPP编码模式中的I帧为独立编码帧,独立编码帧在编码时不依赖其他帧,可独立解码还原视频图像,P帧为参考编码帧,参考编码帧编码需要参考其前一帧I帧或P帧,不能独立编码,解码时也需要参考其前一帧。
目前,对待播放视频以一定倍数(如2倍、4倍等)快速播放时,需要对采用IPPP编码模式的视频帧数据从第一个I帧开始,从头到尾把所有的帧数据解码出来,然后根据播放倍数每隔一定帧间隔进行播放。当待播放视频的帧数据较多时,需要花费较长的时间进行视频数据解码,进而影响视频数据的快速播放效率。
发明内容
本申请实施例提供了一种视频数据播放方法、装置、存储介质及电子设备,可以缩短视频数据解码的时间,进而提高视频数据的快速播放效率。所述技术方案如下:
第一方面,本申请实施例提供了一种视频数据播放方法,所述方法包括:
获取待播放视频的播放倍数;
基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合;
对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
第二方面,本申请实施例提供了一种视频数据播放装置,所述装置包括:
播放倍数获取模块,用于获取待播放视频的播放倍数;
编码层集合确定模块,用于基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合;
帧数据解码模块,用于对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请一个或多个实施例中,终端在获取到待播放视频的播放倍数,基于所述播放倍数,可以在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,通过对所述编码层集合进行帧数据解码就可以实现待播放视频的倍数播放,而不需要对待播放视频的所有帧数据进行解码,可以缩短视频数据解码的时间,进而提高了视频数据的快速播放效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种视频数据播放方法的流程示意图;
图2是本申请实施例提供的一种视频数据播放方法涉及的视频文件界面示意图;
图3是本申请实施例提供的一种视频数据播放方法涉及的待播放视频的界面示意图;
图4a是本申请实施例提供的一种视频数据播放方法涉及的满二叉树的编码结构示意图;
图4b是本申请实施例提供的一种视频数据播放方法涉及的满三叉树的编码结构示意图;
图5是本申请实施例提供的一种视频数据播放方法涉及的拖拽播放视频的界面示意图;
图6是本申请实施例提供的一种视频数据播放方法涉及的帧结构的场景示意图;
图7是本申请实施例提供的另一种视频数据播放方法的流程示意图;
图8是本申请实施例提供的一种视频数据播放方法涉及的编码交叉树的层结构示意图;
图9是本申请实施例提供的一种视频数据播放方法涉及的满交叉树的结构示意图;
图10是本申请实施例提供的一种视频数据播放方法涉及的原始帧数据编号的示意图;
图11是本申请实施例提供的视频数据播放方法涉及的一种编码交叉树的结点关系的示意图;
图12是本申请实施例提供的视频数据播放方法涉及的排列原始帧数据的场景示意图;
图13是本申请实施例提供的一种视频数据播放装置的结构示意图;
图14是本申请实施例提供的一种编码交叉树生成模块的结构示意图;
图15是本申请实施例提供的一种帧数据排列单元的结构示意图;
图16是本申请实施例提供的一种帧数据编码单元的结构示意图;
图17是本申请实施例提供的一种编码层集合确定模块的结构示意图;
图18是本申请实施例提供的另一种视频数据播放装置的结构示意图;
图19是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面结合具体的实施例对本申请进行详细说明。
在一个实施例中,如图1所示,特提出了一种视频数据播放方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的视频数据播放装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。其中,本申请实施例中的视频数据播放装置可以为终端,包括但不限于:个人电脑、平板电脑、手持设备、车载设备、服务器、计算设备或连接到无线调制解调器的其它处理设备等。
具体的,该视频数据播放方法包括:
步骤101:获取待播放视频的播放倍数。
所述待播放视频可以理解为用户某一时刻(如当前时刻)需要播放的视频数据,所述视频数据可以包括影像、摄像、图像、图片、照片、文字等。
一般来说,在播放视频时,存储的待播放视频的格式不同于能够在显示屏上显示的格式。因此,要对待播放视频进行解码,然后才能在终端所包含的显示器上播放。为了提高播放速度的均匀性,一般将待播放视频先按照解码的顺序先放入缓冲区,然后再从缓冲区中顺序取出解码后的解码帧数据进行上屏播放。因此,首先将待播放视频中的帧顺序解码成解码帧数据,并放入缓冲区。解码帧数据是指对待播放视频的帧解码后得到的帧数据。在实际应用中,解码成的解码帧数据并非直接上屏显示(即直接在终端所包含的显示屏上显示),而是要根据用户所输入的播放指令对已解码的帧数据进行相应的播放,如以某一播放速度播放视频、以某一时间点对应的帧数据开始播放带播放的视频,以某一播放速度播放待播放视频,就需要按照本申请实施例的视频数据播放方法对缓冲区的解码帧数据进行播放,具体视频数据播放方法的实施步骤见下述释义。
所述播放倍数可以理解为用户选择播放待播放视频进行播放的播放速度,以播放倍数可以用来表征待播放视频进行倍数播放(如加快或减慢视频播放速率)时的程度,如播放倍数为2,即对待播放视频进行2倍快速播放。
具体的,终端在当前显示界面显示至少一个视频文件的图标,所述终端含有触控屏,触控屏具有感应用户触摸操作的功能。触控屏的结构至少包括4个部分:屏幕玻璃层,传感器薄膜,显示面板层,控制器板,其中传感器薄膜有触摸感应器层,含有多种感应器,例如压力传感器、位置感应器等等,当用户在终端的当前显示界面上触控所述待播放视频的图标时,终端的触控屏能够通过其中的传感器获取其触控的位置参数。然后对所述位置参数进行处理,识别到所述位置参数对应的显示界面上的“待播放视频”的图标被触控,终端可以加载“待播放视频”的播放页面,接收用户针对“待播放视频”的播放页面的倍数播放操作,终端通过识别所述倍数播放操作可以获取到所述“待播放视频”的播放倍数,如播放倍数可以是1倍播放、2倍播放、4倍播放等。
例如:如图2所示,图2界面中包含多个视频文件图标,当用户选中终端屏幕上的视频文件图标-视频1时,具体通过触控终端触控屏的屏幕玻璃层,终端的触控屏通过传感器薄膜中的位置传感器获取其触控“视频1”图标的位置参数,然后对所述位置参数进行处理,加载“待播放视频”的播放页面,如图3所示,图3是一种终端“待播放视频”的播放页面,用户可以在图3所示的界面中选择播放倍数,具体为用户可以触控“倍数框”中的各倍数播放选项,如用户可以选择目标播放倍数-“2倍播放”,此时,终端即接收到用户针对“待播放视频1”的播放页面的输入的某一播放倍数的倍数播放操作,终端通过识别所述倍数播放操作可以获取到所述“待播放视频1”的播放倍数为“2倍播放”。
可选的,所述待播放视频的倍数播放操作可以是通过外部设备完成的,例如,用户可以通过连接终端的鼠标选中终端的显示界面的待播放视频的图标输入指定播放倍数(如2倍)的倍数播放操作;可以是用户通过连接终端的键盘或者触摸板输入相应指令进行的;可以是用户通过语音输入某一倍数播放待播放视频的指令,例如语音输入2倍播放倍数播放视频1;可以是用户通过摄像头采集手势控制指令完成以特定的播放倍数播放待播放视频的操作,还可以是通过触控移动终端的物理按键(开关机键、音量键等)输入的针对所述待播放视频的倍数播放操作等。
步骤102:基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合。
所述编码交叉树可以理解为在对原始帧数据(即未经视频编码的原始帧图像)进行视频编码时的一种编码交叉树划分的编码结构。
在本申请实施例中,所述编码交叉树通常可以是满编码交叉树,该满编码交叉树任意一个结点或者是叶子结点均有N(N为正整数)棵子树,同时叶子结点都集中在N叉树的最下面一层上,这样的N叉树称为满N叉树,采用满N叉树结构进行编码的交叉树即满编码交叉树。如满二叉树、满三叉树、满四叉树等等。
其中,如图4a所示,图4a是一种满二叉树的编码结构示意图,该二叉树任意一个结点或者是叶子结点均有两棵子树,同时叶子结点都集中在二叉树的最下面一层上,这样的二叉树称为满二叉树。
其中,如图4b所示,图4b是一种满三叉树的编码结构示意图,该三叉树任意一个结点或者是叶子结点均有三棵子树,同时叶子结点都集中在三叉树的最下面一层上,这样的三叉树称为满三叉树。
所述编码层集合为终端基于播放倍数确定的待解码的编码交叉树的包含至少一个编码层的集合,例如,完成2倍播放速度播放,确定的编码层集合可以为编码交叉树的第一层和第二层的帧数据。
具体的,终端通常会对应一套倍数播放的解码规则,终端在获取到待播放视频的播放倍数之后,具体终端先获取所述播放倍数的对数值,将所述编码交叉树的编码层数与所述对数值的差值作为解码层数值,然后进一步确定编码层集合,具体以编码交叉树为任一满编码N叉树为例,解码层数值X的计算模型可以如下所示
X=C-logNn
其中,C为编码交叉树的层数,N为编码交叉树的树叉值,如满二叉树的树叉值为2、满四叉树的树叉值为4,n为播放倍数。
具体的,基于上述解码层数值X的计算模型,上述编码交叉树的层数C、编码交叉树的树叉值N为在对带播放视频进行编码之前,基于编码规则确定的,终端在获取到所述待播放视频的播放倍数n之后,将所述n输入至上述解码层数值X的计算模型中进行数学计算即可输出解码层数值;
例如,以编码交叉树为3层满二叉树为例,3层满二叉树的编码结构示意图如图4a所示,则编码交叉树的层数C为3,编码交叉树的树叉值N为2,获取到的待播放视频的播放倍数n为2,则根据上述解码层数值X的计算模型输入n值,进行模型计算,则输出解码层数值为2。需要说明的是,以满编码交叉树为满二叉树、层数为C进行编码,对应解码时解码对应的解码层集合就可以实现1倍、2倍、4倍、8倍...2C-1倍播放(C>0)。
又例如,以编码交叉树为3层满三叉树为例,3层满三叉树的编码结构示意图如图4b所示,则编码交叉树的层数C为3,编码交叉树的树叉值N为3,获取到的待播放视频的播放倍数n为3,则根据上述解码层数值X的计算模型输入n值,进行模型计算,则输出解码层数值为2。需要说明的是,以满编码交叉树为满三叉树、层数为C进行编码,对应解码时解码对应的解码层集合就可以实现1倍、3倍、9倍...3C-1倍播放(C>0)。
此时终端将第一层至所述解码层数值指示的目标层即可作为待解码的编码层集合,其中所述第一层为各编码交叉树顶层节点组成,所述解码层数值2指示的目标层为2,即各编码交叉树的第2层,此时第一层至所述解码层数指示的目标层即为第一层和第二层。终端将第一层至所述解码层数值指示的目标层作为待解码的编码层集合。通常,不同编码交叉树指示的同一编码帧数据在编码完成之后,实际指示的为同一存储单元,如图4a中的第一棵编码树的第一层的结点1、第二层的结点1以及第三层的结点1指示的均为同一编码帧数据-“第一帧”,该帧数据在编码完成之后实际指示同一存储单元,在具体实施方式方式中可以采用帧数据继承的方式第一层的结点1先编码时,第二层的结点1以及第三层的结点1对第一层的结点1进行继承。故,在实际对待播放视频从第一帧开始倍数播放之前,对帧数据进行解码,上述举例中所述编码层集合可以是第一层和第二层。
步骤103:对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
其中,所述编码树各层的原始帧数据(如YUV数据,Y为亮度分量,UV为色度分量,YUV为一种视频数据格式)在编码时,编码树各层的帧数据编码通常可以是采用IPPP编码模式确定各编码层原始帧数据的编码类型。IPPP编码模式:即是IPPP…IPPP…IPPP…编码模式,每隔一定数量的P帧之后,插入一个I帧编码。例如:GOP(I帧间隔)为30的视频,每隔29个P帧之后,插入一个I帧编码。I帧为独立编码,不依赖其他帧,可独立解码还原YUV画面。P帧为P帧编码需要参考其前一帧,不能独立编码,解码也需要参考其前一帧,在本申请实施例中参照IPPP编码模式确定各编码层原始帧数据的编码类型,即确定某原始帧数据以独立编码类型或参考编码类型进行编码,具体编码的过程基于本实施例的初始编码树对各层所包含结点上的原始帧数据进行编码,具体编码过程可参考下一实施例,以下将针对解码过程进行描述。
具体的,终端在对待播放视频进行解码时,可以先获取待播放视频的视频解码信息,如:1080*720的分辨率信息、H.264的视频格式、编码交叉树结构、GOP(I帧间隔)信息等解码信息,然后对所包含的视频解码器根据视频解码信息初始化视频解码器(如H.264)内部变量与状态,在执行本申请实施例的所述视频数据播放方法确定待解码的编码层集合之后,依次对所述编码交叉树的各层的帧数据进行解码,如所述编码层集合为包含第一编码层和第二编码层的编码层集合,其中终端控制解码器对第一编码层至第二编码层的帧数据进行解码时,可以是同步或异步进行的,即对编码交叉树解码第一编码层各结点对应的帧数据解码时间和对编码交叉树解码第二编码层各结点对应的帧数据解码时间可以不分先后;
具体在对编码交叉树的编码层的各结点对应的帧数据进行解码时,按照该结点对应的编码类型控制解码器进行解码,若该结点对应的帧数据的编码类型为独立编码,即为I帧编码,由于I帧为独立编码帧,是GOP的基础帧(第一帧),描述了图像背景和运动主体的详情,不需要参考其他画面而生成,可以理解的是I帧为帧内编码帧,是一个全帧压缩编码帧,当该结点的帧数据为独立编码帧(即I帧)时,编码过程中将全帧图像数据信息进行压缩编码及传输,解码时终端控制所包含的解码器采用帧内解码的方式,即仅用I帧数据就可重构完整的图像,如完整的YUV画面;若该结点对应的帧数据的编码类型为参考编码,即为P帧编码,由于P帧为参考编码帧I帧后面的编码帧,解码P帧需要参考同一层前面的I帧和/或P帧来预测解码,P帧在编码时表示的是这一帧数据与之前的一个关键帧I帧(或前面的参考帧P帧)的差别,故解码时需要用之前同一层缓存的画面叠加上本帧定义的差别(即P帧定义的差别)从而解码生成最终的画面(也就是差别帧、P帧没有完整画面数据,只有与前一帧的画面差别的数据),具体终端在调用解码器在解码该结点对应的P帧数据时,对P帧进行预测重构处理:该层P帧是以其前面同一层I帧为参考帧,获取该结点同一层对应的P帧最近时间点指示的目标I帧,在目标I帧中获取P帧图像点的预测值和运动矢量,取预测差值和运动矢量一起传送至解码器,在接收端解码器根据运动矢量从I帧找出P帧某点的预测差值相加来即得到P帧某图像点的值从而得到完整的P帧所对应的图像,如完整的YUV画面。
在一种可行的实施方式中,终端可以只对解码层数值X对应的编码交叉树的编码层进行解码,即从编码交叉树的编码层X的第一个结点解码至最后一个结点的帧数据,然后在终端所包含的显示屏上播放解码后的所述帧数据,即可完成对待播放视频的某一特定倍数的播放。
需要说明的是,终端在对待播放视频进行倍数播放时,终端可以是采用实时播放对应的解码方式进行工作的,即终端可以在解码待播放视频的部分帧数据(如解码某一编码层的前30帧数据)之后即可对已解码的帧数据进行播放,勿需等待对待播放视频倍数播放所对应的全部帧数据解码完后开始播放。
在一种具体的实施场景中,用户在终端当前显示界面播放待播放视频1,用户可以操作播放器进度条拖拽到某一播放时间点,并以某一播放倍数进行播放,如图5所示,图5是一种拖拽播放视频的界面示意图,用户采用触控操作的方式向终端输入的播放操作为:视频1拖拽至“00:34”播放,播放倍数:2倍。则终端执行本申请实施例的所述视频数据播放方法,如下:
其中,根据播放倍数确定待解码的目标层(即目标编码层)可以参考步骤102,此处不再赘述。
其中,以编码交叉树为3层满二叉树为例,3层满二叉树的编码结构示意图如图4a所示,则编码交叉树的层数C为3,编码交叉树的树叉值N为2,获取到的待播放视频的播放倍数n为2,则根据上述解码层数值X的计算模型输入n值,进行模型计算,则输出解码层数值为2,即目标层为第二层。
其中,以编码交叉树为3层满三叉树为例,3层满三叉树的编码结构示意图如图4b所示,则编码交叉树的层数C为3,编码交叉树的树叉值N为3,获取到的待播放视频的播放倍数n为3,则根据上述解码层数值X的计算模型输入n值,进行模型计算,则输出解码层数值为2,即目标层为第二层。
终端实现拖动到某一时间点且以倍数播放,此时可以获取待播放视频的拖动时间点,然后确定所述拖动时间点对应的目标帧数据,在所述目标层中确定所述目标帧数据对应的目标结点。
所述拖动时间点可以理解为待播放视频的本次拖动倍数播放的起始播放时间点,如上述的视频1拖拽至“00:34”播放,则拖动时间点为“00:34”。
然后根据待播放视频的各帧数据对应的播放时间点,在待播放视频的各帧数据确定所述拖动时间点对应的目标帧数据,如拖动时间点为“00:34”对应的帧数据,这一帧数据即目标帧数据,实际播放中,终端会以该目标帧数据进行播放。在确定目标帧数据-第n帧数据后,然后在目标层如第2层确定第n帧数据所在的目标结点,以三层满二叉树为例,目标结点可以表示为“(n+1)/2”,该目标结点所对应的帧数据即解码完成之后开始播放的“00:34”对应的帧数据。
此时终端判断该目标结点对应的目标帧数据的编码类型;
在实际应用中,采用IPPP编码模式确定每一原始帧数据的类型,具体编码参照初始编码树的类型进行编码,同一层的一个独立编码帧(即I帧)和若干个参考编码帧(即P帧)组成一个GOP画面组,GOP(group ofpictures)指的是两个独立编码帧(即I帧)之间的间隔,如GOP为120,如果是720p60的规格的话,那就是2s一次I帧,I帧即Intra-codedpicture(帧内编码图像帧),不参考其他图像帧,只利用本帧的信息进行编码;P帧即Predictive-codedPicture(预测编码图像帧),利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码。
在本申请实施例中,终端可判断所述目标帧数据的编码类型,具体为编码时的GOP值和该目标帧数据的帧数目进行计算,即可确定该目标帧数据的编码类型。
1)当所述目标帧数据为独立编码帧时,终端可以直接在所述编码树的所述目标层从所述目标结点进行帧数据解码,具体根据从目标结点开始的各结点的编码类型,按照编码类型进行相应类型的解码,当该结点的帧数据为独立编码帧(即I帧)时,编码过程中将全帧图像数据信息进行压缩编码及传输,解码时终端控制所包含的解码器采用帧内解码的方式,即仅用I帧数据就可重构完整的图像;当该结点对应的帧数据的编码类型为参考编码,即为P帧编码,由于P帧为参考编码帧I帧后面的编码帧,解码P帧需要参考同一层前面的I帧和/或P帧来预测解码,解码时需要用之前同一层缓存的画面叠加上本帧定义的差别对P帧进行预测重构处理:P帧是以同一层I帧为参考帧,获取该结点同一层对应的P帧最近时间点指示的目标I帧,在目标I帧中获取P帧图像点的预测值和运动矢量,取预测差值和运动矢量一起传送至解码器,在接收端解码器根据运动矢量从I帧找出P帧某点的预测差值相加来即得到P帧某图像点的值从而得到完整的P帧所对应的图像;在解码相应数目的帧数据(如60帧数据)之后,终端可以从目标帧数据开始播放解码后的所述帧数据,以实现从拖动时间点开始拖动播放;或,待该目标层从目标结点开始的该目标层的所有帧数据之后,终端从目标帧数据开始播放解码后的所述帧数据,以实现从拖动时间点开始拖动播放。
2)当所述目标帧数据为参考编码帧时,终端通常无法直接在所述编码树的所述目标层从所述目标结点进行帧数据解码以还原原始图像,此时终端可以在所述编码树的目标层确定距离所述目标结点的最近的参考结点,所述参考结点的帧数据为独立编码帧,基于该参考结点的独立编码帧进行解码。以下将结合图示进行具体说明,如下:
在一种具体的实施场景中,如图6所示,图6是一种帧结构的场景示意图,在图6中,一个分片对应一编码交叉树的一个目标层各结点的所有帧数据,如分片1可以表示第一个满二叉编码树的目标层-第二层各各结点的所有帧数据,由各分片(如分片1、分片2....分片n)组成待播放视频实现某一播放倍数的所有帧数据,如各编码交叉树目标层的所有帧数据。假设每个分片的长度对应播放时间为10s,则“00:34”对应的帧数据在第4个分片中,即第4个满二叉树的第二层的目标结点上。所述目标结点在第4个满二叉树的第二层的第5个GOP分组中,目标结点对应的帧数据为P帧。
终端此时需要根据该目标结点在所述4个编码树的目标层确定距离所述目标结点的最近的参考结点,所述参考结点的帧数据为独立编码帧,可以理解的是确定第5个GOP分组的第一帧即I帧所对应的参考结点,具体可以根据GOP值、目标结点对应帧数据的数目确定,在所述编码树的所述目标层从所述参考结点进行帧数据解码,即从参考结点I开始进行解码,可以理解的是从参考结点I帧进行解码,在解码第5个GOP分组的各帧图像时,从同一层参考结点I帧中获取P帧图像点的预测值和运动矢量,取预测差值和运动矢量一起传送至解码器,在接收端解码器根据运动矢量从I帧找出P帧某点的预测差值相加来即得到P帧某图像点的值从而得到完整的P帧所对应的图像,可以理解的是采用这种方式可以完成对目标结点P帧以后目标层的各帧数据解码;在解码相应数目的帧数据(如60帧数据)之后,终端可以从目标帧数据开始播放解码后的所述帧数据,以实现从拖动时间点开始拖动播放;或,待该目标层从目标结点开始的该目标层的所有帧数据之后,终端从目标帧数据开始播放解码后的所述帧数据,以实现从拖动时间点开始拖动播放。
在一种可行的实施方式中,编码采用任一树叉值为N、层数为C的满编码交叉树进行编码,通常对应解码时解码对应的解码层集合可以实现N0倍、N1倍、N2倍、N3倍...NC-1倍播放(C>0)。采用这种编码方式,可以实现非NC-1倍播放,具体如下:
1、若要实现非NC-1倍播放,可以确定小于X且与NC-1的数值距离最近的目标值Y;
2、将Y作为待播放的倍数n带入上述计算模型中,输出解码层数值X,从而确定编码层集合;
3、然后对所述编码层集合进行帧数据解码,确定间隔丢帧数W,W=Y-X;
4、在各帧数据中,在每Y帧数据中丢弃W帧帧数据,通常优选丢失参考编码帧数据,其中,待丢弃的W帧数据可以在每Y帧数据中任取W帧参考编码帧。得到丢弃之后的待播放的已解码帧数据集合;
5、对已解码的帧数据集合进行播放。
如:以编码交叉树为5层满二叉树为例,5层满编码二叉树的编码结构为例,通常对应解码时解码对应的解码层集合可以实现1倍、2倍、4倍、8倍...2C-1倍播放(C>0),当要实现X倍播放,X为非NC-1的数(即X与NC-1不同),可以确定大于X且NC-1数值距离最近的目标值Y,如X=7倍播放,小于X且与NC-1数值距离最近的目标值Y为4;将Y作为待播放的倍数n(即n=4)带入上述计算模型中,输出解码层数值X,从而确定编码层集合;然后对所述编码层集合进行帧数据解码,确定丢帧数W,W=7-4=3;在各帧数据中,在每7帧数据中丢弃3帧参考编码帧数据,从而得到丢弃之后的待播放的已解码帧数据集合。最后对已解码的帧数据集合进行播放即可实现7倍播放。
在本申请实施例中,终端在获取到待播放视频的播放倍数,基于所述播放倍数,可以在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,通过对所述编码层集合进行帧数据解码就可以实现待播放视频的倍数播放,而不需要对待播放视频的所有帧数据进行解码,可以缩短视频数据解码的时间,进而提高了视频数据的快速播放效率;同时,可以基于拖动时间点和播放倍数确定编码交叉树中待解码层的目标结点或参考结点处解码帧数据,从目标结点对应的帧数据开始播放,实现拖动倍数播放的解码方式简单,在缩短视频数据解码的时间的同时也降低了终端视频数据播放时的功耗。
请参见图7,图7是本申请提出的一种视频数据播放方法的另一种实施例的流程示意图。具体的:
步骤201:获取待播放视频在编码前对应的至少一帧原始帧数据的总帧数,配置初始交叉树的层数以及类型。
所述原始帧数据可以理解为原始图片文件(或原始图像文件)对应的各帧数据,该原始图片文件可以是由开发人员完成对图像制作后所输入的图像、可以是从其它端接收的图像、可以是采用视频拍摄装置录制的未经编码的原始图像等等,以常见的慢动作视频为例,慢动作视频通常为一种高帧率录像(High frame rate recording,HFR),HFR高帧率录像通常是视频拍摄装置如camera录制的N帧YUV数据,所述YUV数据为一种视频数据格式,Y为亮度分量,UV为色度分量,其中所述原始帧数据还可以是三原色(Red GreenBlue,RGB)数据。
所述帧就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。一帧就是一副静止的画面,连续的帧就形成动画,如视频图像等。通常帧数可以理解为在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。所述总帧数即原始图片文件所对应的帧图像的总数目,如一个原始图片文件由12800帧图像组成,则原始图片文件的总帧数即12800。
所述初始交叉树可以理解为未对原始帧数据进行编码的编码交叉树;
所述初始交叉树的层数又称结点层次,如图8所示,图8是一种编码交叉树的层结构示意图,从根结点(即一颗编码交叉树的顶点)开始定义起,根为第一层,根的孩子为第二层,以此类推,图8表示了所示编码交叉树的层次关系,所述层数表示该编码交叉树的最大层次数,也可以理解为树的深度或高度。
所述初始交叉树的类型定义了一个编码交叉树的结构关系,常见的初始交叉树可以是二叉树、三叉树、四叉树、满二叉树等,在本申请实施例中,所述编码交叉树优选为满编码交叉树,所述满编码交叉树任意一个结点或者是叶子结点均有N(N为正整数)棵子树,同时叶子结点都集中在N叉树的最下面一层上,这样的N叉树称为满N叉树,采用满N叉树结构进行编码的交叉树即满编码交叉树。如满二叉树、满三叉树、满四叉树等等。
具体的,终端可以首先获取待播放视频在编码前对应的至少一帧原始帧数据的总帧数,具体可以从原始图片文件的图片头信息数据段中获取到,所述图片头信息通常包含数据段时延信息、总帧数、全局颜色表等信息,然后根据总帧数,通常在实际应用中,终端保存有所述总帧数与所述初始交叉树的层数以及类型的对应关系,终端可以根据所述对应关系确定初始交叉树的层数以及类型,然后配置初始交叉树的层数以及类型,如根据总帧数M确定初始交叉树的层数为3层、类型为满二叉树。
其中,所述层数与播放视频的播放倍数有关,可以理解的是,终端可以根据实际应用环境确定编码初始交叉树的层数,如根据终端上播放器应用设计时的播放倍数确定层数。
需要说明的是,在本申请实施例中,所述初始交叉树的类型优选为满编码交叉树,采用满编码交叉树进行编码相对于不规则的交叉树来说,满编码交叉树的编码速度更快,数据编码的功耗更低。
步骤202:根据所述总帧数、所述层数以及所述类型,确定所述初始交叉树的个数。
具体的,终端在根据原始帧数据的总帧数,配置完初始交叉树的层数以及类型之后,可以根据所述总帧数、所述层数以及所述类型,计算所述初始交叉树的个数。
在本申请实施例中,所述初始编码树优选为满编码交叉树,根据所述类型可以确定满交叉树的分叉值n,即一个满交叉树根节点下子树的数目,如图9所示,图9是一种满交叉树的结构示意图,在图9中,一个满编码交叉树根节点下子树的数目为n,根据n值的数目来表示满编码交叉树,如n值为3则为满三叉树、n值为2则为满二叉树,等等。
具体的,终端对初始交叉树的层数进行配置,编码配置的编码层次以N表示,即满交叉树的层次为n,待播放视频在编码前对应的至少一帧原始帧数据的总帧数为M,则对所有原始帧数据按前后顺序一共可分成满交叉树的个数X可由下式计算得到,如下:
X=M/nN-1
将所述总帧数、所述层数、所述类型指示的初始交叉树的分叉值输入至上式中,即可计算得到待编码的初始交叉树的个数。
例如,编码层次为N=3,编码帧数M=8,初始交叉树的分叉值n=2,即可分为8/2(3 -1)=2个满二叉树进行编码。
又例如,编码层次为N=3,编码帧数M=18,初始交叉树的分叉值n=3,即可分为18/2(3-1)=3个满三叉树进行编码。
步骤203:获取所述至少一帧原始帧数据中各原始帧数据对应的帧时间,按照所述帧时间的先后顺序确定所述各原始帧数据对应的编号。
具体的,原始图片文件(或原始图像文件)对应的各原始帧数据在图像制作时,或采用视频拍摄装置录制的时候,各原始帧数据会对应一个时间节点,终端可以获取各原始帧数据所对应的时间戳,根据各时间戳指示的所述帧时间的先后顺序对所有需要编码原始帧数据进行编号。
例如,原始帧数据对应的总帧数为M,则终端在获取到各原始帧数据所对应的时间戳,以时间戳对应的时间节点对基准,对各原始帧数据依次编号,具体为按照帧时间顺序从1开始编号第一帧、第二帧、第三帧……第M帧,如图10所示,图10是一种原始帧数据编号的示意图,终端按照所述帧时间的先后顺序确定所述各原始帧数据对应的编号。
步骤204:按照所述编号的先后顺序以及所述初始交叉树的个数,建立各原始帧数据与所述初始交叉树的对应关系。
具体的,通常初始交叉树有若干编码层的各结点构成,按照所述编号的先后顺序和所述初始交叉树的个数,可以先确定各编码交叉树分别对应的帧数据,如第1帧至第30帧与第一个编码交叉树对应、第31帧至第60帧与第二个编码交叉树对应等,然后在依次确定各编码交叉树包含所有结点对应的帧数据的编号,如第1帧至第30帧与第一个编码交叉树对应,则一种对应方式为:从该编码交叉树的最后一层开始确定各结点与所述原始帧数据的对应关系,在最后一层各结点对应的结点树与原始帧数据的编号一致,即最后一层的第1个结点对应第1帧原始帧数据、最后一层的第2个结点对应第2帧原始帧数据、....最后一层的第n个结点对应第n帧原始帧数据,在依次确定完最后一层各结点分别对应的原始帧数据的编号之后,然后确定最后第二层的各结点分别对应的原始帧数据的编号,需要说明的是在依次确定完最后一层各结点分别对应的原始帧数据的编号之后,其余各层的结点按照:任一结点的对应的原始帧数据的编号与该结点的上层父结点的原始帧数据的编号一致,按照该原则即可确定各编码交叉树全部结点与原始帧数据的编号,从而建立各原始帧数据与所述初始交叉树的对应关系。
以下将对编码交叉树的结点关系进行详细释义,如图11所示,图11是一种编码交叉树的结点关系的示意图,图11是一种交叉树,交叉树中每个结点上结点为其父结点,左下结点为其左孩子结点,右下结点为其右孩子结点,同层之间的结点称为兄弟结点。如结点1,与结点1相连接的上层结点为结点1的父结点,结点1的下层左结点为结点1的左子结点,结点1的下层右结点为结点1的右子结点,又如结点2,与结点2相连接的上层结点为结点2的父结点,结点2的下层左结点为结点2的左子结点,结点2的下层右结点为结点2的右子结点,
其中,假设编码交叉树层数为n,在建立第n层各结点与原始帧数据的编号对应关系之后,然后确定第n-1层,按照任一结点的对应的原始帧数据的编号与该结点的上层父结点的原始帧数据的编号一致的原则,可建立第n-1层各结点与原始帧数据的编号对应关系,同理依次确定第n-2层、第n-3层、第n-4层.....第一层,在完成第一层各结点与原始帧数据的编号对应关系之后,即建立各原始帧数据与所述初始交叉树的对应关系。
步骤205:按照所述对应关系、所述编号的先后顺序以及预设编码规则,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上。
所述预设编码规则可以理解为相应编号原始帧数据的编码类型以及编码参照关系。通常所述编码类型可以包括预测编码、变换编码、量化编码和熵编码,熵编码则可以包括哈夫曼编码、算数编码等。还可以采用固定量化参数(Quantization Parameter,QP)的方式来稳定不同帧之间的质量等。
在本申请实施例中:终端可以采用IPPP模式对原始帧数据如YUV数据确定各编号原始帧数据的编码类型,如按照原始帧数据的编号,第一帧YUV数据为独立编码类型,即I帧类型,I帧即为帧内预测帧,一个GOP画面组的其余原始帧数据为参考编码类型,即P帧类型,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量。需要说明的是,本申请实施例中,按照IPPP模式对原始帧数据如YUV数据确定各编号原始帧数据的编码类型,根据编码交叉树的结构对各结点上对应的原始帧数据按照编码规则进行编码,具体编码规则可参考以下的详细释义。终端按照所述对应关系、所述编号的先后顺序以及预设编码规则,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上。
例如,如图12所示,图12是一种排列原始帧数据的场景示意图,以图12中的初始交叉树为满二叉树、层数为3层为例,根据步骤205建立的各原始帧数据与所述初始交叉树的对应关系,将相应个数的原始帧数据分配至各初始交叉树,并依次将所述原始帧数据排列在每个所述初始交叉树中的结点上。如将第1帧数据至第4帧数据分配至第一个初始交叉树,然后根据对应关系,将第1帧数据至第4帧数据排列在第一个所述初始交叉树中的结点上。
步骤206:对各结点上的原始帧数据进行编码,生成待播放视频对应的至少一个编码交叉树。
在一种具体的实施方式中,在对各结点上的原始帧数据进行编码时,首先从第一棵初始交叉树的顶层节点的第一帧进行编码,在第一个初始交叉树的顶层节点的第一帧编码完成之后,对第一个初始交叉树的第二层的各节点对应的原始帧数据进行编码,同理,依次逐层编码完成第一个初始交叉树各层所有节点对应的原始帧数据,此时即完成了对第一个初始交叉树的上所有结点上原始帧数据的编码,然后同理依次编码第二个初始交叉树、.....第n个初始交叉树。
在一种具体的实施方式中,在对各结点上的原始帧数据进行编码时,首先从第一棵初始交叉树的顶层节点的第一帧进行编码,在第一个初始交叉树的顶层节点的第一帧编码完成之后,可以先对第一层各初始交叉树的顶层结点的原始帧数据进行编码,同理在第一层编码完之后,编码第二层各初始交叉树结点的原始帧数据,同理逐层完成从第一层到最后一层各初始交叉树所有结点的原始数据编码。
在一种具体的实施方式中,在对各结点上的原始帧数据进行编码时,首先从第一棵初始交叉树的顶层节点的第一帧进行编码,在第一个初始交叉树的顶层节点的第一帧编码完成之后,可以对第一层各初始交叉树的顶层结点的原始帧数据进行编码,需要说明的是,在某一初始交叉树的顶层结点上的原始帧数据,可以并行对该初始交叉树的其他结点上的原始帧数据进行编码,如在第一层各初始交叉树的顶层结点的原始帧数据进行编码时,当第二个初始交叉树的顶层结点的第五原始帧数据编码完成之后,可以对第二个初始交叉树的第二层的结点3以及结点4进行编码,采用这种并行的方式,完成从第一个初始交叉树到最后一个初始交叉树编码结点上原始帧数据的编码过程。
其中,上述实施方式仅表示各初始编码树的编码先后顺序,在具体对初始编码树上各结点进行编码过程,具体如下:
终端在对初始编码树各所述结点上原始帧数据进行编码时,获取各所述结点上原始帧数据的编码类型。
其中,所述编码类型为参考编码类型或独立编码类型,可以采用IPPP编码模式确定各编码层原始帧数据的编码类型。例如:GOP(I帧间隔)为30的原始帧数据,从第一帧即I帧开始,每隔29个P帧之后,编码一个I帧编码。I帧为采用独立编码方式对原始帧数据编码生成的,编码时不依赖其他帧,可独立解码还原图像。P帧为P帧编码需要参考其前一帧,不能独立编码,解码也需要参考其前一帧,在本申请实施例中参照IPPP编码模式确定各编码层原始帧数据的编码类型,即确定某原始帧数据以独立编码类型或参考编码类型进行编码,具体编码的过程基于本实施例的初始编码树对各层所包含结点上的原始帧数据进行编码,其中,
1、当各所述结点中目标结点上原始帧数据的编码类型为独立编码类型时,可以理解的是终端需要对该目标结点上原始帧数据采用独立编码的方式进行独立编码,在对所述目标结点上原始帧数据采用独立编码方式进行编码,编码过程中将全帧图像数据信息采用独立编码(即帧内编码)的方式进行压缩编码,生成独立编码帧。
需要说明的是,在对该目标结点上的独立编码帧进行解码时,终端控制所包含的解码器采用帧内解码的方式,即仅用I帧数据就可重构完整的帧数据所对应的图像画面。
2、当各所述结点中目标结点上原始帧数据的编码类型为参考编码类型时,可以理解的是终端需要对该目标结点上原始帧数据采用参考编码的方式参考同一层的前一已编码的帧数据(I帧或P帧)进行参考编码,终端具体获取所述目标结点的同层左结点上帧数据对所述目标结点上原始帧数据采用参考编码方式进行编码,以图12中的第三层的结点4为例进行说明,此时终端需要获取所述目标结点-“第三层的结点4”的同层左结点-“第三层的结点3”上帧数据-“第三帧”采用参考编码方式进行编码,在编码时表示的是这一帧数据与之前的一个关键帧I帧(或前面的参考帧P帧)的差别,从而生成参考编码帧。
需要说明的是,在对该目标结点上的参考编码帧进行解码时,终端控制所包含的解码器采用帧间解码的方式,解码时需要用之前同一层缓存的画面叠加上本帧定义的差别(即P帧定义的差别)从而解码生成最终的画面(也就是差别帧、P帧没有完整画面数据,只有与前一帧的画面差别的数据),具体终端在调用解码器在解码该结点对应的P帧数据时,对P帧进行预测重构处理:该层P帧是以其前面同一层的前一已编码的帧数据(I帧或P帧)为参考帧,获取该结点同一层对应的P帧最近时间点指示的目标I帧,在目标I帧中获取P帧图像点的预测值和运动矢量,取预测差值和运动矢量一起传送至解码器,在接收端解码器根据运动矢量从I帧找出P帧某点的预测差值相加来即得到P帧某图像点的值从而得到完整的P帧所对应的图像,如完整的YUV画面。
3、当各所述结点中目标结点为上层父结点的左子结点时,如以图12为例,假设目标结点为第二层第结点1,第二层第结点1的上层父结点即为第一层结点1,此时目标结点“第二层第结点1”为上层父结点“第一层结点1”的左子结点,“第二层第结点1”与“第一层结点1”均对应原始帧数据的第一帧,通常对于任一结点而言,该结点的父节点通常先编码,而“第一层结点1”对应的原始帧数据的第一帧已经编码完成,此时终端可以无需重新对原始帧数据的第一帧进行编码,可以直接对父节点的“第一层结点1”以编码完成的帧数据进行继承,即终端将所述目标结点上的原始帧数据更新为上层父结点的目标帧数据,通常所述目标帧数据为所述独立编码帧或所述参考编码帧。
在各所述结点编码完成后,即可生成待播放视频对应的至少一个编码交叉树。
步骤207:获取待播放视频的播放倍数。
具体可参照步骤101,此处不再赘述。
步骤208:基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合。
具体可参照步骤102,此处不再赘述。
步骤209:对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
具体可参照步骤103,此处不再赘述。
在本申请实施例中,终端基于初始交叉树对待播放视频的至少一帧原始帧数据进行编码,从而生成待播放视频对应的各编码交叉树。终端在获取到待播放视频的播放倍数,基于所述播放倍数,可以在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,通过对所述编码层集合进行帧数据解码就可以实现待播放视频的倍数播放,而不需要对待播放视频的所有帧数据进行解码,可以缩短视频数据解码的时间,进而提高了视频数据的快速播放效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图13,其示出了本申请一个示例性实施例提供的视频数据播放装置的结构示意图。该视频数据播放装置可以通过软件、硬件或者两者的结合实现成为装置的全部或一部分。该装置1包括播放倍数获取模块11、编码层集合确定模块12和帧数据解码模块13。
播放倍数获取模块11,用于获取待播放视频的播放倍数;
编码层集合确定模块12,用于基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合;
帧数据解码模块13,用于对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
可选的,如图18所示,所述装置1,还包括:
初始交叉树配置模块14,用于获取待播放视频在编码前对应的至少一帧原始帧数据的总帧数,配置初始交叉树的层数以及类型;
初始交叉树确定模块15,用于根据所述总帧数、所述层数以及所述类型,确定所述初始交叉树的个数;
编码交叉树生成模块16,用于基于所述至少一帧原始帧数据,对每个所述初始编码树进行数据编码,生成所述待播放视频对应的至少一个编码交叉树。
可选的,如图14所示,所述编码交叉树生成模块16,包括:
帧数据编号确定单元161,用于获取所述至少一帧原始帧数据中各原始帧数据对应的帧时间,按照所述帧时间的先后顺序确定所述各原始帧数据对应的编号;
帧数据排列单元162,用于按照所述编号的先后顺序,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上;
帧数据编码单元163,用于对各结点上的原始帧数据进行编码,生成待播放视频对应的至少一个编码交叉树。
可选的,如图15所示,所述帧数据排列单元162,包括:
对应关系建立子单元1621,用于按照所述编号的先后顺序以及所述初始交叉树的个数,建立各原始帧数据与所述初始交叉树的对应关系;
帧数据排列子单元1622,用于按照所述对应关系、所述编号的先后顺序以及预设编码规则,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上。
可选的,如图16所示,所述帧数据编码单元163,包括:
编码类型获取子单元1631,用于获取各所述结点上原始帧数据的编码类型;
编码帧编码子单元1632,用于当各所述结点中目标结点上原始帧数据的编码类型为独立编码类型时,对所述目标结点上原始帧数据采用独立编码方式进行编码,生成独立编码帧;
所述编码帧编码子单元1632,还用于当各所述结点中目标结点上原始帧数据的编码类型为参考编码类型时,根据所述目标结点的同层左结点上帧数据对所述目标结点上原始帧数据采用参考编码方式进行编码,生成参考编码帧;
编码交叉树生成子单元1633,用于各所述结点编码完成后,生成待播放视频对应的至少一个编码交叉树。
可选的,所述编码帧编码子单元1632,具体用于:
当各所述结点中目标结点为上层父结点的左子结点时,将所述目标结点上的原始帧数据更新为上层父结点的目标帧数据,所述目标帧数据包括所述独立编码帧或所述参考编码帧。
可选的,所述初始交叉树为满编码交叉树。
可选的,如图17所示,所述编码层集合确定模块12,包括:
解码层数值确定单元121,用于获取所述播放倍数的对数值,将所述编码交叉树的编码层数与所述对数值的差值作为解码层数值;
编码层集合确定单元122,用于将第一层至所述解码层数值指示的目标层作为待解码的编码层集合。
可选的,如图18所示,所述装置1,还包括:
拖动时间点获取模块17,用于获取待播放视频的拖动时间点,确定所述拖动时间点对应的目标帧数据,在所述目标层中确定所述目标帧数据对应的目标结点;
所述帧数据解码模块13,具体用于:
当所述目标帧数据为独立编码帧时,在所述编码树的所述目标层从所述目标结点进行帧数据解码,并播放解码后的所述帧数据;
当所述目标帧数据为参考编码帧时,在所述编码树的目标层确定距离所述目标结点的最近的参考结点,所述参考结点的帧数据为独立编码帧;
在所述编码树的所述目标层从所述参考结点进行帧数据解码,并以所述目标帧数据为帧播放起点开始播放解码后的所述帧数据。
需要说明的是,上述实施例提供的视频数据播放装置在执行视频数据播放方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频数据播放装置与视频数据播放方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本实施例中,终端基于初始交叉树对待播放视频的至少一帧原始帧数据进行编码,从而生成待播放视频对应的各编码交叉树。终端在获取到待播放视频的播放倍数,基于所述播放倍数,可以在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,通过对所述编码层集合进行帧数据解码就可以实现待播放视频的倍数播放,而不需要对待播放视频的所有帧数据进行解码,可以缩短视频数据解码的时间,进而提高了视频数据的快速播放效率。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图12所示实施例的所述视频数据播放方法,具体执行过程可以参见图1-图12所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1-图12所示实施例的所述视频数据播放方法,具体执行过程可以参见图1-图12所示实施例的具体说明,在此不进行赘述。
请参见图19,为本申请实施例提供了一种电子设备的结构示意图。如图19所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个服务器1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行服务器1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable GateArray,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central ProcessingUnit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(RandomAccess Memory,RAM),也可以包括只读存储器(Read-OnlyMemory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图19所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及视频数据播放应用程序。
在图19所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的视频数据播放应用程序,并具体执行以下操作:
获取待播放视频的播放倍数;
基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合;
对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
在一个实施例中,所述处理器1001在执行所述获取待播放视频的播放倍数之前,还执行以下操作:
获取待播放视频在编码前对应的至少一帧原始帧数据的总帧数,配置初始交叉树的层数以及类型;
根据所述总帧数、所述层数以及所述类型,确定所述初始交叉树的个数;
基于所述至少一帧原始帧数据,对每个所述初始编码树进行数据编码,生成所述待播放视频对应的至少一个编码交叉树。
在一个实施例中,所述处理器1001在执行所述述基于所述至少一帧原始帧数据,对每个所述初始编码树进行数据编码,生成所述待播放视频对应的至少一个编码交叉树时,具体执行以下操作:
获取所述至少一帧原始帧数据中各原始帧数据对应的帧时间,按照所述帧时间的先后顺序确定所述各原始帧数据对应的编号;
按照所述编号的先后顺序,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上;
对各结点上的原始帧数据进行编码,生成待播放视频对应的至少一个编码交叉树。
在一个实施例中,所述处理器1001在执行所述按照所述编号的先后顺序,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上时,具体执行以下操作:
按照所述编号的先后顺序以及所述初始交叉树的个数,建立各原始帧数据与所述初始交叉树的对应关系;
按照所述对应关系、所述编号的先后顺序以及预设编码规则,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上。
在一个实施例中,所述处理器1001在执行所述对各结点上的原始帧数据进行编码,生成待播放视频对应的至少一个编码交叉树时,具体执行以下操作:
获取各所述结点上原始帧数据的编码类型;
当各所述结点中目标结点上原始帧数据的编码类型为独立编码类型时,对所述目标结点上原始帧数据采用独立编码方式进行编码,生成独立编码帧;
当各所述结点中目标结点上原始帧数据的编码类型为参考编码类型时,根据所述目标结点的同层左结点上帧数据对所述目标结点上原始帧数据采用参考编码方式进行编码,生成参考编码帧;
各所述结点编码完成后,生成待播放视频对应的至少一个编码交叉树。
在一个实施例中,所述处理器1001在执行所述视频数据播放方法时,具体执行以下操作:
当各所述结点中目标结点为上层父结点的左子结点时,将所述目标结点上的原始帧数据更新为上层父结点的目标帧数据,所述目标帧数据包括所述独立编码帧或所述参考编码帧。
在一个实施例中,所述处理器1001在执行所述视频数据播放方法时,所述初始交叉树为满编码交叉树。
在一个实施例中,所述处理器1001在执行所述基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合时,还执行以下步骤:
获取所述播放倍数的对数值,将所述编码交叉树的编码层数与所述对数值的差值作为解码层数值;
将第一层至所述解码层数值指示的目标层作为待解码的编码层集合。
在一个实施例中,所述处理器1001在执行所述视频数据播放方法时,还执行以下步骤:
获取待播放视频的拖动时间点,确定所述拖动时间点对应的目标帧数据,在所述目标层中确定所述目标帧数据对应的目标结点;
所述对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据,包括:
当所述目标帧数据为独立编码帧时,在所述编码树的所述目标层从所述目标结点进行帧数据解码,并播放解码后的所述帧数据;
当所述目标帧数据为参考编码帧时,在所述编码树的目标层确定距离所述目标结点的最近的参考结点,所述参考结点的帧数据为独立编码帧;
在所述编码树的所述目标层从所述参考结点进行帧数据解码,并以所述目标帧数据为帧播放起点开始播放解码后的所述帧数据。
在本实施例中,终端基于初始交叉树对待播放视频的至少一帧原始帧数据进行编码,从而生成待播放视频对应的各编码交叉树。终端基于初始交叉树对待播放视频的至少一帧原始帧数据进行编码,从而生成待播放视频对应的各编码交叉树。终端在获取到待播放视频的播放倍数,基于所述播放倍数,可以在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,通过对所述编码层集合进行帧数据解码就可以实现待播放视频的倍数播放,而不需要对待播放视频的所有帧数据进行解码,可以缩短视频数据解码的时间,进而提高了视频数据的快速播放效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (11)

1.一种视频数据播放方法,其特征在于,所述方法包括:
获取待播放视频的播放倍数;
基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合;其中,所述至少一个编码交叉树中的各所述编码交叉树的层数相同;所述编码交叉树上任一结点所对应的帧数据与所述结点下一层的左子结点所对应的帧数据相同;
对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据。
2.根据权利要求1所述的方法,其特征在于,所述获取待播放视频的播放倍数之前,还包括:
获取待播放视频在编码前对应的至少一帧原始帧数据的总帧数,配置初始交叉树的层数以及类型;
根据所述总帧数、所述层数以及所述类型,确定所述初始交叉树的个数;
基于所述至少一帧原始帧数据,对每个所述初始编码树进行数据编码,生成所述待播放视频对应的至少一个编码交叉树。
3.根据权利要求2所述的方法,其特征在于,所述基于所述至少一帧原始帧数据,对每个所述初始编码树进行数据编码,生成所述待播放视频对应的至少一个编码交叉树,包括:
获取所述至少一帧原始帧数据中各原始帧数据对应的帧时间,按照所述帧时间的先后顺序确定所述各原始帧数据对应的编号;
按照所述编号的先后顺序,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上;
对各结点上的原始帧数据进行编码,生成待播放视频对应的至少一个编码交叉树。
4.根据权利要求3所述的方法,其特征在于,所述按照所述编号的先后顺序,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上,包括:
按照所述编号的先后顺序以及所述初始交叉树的个数,建立各原始帧数据与所述初始交叉树的对应关系;
按照所述对应关系、所述编号的先后顺序以及预设编码规则,依次将所述原始帧数据排列在每个所述初始交叉树中的结点上。
5.根据权利要求4所述的方法,其特征在于,所述对各结点上的原始帧数据进行编码,生成待播放视频对应的至少一个编码交叉树,包括:
获取各所述结点上原始帧数据的编码类型;
当各所述结点中目标结点上原始帧数据的编码类型为独立编码类型时,对所述目标结点上原始帧数据采用独立编码方式进行编码,生成独立编码帧;
当各所述结点中目标结点上原始帧数据的编码类型为参考编码类型时,根据所述目标结点的同层左结点上帧数据对所述目标结点上原始帧数据采用参考编码方式进行编码,生成参考编码帧;
各所述结点编码完成后,生成待播放视频对应的至少一个编码交叉树。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当各所述结点中目标结点为上层父结点的左子结点时,将所述目标结点上的原始帧数据更新为上层父结点的目标帧数据,所述目标帧数据包括所述独立编码帧或所述参考编码帧。
7.根据权利要求2-4任一项所述的方法,其特征在于,所述初始交叉树为满编码交叉树。
8.根据权利要求1所述的方法,其特征在于,所述基于所述播放倍数,在所述待播放视频对应的至少一个编码交叉树中确定待解码的编码层集合,包括:
获取所述播放倍数的对数值,在所述待播放视频对应的至少一个编码交叉树中,将所述编码交叉树的编码层数与所述对数值的差值作为解码层数值;以及将第一层至所述解码层数值指示的目标层作为待解码的编码层集合。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取待播放视频的拖动时间点,确定所述拖动时间点对应的目标帧数据,在所述目标层中确定所述目标帧数据对应的目标结点;
所述对所述编码层集合进行帧数据解码,并播放解码后的所述帧数据,包括:
当所述目标帧数据为独立编码帧时,在所述编码树的所述目标层从所述目标结点进行帧数据解码,并播放解码后的所述帧数据;
当所述目标帧数据为参考编码帧时,在所述编码树的目标层确定距离所述目标结点的最近的参考结点,所述参考结点的帧数据为独立编码帧;
在所述编码树的所述目标层从所述参考结点进行帧数据解码,并以所述目标帧数据为帧播放起点开始播放解码后的所述帧数据。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~9任意一项的方法步骤。
11.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~9任意一项的方法步骤。
CN202010149729.0A 2020-03-06 2020-03-06 视频数据播放方法、装置、存储介质及电子设备 Active CN111355981B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010149729.0A CN111355981B (zh) 2020-03-06 2020-03-06 视频数据播放方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010149729.0A CN111355981B (zh) 2020-03-06 2020-03-06 视频数据播放方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN111355981A CN111355981A (zh) 2020-06-30
CN111355981B true CN111355981B (zh) 2022-07-12

Family

ID=71194294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010149729.0A Active CN111355981B (zh) 2020-03-06 2020-03-06 视频数据播放方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN111355981B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8254443B2 (en) * 2009-08-28 2012-08-28 Ericsson Television, Inc. Latency rate distortion optimisation
US20150373376A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Systems and methods for selectively signaling different numbers of video signal information syntax structures in a parameter set
CN104602117B (zh) * 2015-01-31 2018-03-16 华为技术有限公司 一种倍速播放视频的方法及装置
CN109756735A (zh) * 2017-11-06 2019-05-14 北京京东尚科信息技术有限公司 用于视频播放的方法及装置

Also Published As

Publication number Publication date
CN111355981A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
CN111681167B (zh) 画质调整方法和装置、存储介质及电子设备
CN105791977B (zh) 基于云服务的虚拟现实数据处理方法、设备及系统
CN113457160B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
WO2022257699A1 (zh) 图像画面显示方法、装置、设备、存储介质及程序产品
CN112533059B (zh) 图像渲染方法、装置、电子设备以及存储介质
CN109819317A (zh) 一种视频处理方法、装置、终端和存储介质
CN115866356A (zh) 一种视频的水印添加方法、装置、设备及存储介质
CN113965751B (zh) 屏幕内容编码方法、装置、设备及存储介质
CN110049347B (zh) 在直播界面配置图像的方法、系统、终端和装置
CN112929743B (zh) 对视频中指定对象添加视频特效的方法、装置及移动端
CN111355981B (zh) 视频数据播放方法、装置、存储介质及电子设备
CN111464812B (zh) 编码解码的方法、系统、装置、存储介质及处理器
CN116993572A (zh) 图像处理方法、装置、电子设备及存储介质
CN111669596B (zh) 视频压缩方法及装置、存储介质、终端
US11615573B2 (en) Method, system, and non-transitory computer-readable record medium for providing animation using sprite JPEG
CN109379630A (zh) 视频处理方法、装置、电子设备及存储介质
JP7378616B2 (ja) Dashコンテンツのインタラクティブ再生のための用途を意図したインタラクティブな選択情報
CN114217758A (zh) 图像显示方法、装置、电子设备及计算机可读存储介质
CN116918329A (zh) 一种视频帧的压缩和视频帧的解压缩方法及装置
CN113596453A (zh) 视频压缩及解压方法、装置、设备及存储介质
CN110798715A (zh) 基于图像串的视频播放方法及系统
CN117596373B (zh) 基于动态数字人形象进行信息展示的方法及电子设备
CN114666600B (zh) 基于不规则模板的数据编码方法、装置、电子设备及介质
CN116419032A (zh) 一种视频播放方法、装置、设备和计算机可读存储介质
CN114205668B (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