掌桥专利:专业的专利平台
掌桥专利
首页

视频解码方法、云化机顶盒、物理端机顶盒、介质

文献发布时间:2024-04-18 20:01:55


视频解码方法、云化机顶盒、物理端机顶盒、介质

技术领域

本公开涉及多媒体终端和云计算技术领域,特别涉及一种视频解码方法、一种云化机顶盒、一种物理端机顶盒、一种计算机可读介质。

背景技术

随着大视频业务日益发展成熟,用户对业务体验提出了更高的要求,希望能够拥有更好的UI(User Interface)体验,享受更丰富的增值业务;同时云计算与虚拟化技术的高速发展,因此基于云计算与虚拟化技术的云化机顶盒就运用而生。

对于不支持硬件加速的虚拟机,云端应用播放视频时的解码、渲染只能使用CPU处理,导致虚拟机资源占用高。目前,通常采用桌面流和视频流分离的方式来解决上述问题。

具体地,云化机顶盒接收到视频流后,将视频流转发给物理终端,由物理终端对视频流进行解码和渲染。但是,该方案中存在解码效率低的问题。

发明内容

本公开实施例提供一种视频解码方法、一种云化机顶盒、一种物理端机顶盒、一种计算机可读介质。

作为本公开的第一个方面,提供一种视频解码方法,用于云化机顶盒,所述视频解码方法包括:

将各个待解码的视频帧以视频码流的方式连续地发送给物理端机顶盒;

按照从小到大的顺序将码流中各个待解码的视频帧的显示时间戳PTS值连续地加入PTS队列;

接收所述物理端机顶盒发送的解码反馈;

将接收到的所述解码反馈与当前PTS队列中最小的PTS值进行比较;

根据比较结果判断所述物理端机顶盒是否正常解码;

若所述物理端机顶盒正常解码,删除当前PTS队列中最小的PTS值。

可选地,所述解码反馈包括解码完成的视频帧的PTS值;

在将接收到的所述解码反馈与所述PTS队列中最小的PTS值进行比较的步骤中,利用所述PTS队列中最小的PTS值减去接收到的解码完成的视频帧的PTS值,得到的差值为所述比较结果;

若所述比较结果小于预定数值,则判定所述物理端机顶盒解码正常。

可选地,所述视频解码方法还包括:

若所述比较结果不小于所述预定数值,生成表征无帧解码完成的信息。

可选地,若所述解码反馈为解码失败标识,所述视频解码方法还包括:

生成解码异常信息。

可选地,所述视频解码方法还包括:

若所述物理端机顶盒正常解码,向所述物理端机顶盒发送针对解码完成的视频帧的渲染指令。

作为本公开的第二个方面,提供一种视频解码方法,用于物理端机顶盒,所述视频解码方法包括:

接收视频码流;

按照所述视频码流中各待解码的视频帧的PTS值的顺序依次对各所述待解码的视频帧进行解码,并生成相应的解码反馈;

按照解码顺序,将所述解码反馈发送至云化机顶盒。

可选地,若正常解码,针对解码完成的视频帧,所述解码反馈包括解码完成的视频帧的PTS值。

可选地,若解码异常,所述解码反馈包括解码异常的视频帧的解码失败标识。

可选地,所述视频解码方法还包括:

接收渲染指令;

根据所述渲染指令对相应的解码完成的视频帧进行渲染。

可选地,所述根据所述渲染指令对相应的解码完成的视频帧进行渲染,包括:

确定所述渲染指令对应的解码完成的视频帧的PTS值;

将解码完成的视频帧的PTS值与所述渲染指令对应的PTS值进行比较;

若所述解码完成的视频帧的PTS值不超过所述渲染指令对应的PTS值,则等待预定时间后对所述解码完成的视频帧进行渲染;

若所述解码完成的视频帧的PTS值大于所述渲染指令对应的PTS值,则对所述待渲染帧进行渲染。

作为本公开的第三个方面,提供一种云化机顶盒,所述云化机顶盒包括:

一个或多个第一处理器;

第一存储器,其上存储有一个或多个第一程序,当一个或多个第一程序被一个或多个第一处理器执行,使得一个或多个第一处理器实现本公开第一个方面所提供的视频解码方法;

一个或多个第一I/O接口,连接在第一处理器与第一存储器之间,配置为实现第一处理器与第一存储器的信息交互。

作为本公开的第四个方面,提供一种物理端机顶盒,所述物理端机顶盒包括:

一个或多个第二处理器;

第二存储器,其上存储有一个或多个第二程序,当一个或多个第二程序被一个或多个第二处理器执行,使得一个或多个第二处理器实现本公开第二个方面所提供的视频解码方法;

一个或多个第二I/O接口,连接在第二处理器与第二存储器之间,配置为实现第二处理器与第二存储器的信息交互。

作为本公开的第五个方面,提供一种计算机可读介质,所述计算机可读介质上存储有可执行程序,当所述可执行程度被调用时,能够实现本公开所提供的视频解码方法。

在云化机顶盒建立的PTS队列中的多个PTS值对应多个视频帧。将各个待解码的视频帧以码流的方式发送给物理端机顶盒后,物理端机顶盒也是按照PTS值的从小到大的顺序对接收到的各个待解码帧进行解码。物理端机顶盒每正确解码一个待解码的视频帧,PTS队列中PTS值最小的一个被删除。也就是说,PTS队列是一个动态队列,不停有新的PTS值加入,随着物理端机顶盒不停对各待解码的视频帧正确解码,PTS队列中的PTS值也在逐渐被删除。可以认为,PTS队列中剩余的PTS值所对应的视频帧,正是物理端机顶盒接收到的、且还未解码的视频的视频帧。因此,本公开相当于对物理端机顶盒中的帧解码速率进行了模拟。

在本公开中,物理端机顶盒接收到待解码的视频帧之后不需要与云化机顶盒进行交互,并且物理端机顶盒只需要在对一个视频帧进行解码后,与云化机顶盒进行一次交互。既保证了视频解码的正确进行,又减少了网络延迟对视频解码的影响,提高了物理端机顶盒进行视频解码的效率。

附图说明

图1是相关技术中的云化解码框架;

图2是本公开所提供的视频解码方法的一种实施方式的流程图;

图3是本公开所提供的视频解码方法的另一种实施方式的流程图;

图4是本公开所提供的视频解码方法的还一种实施方式的流程图;

图5是本公开所提供的视频解码方法的再一种实施方式的流程图;

图6是步骤S250的一种实施方式的流程图;

图7是本公开所提供的云化解码框架的一种实施方式的示意图;

图8是本公开所提供的视频解码方法的信令图,其中,物理端机顶盒解码成功;

图9是本公开所提供的视频解码方法的信令图,其中,物理端机顶盒解码失败。

具体实施方式

为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的视频解码方法、云化机顶盒、物理端机顶盒、计算机可读介质进行详细描述。

在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。

在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。

如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。

本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。

除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。

图1中所示的是相关技术中的一种云化解码框架。如图1所示,云化机顶盒包括云端播放器、云端编解码组件MediaCodec,播放器截获码流后,将待解码帧发送给云端MediaCodec,云端MediaCodec将待解码帧发送给物理机顶盒。这样,对每一个视频帧进行解码都包括以下步骤:向物理机顶盒发送待解码视频帧;物理机顶盒解码后上报解码成功、以及该解码成功的视频帧的显示时间戳(PTS,Presentation Time Stamp)值;云化机顶盒向物理机顶盒发送渲染指令。

由于云化机顶盒、以及物理机顶盒之间的接口为同步结构,因此,上述解码过程会涉及三个网络数据交互。当存在网络延时的情况下(例如,30ms),对一帧视频帧进行解码时,仅网络传输时间就需要90ms,这导致了每秒仅能解码11帧视频帧。也就是说,视频解码速率相对较慢。

有鉴于此,作为本公开的第一个方面,提供一种视频解码方法,用于云化机顶盒,如图2所示,所述视频解码方法包括:

在步骤S110中,将各个待解码的视频帧以视频码流的方式连续地发送给物理端机顶盒;

在步骤S120中,按照从小到大的顺序将码流中各个待解码的视频帧的显示时间戳(PTS,Presentation Time Stamp)值连续地加入PTS队列;

在步骤S130中,接收所述物理端机顶盒发送的解码反馈;

在步骤S140中,将接收到的所述解码反馈与当前PTS队列中最小的PTS值进行比较;

在步骤S150中,根据比较结果判断所述物理端机顶盒是否正常解码;

在步骤S160中,若所述物理端机顶盒正常解码,删除当前PTS队列中最小的PTS值。

云化机顶盒截获视频流后,以视频码流的方式将各个待解码的视频帧连续地发给物理端机顶盒,提高了待解码帧的发送效率。

在步骤S120中,将待解码的视频帧的PTS值加入PTS队列,当物理端机顶盒正确解码后,将PTS队列中的最小PTS值删除。

在云化机顶盒建立的PTS队列中的多个PTS值对应多个视频帧。将各个待解码的视频帧以码流的方式发送给物理端机顶盒后,物理端机顶盒也是按照PTS值的从小到大的顺序对接收到的各个待解码帧进行解码。物理端机顶盒每正确解码一个待解码的视频帧,PTS队列中PTS值最小的一个被删除。也就是说,PTS队列是一个动态队列,不停有新的PTS值加入,随着物理端机顶盒不停对各待解码的视频帧正确解码,PTS队列中的PTS值也在逐渐被删除。可以认为,PTS队列中剩余的PTS值所对应的视频帧,正是物理端机顶盒接收到的、且还未解码的视频的视频帧。因此,步骤S120和步骤S160相当于对物理端机顶盒中的帧解码速率进行了模拟。

在本公开中,物理端机顶盒接收到待解码的视频帧之后不需要与云化机顶盒进行交互,并且物理端机顶盒只需要在对一个视频帧进行解码后,与云化机顶盒进行一次交互。既保证了视频解码的正确进行,又减少了网络延迟对视频解码的影响,提高了物理端机顶盒进行视频解码的效率。

需要指出的是,在本公开中,各个步骤的序号并不代表各个步骤的执行顺序。也就是说,并非是将所有待解码帧都发送物理端机顶盒之后才将各个待解码帧的PTS值加入到PTS队列中。

在本公开中,步骤S110和步骤S120同步进行的。也就是说,每向物理端机顶盒发送一个待解码帧,则将该待解码帧的PTS值加入到所述PTS队列中。

在接收到物理机顶盒发送的解码反馈后,步骤S110和步骤S120也是在进行的,直至云化机顶盒截获的码流均被发送至物理端机顶盒为止。

在本公开中,步骤S130至步骤S160是顺序执行的。每接收到一个解码反馈(即,每执行一次步骤S130),就执行一次步骤S140至步骤S160。

在本公开中,对将PTS值加入PTS队列中的速率不做特殊的限定。作为一种可选实施方式,将PTS值加入PTS队列中的速率可以与云化机顶盒向物理端机顶盒发送的码流的码流速率相同。也就是说,可以在向物理端机顶盒发送待解码的视频帧的同时,将该待解码的视频帧的PTS值加入PTS队列。

当然,本公开并不限于此,将PTS值加入PTS队列中的速率也可以与所述码流速率不相同。为了确保在云化机顶盒一端准确地模拟出物理端机顶盒的解码速率,可以根据物理端机顶盒的解码反馈对将PTS值加入PTS队列的速率进行调整。

在本公开中,对所述解码反馈的具体类型不做特殊的限定。作为一种可选实施方式,所述解码反馈可以包括解码完成帧的PTS值。也就是说,当物理端机顶盒每完成一个视频帧的解码,即向云化机顶盒发送该刚刚解码完成的视频帧的PTS值。如上文中所述,物理端机顶盒是按照PTS从小到大的顺序对各个视频帧进行解码的。在不出意外的情况下,每次被解码的视频帧的PTS值都是当前物理端机顶盒所有未解码的视频帧中PTS值最小的一者。云化机顶盒中的情况也是类似的,PTS队列中的最小的一个PTS值,对应的也是物理端机顶盒中即将被解码、或者正在被解码的视频帧。在将接收到的所述解码反馈与所述PTS队列中最小的PTS值进行比较的步骤S140中,可以利用所述PTS队列中最小的PTS值减去接收到的解码完成帧的PTS值,得到的差值为所述比较结果。若所述比较结果小于预定数值,说明云化机顶盒中模拟的物理端机顶盒视频解码速度与物理端机顶盒实际进行的视频解码速度相差不大,这种情况下可以判定所述物理端机顶盒解码正常。相应地,若所述比较结果不小于所述预定数值,说明云化机顶盒中模拟的物理端机顶盒视频解码速度大于物理端机顶盒实际进行的视频解码速度。在这种情况下,所述视频解码方法还可以包括:若所述比较结果不小于所述预定数值,生成表征无帧解码完成的信息。需要指出的是,在没有帧解码完成的情况下,不会停止将码流发送至物理端机顶盒,也不会停止将相应PTS值加入PTS队列。只向PTS队列中增加PTS值、而不删减PTS值,相当于减慢了云化机顶盒中模拟的物理端机顶盒视频解码速度。

在本公开中,对所述预定值不做特殊的限定。作为一种可选实施方式,所述预定值可以是3到5帧视频帧进行播放时所需要的时间。

物理端机顶盒对接收到的视频帧进行解码时,可能会因各种因素(例如,物理端机顶盒硬件问题、码流传输过程中的数据丢失)而解码失败。当物理端机顶盒解码失败时,会生成解码失败标识,并将该标识作为“解码反馈”发送给云化机顶盒。

在利用PTS队列中的最小的一个PTS值与解码失败标识进行比较时,容易判断出解码反馈为解码失败标识,如图3所示,在这种情况下,所述视频解码方法还包括:

在步骤S170中,生成解码异常信息。

步骤S170中,生成解码异常信息后,相关技术人员可以对该解码异常信息进行处理。

在本公开中,还可以通过如下方式判定物理端机顶盒异常:

接收到所述解码反馈后,对PTS队列进行查询,以确定所述PTS队列中的最小的PTS值;

当所述PTS队列为空时,生成解码异常信息。

物理端机顶盒完成对待解码的视频帧的解码后,需要对解码获得的视频帧进行渲染,因此,如图3所示,所述视频解码方法还包括:

在步骤S180中,若所述物理端机顶盒正常解码,向所述物理端机顶盒发送针对解码完成的视频帧的渲染指令。

物理端机顶盒接收到渲染指令后,可以对相应的解码完成的视频帧进行渲染。

作为本公开的第二个方面,提供一种视频解码方法,用于物理端机顶盒,如图4所示,所述视频解码方法包括:

在步骤S210中,接收视频码流;

在步骤S220中,按照所述视频码流中各待解码的视频帧的PTS值的顺序依次对各所述待解码的视频帧进行解码,并生成相应的解码反馈;

在步骤S230中,按照解码顺序,将所述解码反馈发送至云化机顶盒。

所述物理端机顶盒与所述云化机顶盒相配合,因此,在步骤S210中接收到的视频码流是本公开第一个方面所提供的视频解码方法中的步骤S110发送的视频码流。在物理端机顶盒对接收到的码流中的各个待解码帧进行解码时,只需要通过生成解码反馈的方式与云化机顶盒交互依次,从而降低了网络延迟对解码过程的影响。

需要指出的是,每对一个视频帧进行解码,就生成一个解码反馈。作为一种可选实施方式,物理端机顶盒每接收到一个待解码的视频帧,则将该待解码的视频帧加入解码队列。在所述解码队列中,各个待解码的视频帧按照各自的PTS值从小到大顺序排列。在对各个待解码的视频帧进行解码时,也按照PTS值从小到大的顺序进行解码。

与本公开的第一个方面类似,第二个方面所提供的视频解码方法中,各个步骤前的需要也只是为了便于表述,并不代表执行顺序。

也就是说,在本公开中,步骤S210、步骤S220以及步骤S230也可以同步进行。每接收到一个待解码的视频帧,则对该待解码的视频帧进行解码。并且,在所述视频解码方法中,每生成一个解码反馈,即将该生成的解码反馈发送至云化机顶盒。

作为一种可选实施方式,若正常解码,针对解码完成的视频帧,所述解码反馈包括解码完成的视频帧的PTS值。

也就是说,物理端机顶盒每正常解码一个视频帧,就向云化机顶盒反馈该视频帧的PTS值,以供云化机顶盒执行步骤S140。

作为另一种可选实施方式,所述解码反馈包括解码异常帧的解码失败标识。当解码失败时,生成针对该解码失败的异常帧的解码失败标识。

完成解码后,物理端机顶盒需要对解码完成的视频帧进行渲染。如上文中所述,渲染指令也是云化机顶盒发出的。相应地,如图5所示,所述视频解码方法还包括:

在步骤S240中,接收渲染指令;

在步骤S250中,根据所述渲染指令对相应的解码完成帧进行渲染。

作为一种可选实施方式,可以在渲染指令中携带PTS值。物理端机顶盒确定渲染指令中的PTS值之后,对该PTS值所对应的解码完成帧进行渲染。

当然,本公开并不限于此。作为一种可选实施方式,如图6所示,步骤S250可以包括:

在步骤S251中,确定所述渲染指令对应的解码完成的视频帧的PTS值;

在步骤S252中,将解码完成的视频帧的PTS值与所述渲染指令对应的PTS值进行比较;

在步骤S253中,若所述解码完成的视频帧的PTS值不超过所述渲染指令对应的PTS值,则等待预定时间后对所述解码完成的视频帧进行渲染;

在步骤S254中,若所述解码完成的视频帧的PTS值大于所述渲染指令对应的PTS值,则对所述待渲染帧进行渲染。

若刚解码完成的视频帧的PTS值不超过所述渲染指令对应的PTS值,说明物理端机顶盒的解码速度过快,不能立刻执行渲染,否则会出现图像渲染帧率过高的问题。需要等待预定时间后,再对解码完成帧进行渲染,以实现更好的视频显示效果。

若刚解码完成的视频帧的PTS值大于渲染指令对应的PTS,立刻进行渲染。

作为本公开的第三个方面,提供一种云化机顶盒,所述云化机顶盒包括:

一个或多个第一处理器;

第一存储器,其上存储有一个或多个第一程序,当一个或多个第一程序被一个或多个第一处理器执行,使得一个或多个第一处理器实现本公开第一个方面所提供的视频解码方法;

一个或多个第一I/O接口,连接在第一处理器与第一存储器之间,配置为实现第一处理器与第一存储器的信息交互。

在本公开中,第一处理器为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;第一存储器为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);第一I/O接口(读写接口)连接在第一处理器与第一存储器间,能实现第一处理器与第一存储器的信息交互,其包括但不限于数据总线(Bus)等。

作为本公开的第四个方面,提供一种物理端机顶盒,所述物理端机顶盒包括:

一个或多个第二处理器;

第二存储器,其上存储有一个或多个第二程序,当一个或多个第二程序被一个或多个第二处理器执行,使得一个或多个第二处理器实现本公开第二个方面所提供的视频解码方法;

一个或多个第二I/O接口,连接在第二处理器与第二存储器之间,配置为实现第二处理器与第二存储器的信息交互。

在本公开中,第二处理器为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;第二存储器为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);第二I/O接口(读写接口)连接在第二处理器与第二存储器102间,能实现第二处理器与第二存储器的信息交互,其包括但不限于数据总线(Bus)等。

作为本公开的第五个方面,提供一种计算机可读介质,所述计算机可读介质上存储有可执行程序,当所述可执行程度被调用时,能够本公开所提供的视频解码方法。

作为本公开的第六个方面,提供一种云化机顶盒,如图7所示,该云化机顶盒包括云端播放器、云端Mediacodec、PTS管理组件和物理端状态记录组件。

云端应用播放器用于截获视频流,并将截获的视频流以码流的方式发送至云端Mediacodec;

云端Mediacodec用于保存各待解码的视频帧的PTS值,并将各个待解码的视频帧以视频码流的方式连续地发送给物理端机顶盒;

PTS管理组件用于按照从小到大的顺序以第一速率将各个待解码的视频帧的PTS值连续地加入PTS队列;

物理端状态记录组件用于接收物理端机顶盒发送的解码反馈;

PTS管理组件还用于根据所述解码反馈与当前PTS队列中最小的PTS值进行比较,以判断物理端机顶盒是否正常解码,并在物理端机顶盒正常解码,删除当前PTS队列中最小的PTS值。

除此之外,PTS管理组件还用于调整将PTS值加入PTS队列的速率。云端应用播放器还用于向云端Mediacodec发送渲染请求。云端Mediacodec还用于发送渲染请求对应的视频帧的PTS值。

作为本公开的第七个方面,提供一种物理端机顶盒。如图7所示,该物理端机顶盒包括解码组件和渲染标识管理组件。

解码组件用于:接收视频码流;按照所述视频码流中各待解码的视频帧的PTS值的顺序依次对各所述待解码的视频帧进行解码,并生成相应的解码反馈;按照解码顺序,将所述解码反馈发送至云化机顶盒。

渲染标识管理组件用于:接收渲染指令;根据所述渲染指令对相应的解码完成帧进行渲染。

下面结合图8和图9对本公开所提供的视频解码方法进行介绍。图8中所示的是物理端机顶盒正常解码时的信令图。如图所示,在这种情况下,视频解码方法包括:

S101、云化应用打开并创建云端应用播放器播放片源;

S102、云端应用播放器创建云端MediaCodec解码器;

S103、云端MediaCodec在物理端机顶盒创建解码器并对解码器初始化;

S104、云端应用播放器向云端MediaCodec发送码流,以供物理端机顶盒进行解码;

S105、云端MediaCodec向PTS管理组件记录该视频帧的PTS值;

S106、云端MediaCodec向物理端机顶盒推送该视频帧;

S107、物理端机顶盒对将该视频帧加入解码队列中,进行解码;

S108、物理端机顶盒解码数据完成后,将解码完成的视频帧的PTS值上报至物理端状态记录组件;

S109、云端应用播放器向云端MediaCodec查询是否有数据解码完成;

S110a、云端MediaCodec向PTS管理组件查询是否有PTS值;

S111、PTS管理组件中无任何帧数据,直接通知云端应用播放器无帧解码完成;

S112、PTS管理组件中有帧数据,将最小PTS值与物理端状态记录组件记录的物理端机顶盒反馈的PTS值进行比较;

S113、PTS管理组件的最小PTS值比物理端机顶盒反馈的PTS值大超过5帧数据,则说明物理端机顶盒解码慢了,需要降低云端模拟的PTS值发送速度,直接通知云端应用播放器无帧解码完成;

S114、否则将该解码完成的视频帧的PTS值上报给播放器,同时将该PTS值从PTS管理模块的队列中移除;

S115、云端应用播放器发送请求渲染该视频帧;

S116、云端MediaCodec将需要渲染帧的PTS值发送给物理端机顶盒的渲染标识管理组件,该渲染标识管理组件记录当前云端渲染进度;

S117、物理端机顶盒的解码器组件每解完一帧后,从渲染标识管理组件查询云端发送的待渲染PTS值,如果该解码完成帧的PTS值小于或等于云端发送的待渲染帧的PTS值,立刻渲染该解码完成的视频帧;否则说明物理端机顶盒解码过快了,不能立刻对解码完成的视频帧进行渲染,不然现象就是图像渲染帧率过高;直到渲染标识管理组件收到云端发送的渲染帧的PTS值时候,再将物理端机顶盒刚完成解码的帧的PTS值与云端发送的待渲染帧的PTS值比较,刚完成解码的帧的PTS值若小于或等于云端发送的待渲染帧的PTS,立刻对刚解码完成的视频帧进行渲染,然后继续解码下一帧。

图9中所示的是物理端机顶盒解码异常时的信令图。在这种情况下,视频解码方法包括:

S201、云化机顶盒和物理端机顶盒已经创建云化解码通道、并初始化物理端的解码器;

S202、云端应用播放器向云端MediaCodec发送码流进行解码;

S203、云端MediaCodec向PTS管理组件记录该帧的PTS值;

S204、云端MediaCodec向物理端机顶盒推送该帧;

S205、物理端对将该帧加入解码队列中,进行解码,解码失败;

S206、向物理端状态记录组件上报解码失败状态;

S207、云端应用播放器向云端MediaCodec查询是否有数据解码完成;

S208、云端MediaCodec向PTS管理组件查询是否存储有PTS值;

S209、PTS管理组件存储有PTS值,则向物理端状态记录组件查询物理端解码PTS,结果发现物理端解码失败;

S210a、上报播放器解码失败;

S211、云端应用播放器通知云端应用,云端应用显示播放失败。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。

本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

相关技术
  • 非水电解液及使用该非水电解液的非水电解质电池
  • 层叠多孔质膜及制造方法、非水电解液二次电池用隔膜、层叠电极片和非水电解液二次电池
  • 提升钠离子电池界面稳定性的非水电解液及其二次电池和应用
  • 非水电解液二次电池
  • 非水电解质二次电池用正极活性物质、非水电解质二次电池用正极活性物质的制造方法、非水电解质二次电池用正极、非水电解质二次电池、非水电解质二次电池的制造方法和非水电解质二次电池的使用方法
  • 非水电解质二次电池用粘合剂、非水电解质二次电池用电极组合物、非水电解质二次电池用电极、非水电解质二次电池和非水电解质二次电池用粘合剂的制造方法
技术分类

06120116571088