一种在视频播放过程中渲染的方法、装置及电子设备

文档序号:1144520 发布日期:2020-09-11 浏览:3次 >En<

阅读说明:本技术 一种在视频播放过程中渲染的方法、装置及电子设备 (Rendering method and device in video playing process and electronic equipment ) 是由 张龙涛 刘振宇 许臻泽 于 2020-06-24 设计创作,主要内容包括:本发明实施例公开了一种在视频播放过程中渲染的方法及装置,本发明实施例当界面刷新时,会触发渲染过程,根据界面刷新相关信息及获取的视频播放的解码帧数据对界面渲染。因此,采用本发明实施例,当出现界面刷新但帧数据不更新的情况下,通过读取视频播放的解码帧数据实现了界面刷新的同时,帧数据也进行了刷新,减少了出现界面的视频图层中显示的解码帧数据不重新渲染的情况,从而不会有界面显示的画面出现卡顿或残影等问题,提高了界面中视频播放的画面质量,给用户带来很好的体验。(The embodiment of the invention discloses a rendering method and device in a video playing process. Therefore, by adopting the embodiment of the invention, when the interface is refreshed but the frame data is not updated, the frame data is refreshed while the interface is refreshed by reading the decoded frame data played by the video, so that the situation that the decoded frame data displayed in the video layer of the interface is not re-rendered is reduced, the problems of blockage or ghost and the like of the picture displayed by the interface can be avoided, the picture quality of the video playing in the interface is improved, and good experience is brought to a user.)

一种在视频播放过程中渲染的方法、装置及电子设备

技术领域

本发明涉及图像处理技术,特别涉及一种在视频播放过程中渲染的方法、装置及电子设备。

背景技术

在进行视频播放之前需要先渲染视频播放所需的各帧数据。目前,视频播放的各帧数据解码及渲染是由计算机系统的视频播放模块中的一个独立单元完成的,该独立单元对视频播放所需帧数据逐帧进行解码及渲染后,将解码渲染后的帧数据发送到计算机系统所设置界面的视频图层中进行逐帧显示,从而实现视频播放过程。图1为现有技术提供的对视频播放所需帧数据进行渲染的模块结构示意图,其是计算机系统的视频播放模块,包括:视频展现控制单元、取流单元及解码渲染单元,其中,

视频展现控制单元,用于向取流单元发送获取播放视频所需帧数据的请求;从解码渲染单元逐帧获得解码及渲染后的帧数据,在所设置界面的视频图层中逐帧显示;

取流单元,用于根据所述请求从计算机存储单元中或从计算机网络中逐帧获取播放视频所需的帧数据,发送给解码渲染单元;

解码渲染单元,用于逐帧对所述播放视频所需的帧数据进行解码及渲染后,将解码及渲染后的帧数据逐帧发送给视频展现控制单元。

所述播放视频所需帧数据进行逐帧显示,简称为帧数据刷新。视频展现控制单元还会对加载视频图层的界面进行刷新,简称为界面刷新,比如,界面变化事件被触发时,就会获得到界面刷新指令。所述界面变化事件包括:界面中的内容覆盖了视频图层中的部分图像、或界面缩放等会引起界面的视频图层变化的事件,界面刷新与帧数据刷新是两套处理机制,两者并不同步。

在所述播放视频所需帧数据的两帧数据之间无数据更新,不进行帧数据刷新,而在此间隔内却有可能触发导致界面变化的事件,导致界面刷新,这时界面显示的画面就会出现卡顿或残影等问题,从而降低了界面中视频播放的画质,影响用户的使用体验。

发明内容

有鉴于此,本发明实施例提供一种在视频播放过程中渲染的方法,该方法能够在界面刷新时提高界面中视频播放的画面质量。

本发明实施例还提供一种在视频播放过程中渲染的装置,该装置能够在界面刷新时提高界面中视频播放的画面质量。

在一个实施例中,提供了一种在视频播放过程中渲染的方法,包括:

获得界面刷新指令,读取视频播放的解码帧数据;

根据界面刷新相关信息及所述解码帧数据渲染界面。

优选地,在所述读取视频播放的解码帧数据之前,所述方法还包括:

获得视频播放指令,逐帧获取视频播放过程所需的帧数据,解码后得到解码帧数据,将所述解码帧数据存储;

所述读取视频播放的解码帧数据包括:读取存储的所述解码帧数据。

优选地,所述解码帧数据为当前视频播放的解码帧数据。

优选地,所述方法还包括:

停止视频播放,清空存储的所述解码帧数据;

清空在界面的视频图层中的渲染。

优选地,所述读取视频播放的解码帧数据;根据界面刷新相关信息及所述解码帧数据渲染界面包括:

在获得到界面刷新指令的情况下,阻塞视频播放界面主线程,由所述视频播放界面主线程的子线程读取视频播放的解码帧数据后,结束阻塞所述视频播放界面主线程;

由所述子线程根据界面刷新相关信息及所述解码帧数据渲染界面。

优选地,所述方法还包括:

在所述界面的视频图层中设置子控件,以叠加所设置的窗口,所述窗口在所述界面透明呈现或动画呈现;

所述获得界面刷新指令包括:在所述窗口发生改变的情况下,获得界面刷新指令。

在另一个实施例中,提供了一种在视频播放过程中渲染的装置,包括:视频展现控制单元及渲染单元,其中,

所述视频展现控制单元,用于获得界面刷新指令;

所述渲染单元,用于读取播放的解码帧数据;根据界面刷新相关信息及所述解码帧数据渲染界面。

优选地,所述装置还包括取流单元和解码单元,其中,

所述视频展现控制单元,还用于获得视频播放指令;

所述取流单元,用于逐帧获取视频播放过程所需的帧数据;

所述解码单元,用于将所述取流单元获取的帧数据进行解码,得到解码帧数据;

所述渲染单元,还用于将所述解码帧数据存储。

优选地,所述解码帧数据为当前视频播放的解码帧数据。

优选地,所述渲染单元,具体用于在获得到界面刷新指令的情况下,阻塞视频播放界面主线程,由所述视频播放界面主线程的子线程读取视频播放的解码帧数据和获取界面刷新相关信息后,结束阻塞所述视频播放界面主线程;由所述子线程根据界面刷新相关信息及所述解码帧数据渲染界面。

优选地,所述视频展现控制单元,还用于停止视频播放,清空存储的所述解码帧数据;

所述渲染单元,还用于清空在界面的视频图层中的渲染。

优选地,所述视频展现控制单元,具体用于在所述界面的视频图层中设置子控件,以叠加所设置的窗口,所述窗口在所述界面透明呈现或动画呈现;在所述窗口发生改变的情况下,获得到所触发的界面刷新指令。

在另一个实施例中,提供了一种电子设备,包括:一个或一个以上处理核心的处理器、一个或一个以上计算机可读存储介质的存储器以及存储在存储器上并可在处理器上运行的计算机程序,在执行所述存储器的程序时,实现如前述实施例所述的在视频播放过程中渲染的方法。

在另一个实施例中,提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如前述实施例所述的在视频播放过程中渲染的方法。

在另一个实施例中,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如前述实施例所述的在视频播放过程中渲染的方法。

如上所见,本发明实施例当界面刷新时,会触发渲染过程,根据界面刷新相关信息及获取的视频播放的解码帧数据对界面渲染。因此,采用本发明实施例,当出现界面刷新但帧数据不更新的情况下,通过读取视频播放的解码帧数据实现了界面刷新的同时,帧数据也进行了刷新,减少了出现界面的视频图层中显示的解码帧数据不重新渲染的情况,从而不会有界面显示的画面出现卡顿或残影等问题,提高了界面中视频播放的画面质量,给用户带来很好的体验。

附图说明

图1为现有技术提供的对视频播放所需帧数据进行渲染的模块结构示意图;

图2为本发明实施例提供的在视频播放过程中渲染的方法流程图;

图3为本发明实施例提供的视频播放过程中多核渲染的过程示意图;

图4为本发明实施例提供的在视频播放过程中渲染的方法例子示意图;

图5为现有技术提供的叠加视频窗口示意图;

图6为本发明实施例提供的视频图层叠加设置的示意图;

图7为本发明实施例提供的在视频播放过程中渲染的装置结构示意图;

图8为本发明实施例提供的视频播放过程中渲染的装置具体例子示意图;

图9为本发明实施例提供的一种电子设备的结构示意图;

图10为本发明实施例提供的一种电子设备具体例子示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。

从背景技术可以看出,在视频播放过程中造成界面的画质不高的主要原因是:视频播放所需帧数据是基于帧时序进行解码并渲染后,在界面的视频图层中显示的,当帧数据刷新时就触发视频播放所需帧数据的解码及渲染操作,而当界面刷新时由于帧数据没有更新,则不会触发当前视频播放所需帧数据的渲染操作。更进一步地,在所述播放视频所需帧数据的帧率比较低、帧间隔时间较长的情况下,因两帧之间无数据的更新,不进行帧数据刷新,而在此间隔内却有可能触发导致界面变化的事件,导致界面刷新而帧数据不刷新,出现了界面刷新后的界面覆盖了未及时渲染刷新界面的视频图层中的帧数据的情况,这就会最终导致界面显示的画面出现卡顿或残影等问题,降低了界面中视频播放的画质。

为了克服这个问题,本发明实施例当界面刷新时,会触发渲染过程,根据界面刷新相关信息及获取的视频播放的解码帧数据对界面渲染。这样,当出现界面刷新但帧数据不更新的情况下,通过读取视频播放的解码帧数据实现了界面刷新的同时,帧数据也进行了刷新,减少了出现界面的视频图层中显示的解码帧数据不重新渲染的情况,从而不会有界面显示的画面出现卡顿或残影等问题,提高了界面中视频播放的画面质量,给用户带来很好的体验。

本发明实施例为了在界面刷新时,根据界面刷新相关信息及获取的视频播放的解码帧数据对界面渲染,对视频播放所需帧数据的渲染过程与解码过程相分离,将视频播放所需帧数据的渲染过程在界面层实现,且将视频播放的解码帧数据存储,从而可以及时可以获取到所存储的视频播放的解码帧数据。

进一步地,本发明实时在帧数据刷新时,也会触发渲染过程,该渲染过程也在界面层实现,即获取存储的视频播放的解码帧数据,根据所获取的视频播放的解码帧数据对界面的视频图层进行渲染。

本发明实施例对视频播放所需帧数据的渲染过程与解码过程相分离,实际上就是将渲染过程在界面上来进行控制,具体在界面主线程下设置了渲染过程的子线程实现。

图2为本发明实施例提供的在视频播放过程中渲染的方法流程图,其具体步骤包括:

步骤201、获得界面刷新指令,读取播放的解码帧数据;

步骤202、根据界面刷新相关信息及所述解码帧数据渲染界面。

在这里,界面刷新是指界面元素发送变化,而进行的界面重绘或更新操作,比如增加、删除可见界面元素;界面元素被移动、改变大小或位置变化;界面元素从遮挡状态到非遮挡的状态等。界面重绘或更新操作有时会影响到界面中包括视频图层所播放视频的画面变化,有时则不会影响界面的中包括视频图层所播放视频的画面变化。在影响时,就需要根据图2所述的过程执行,在对界面进行一次渲染的过程中,会同时根据界面刷新相关信息及所述解码帧数据;在不影响时,也可以根据图2所述的过程执行,或者不根据图2所述的过程执行,而是仅仅根据界面刷新相关信息渲染界面即可。当界面刷新事件被触发后,计算机系统中的界面控制层就会获得到界面刷新指令。

为了实现图2的步骤201,可以预先将视频播放的解码帧数据进行存储。在所述读取视频播放的解码帧数据之前,所述方法还包括:

获得视频播放指令,逐帧获取视频播放过程所需的帧数据,解码后得到解码帧数据,将所述解码帧数据存储;

所述读取视频播放的解码帧数据包括:读取存储的所述解码帧数据。

本发明实施例可以设置缓存区,用于存储视频播放的解码帧数据,所存储的视频播放的解码帧数据,可以为多帧也可以为一帧。当存储多帧视频播放的解码帧数据时,可以存储视频播放的当前帧的前几帧解码帧数据或/和后几帧解码帧数据,在渲染界面时,也可以从中读取任一帧解码帧数据,或者是与当前视频播放帧相关的一帧解码帧数据,比如读取当前视频播放的前一帧解码帧数据或读取当前视频播放的后一帧解码帧数据,进行渲染。在这种情况下,可以克服界面显示的画面出现卡顿或残影等问题,但是有可能会使得界面的视频图层播放的视频出现跳帧或回帧的情况,造成播放不连续的问题。

较优地,为了既克服界面显示的画面出现卡顿或残影等问题,又使得界面的视频图层播放的视频连续,图2所述解码帧数据为当前视频播放的解码帧数据,渲染界面时采用的也是当前播放的解码帧数据。在这种情况下,所述缓存区存储的视频播放的解码帧数据,仍然可以为多帧,这多帧数据中包括有要被读取的当前视频播放的解码帧数据。更优地,为了减少所述缓存区的存储空间,所述缓存区存储的视频播放的解码帧数据为一帧,该帧数据为当前视频播放的解码帧数据。一旦有后续的视频播放的解码帧数据到来,就替换所存储的视频播放的解码帧数据,保证在所述缓存区中存储的是当前视频播放的解码帧数据。

在这种最优实施例中,随着视频播放的帧序,视频播放的数据帧是不断变化的,每次存储一帧的解码帧数据,当要视频播放新的一帧解码帧数据时,则会用新的一帧解码帧数据替换已经存储的上一帧解码帧数据,以保证缓存区中存储的当前视频播放的解码帧数据动态更新。具体地说,所述将当前视频播放的解码帧数据存储包括:

根据视频播放的帧序,从所述多帧解码帧数据中逐帧获取,逐帧将所述获取的解码帧数据作为当前视频播放的解码帧数据存储在缓存区中,覆盖缓存区已缓存的当前视频播放的解码帧数据。当读取缓存区中缓存的播放的解码帧数据时,读取的就是当前视频播放的解码帧数据,从而节省了缓存区的存储空间,且保证了后续界面渲染时采用的是当前视频播放的界面帧数据,减少界面的视频图层播放的视频出现跳帧或回帧的情况发生。

在本发明实施例中,图2所述的方法还包括:

停止视频播放,清空存储的所述解码帧数据;

清空在界面的视频图层中的渲染。

具体地说,在停止视频播放时,就会将缓存区中存储的所述解码帧数据清空及要进行渲染的内存资源清空,以节省缓存区的存储资源及节省装置在进行渲染时所使用的内存资源等,为后续装置在界面的视频图层中进行视频播放进行准备。

本发明实施例对视频播放的渲染采用的是同步刷新渲染方式,该方式需要由界面的控制刷新与界面刷新保持一致,为了让界面上的渲染性达到最大,采用多核渲染方式,设置渲染线程,将所述渲染线程作为视频播放界面主线程的子线程,在渲染过程中阻塞视频播放界面主线程,使用子线程的方式进行渲染,也就是使用设置的渲染线程进行渲染。为了避免诸如动画或其他事件带来的界面新变化影响而导致的渲染相关信息的变化,在渲染过程中需要阻塞视频播放界面主线程,由渲染线程读取视频播放的解码帧数据及获取到当前界面刷新相关信息。具体包括:在获得到界面刷新指令的情况下,阻塞视频播放界面主线程,由所述视频播放界面主线程的子线程读取视频播放的解码帧数据和获取到界面刷新相关信息后,结束阻塞所述视频播放界面主线程;由所述子线程根据界面刷新相关信息及所述解码帧数据渲染界面。

所述子线程在进行界面渲染之前,视频播放界面主线程就会被阻塞,保证视频播放的解码帧数据是最新的且能够被所述子线程获取到,当所述子线程读取了视频播放的解码帧数据和获取到界面刷新相关信息后,则结束阻塞视频播放界面主线程,视频播放界面主线程继续执行,实现视频播放界面的监听及对应的控制。

在这里,所述视频播放界面主线程执行时,会监听界面中出现的动画或其他事件,这些事件有可能会导致新一次的渲染界面过程,也可能这些事件不会影响界面变化,而不触发渲染界面过程。

图3为本发明实施例提供的视频播放过程中多核渲染的过程示意图,如图所示,包括视频播放界面主线程及渲染线程,该渲染线程为视频播放界面主线程的子线程,以对界面刷新事件进行处理为例进行详细说明,其具体步骤包括:

步骤301、视频播放界面主线程监听到界面刷新事件;

步骤302、视频播放界面主线程获得到界面刷新指令;

步骤303、阻塞视频播放界面主线程;

在本步骤中,阻塞视频播放界面是由装置的处理器控制执行的,或者由视频播放界面主线程获得到界面刷新指令后,通知渲染线程,由渲染线程去阻塞主线程;

步骤304、渲染线程确定视频播放界面主线程被阻塞;

步骤305、读取视频播放的解码帧数据及界面刷新相关信息;

步骤306、结束阻塞视频播放界面主线程;

在本步骤中,结束阻塞视频播放界面主线程是由装置的处理器控制执行的,或者由子线程在读取到视频播放的解码帧数据及界面刷新相关信息后,结束阻塞主线程;

步骤307、渲染线程采用读取的视频播放的解码帧数据绘制新的解码帧数据,或刷新之前的视频播放的解码帧数据;

在本步骤中,如果在绘制新的解码帧数据之前,在渲染线程中还有之前的视频播放的解码帧数据,则采用读取的视频播放的解码帧数据刷新之前的视频播放的解码帧数据;

需要说明的是,步骤307也可以在步骤305后、步骤306之前执行;

步骤308、渲染线程根据所绘制的新解码帧数据及界面刷新相关信息对界面进行渲染;

步骤309、视频播放界面主线程在步骤306结束阻塞后,监听界面的其他触发事件及动画处理,进行对应的响应。

图3中的步骤309的执行过程与步骤307~308的执行过程可以是分离的,两者不相互影响且没有次序之分。

图3中的步骤308具体包括:渲染线程将所绘制的新的解码帧数据,渲染在界面的视频图层中;同时,渲染线程也根据所获取的界面刷新相关信息对界面进行渲染,最终完成了整个渲染过程。需要说明的是,渲染线程也可以不执行步骤307,那步骤308可以是渲染线程根据读取的解码帧数据及界面刷新相关信息对界面进行渲染,具体地,可以是渲染线程将读取的解码帧数据渲染在界面的视频图层中,同时,渲染线程也根据所获取的界面刷新相关信息对界面进行渲染。

图3的过程是以对界面刷新事件进行处理为例,对视频播放过程中多核渲染的过程进行详细说明。更进一步地,图3的过程还可以应用在数据帧刷新事件,采用多核渲染界面,在这种情况下,步骤301更改为:视频播放界面主线程监听到数据帧刷新事件;步骤302更改为:视频播放主线程获得数据帧刷新指令;后续的步骤与图3的过程相同。

当图3的过程应用在数据帧刷新事件中,如果在此过程中不涉及界面变化,则界面刷新相关信息不会更改,所以在渲染界面时可以仅仅依据视频播放的解码帧数据。当然,即使在此过程中不涉及界面变化,也可以采用图3的方式获取得到界面刷新相关信息,在渲染界面时依据读取的视频播放的解码帧数据及界面刷新相关信息。

总的来说,视频播放界面主线程控制进行视频播放过程,在当前视频播放的解码帧数据变化时,或获得界面刷新指令时,则触发渲染更新,阻塞视频播放界面主线程,跳转到渲染线程;在结束阻塞视频播放界面主线程后,则继续执行视频播放界面主线程,进行界面其他事件的触发响应及动画处理等等,在这里,如果这些事件或动画处理会对界面的画面产生影响,则会再一次触发界面刷新指令,由渲染线程进行再一次对界面的渲染操作。

当视频播放界面主线程被阻塞后,渲染线程开始新一帧或几帧的解码帧数据处理,即读取视频播放的解码帧数据及获取到界面刷新相关信息,在执行完后结束阻塞视频播放界面主线程,使得视频播放界面主线程继续执行。渲染线程开始执行新的解码帧数据的绘制,根据获取的视频播放的解码帧数据绘制新的解码数据,或者如果在渲染线程中之前已经有解码帧数据,则采用获取的视频播放的解码帧数据刷新之前的解码帧数据;渲染线程根据所绘制新的解码帧数据及界面刷新相关信息进行界面刷新。具体地说,渲染线程将所绘制的新的解码帧数据,渲染在界面的视频图层中;同时,渲染线程也根据所获取的界面刷新相关信息对界面进行渲染,最终完成了整个渲染过程。

本发明实施例保证了在视频播放过程中界面刷新与帧数据刷新的同步,对视频播放的控制和渲染控制在界面层实现,当视频播放所需解码帧数据发生变化带来的帧数据刷新,或用户放大或拖动界面等操作触发的界面刷新,都需要在界面上再次渲染,并且在渲染过程中配合了播放视频的解码帧数据存储策略,这样,就可以及时刷新界面的视频图层,有效解决残影问题。

更进一步地,本发明实施例是在界面层实现对视频播放的控制和渲染控制,对视频播放的控制和渲染控制可以由所设置的视频展现控制单元实现,所述视频展现控制单元控制界面进行视频播放及在界面上进行渲染,整个控制过程如图4所述。

图4为本发明实施例提供的在视频播放过程中渲染的方法例子示意图,具体包括:

步骤401、识别到用户触发的视频播放事件;

步骤402、对界面进行视频播放的控制;

在该步骤中,可以由视频展现控制单元对界面进行视频播放的控制;

步骤403、逐帧获取视频播放过程所需的帧数据;

在该步骤中,可以是由视频展现控制单元发起向设备或流媒体服务等取流的请求,控制取流单元逐帧获取视频播放过程所需的帧数据;

步骤404、解码后得到解码帧数据;

在该步骤中,是由取流单元在获取到帧数据后,将帧数据送入解码单元进行解码,由解码单元解码后得到解码帧数据;

步骤405、将所述视频播放的解码帧数据存储;

这里,可以是解码单元完成解码后,把相关数据通知视频展现控制单元,视频展现控制单元控制渲染单元将所述视频播放的解码帧数据存储;也可以是由解码单元解码得到解码帧数据后,将解码帧数据传输至渲染单元,渲染单元在获得解码帧数据后,将解码帧数据存储,以供后续渲染单元在渲染界面时读取。执行完步骤405后,执行步骤408;

步骤406、在视频播放过程中,获得界面刷新指令;

在本步骤中,视频展现控制单元可以识别到用户触发的界面刷新事件后,获得界面刷新指令;

步骤407、通知渲染单元执行渲染过程;

在该步骤中,可以是由视频展现控制单元通知渲染单元执行渲染过程,跳转到步骤408,由渲染单元继续执行渲染过程;

步骤408、渲染界面;

在本步骤中,在解码帧数据有更新但未获得界面刷新指令的情况下(即执行401-405后,执行408),渲染单元在存储解码帧数据后,可以根据最新的解码帧数据渲染界面的视频图层,也可以根据最新的解码帧数据及获取的界面刷新相关信息渲染界面;在获得界面刷新指令的情况下(即执行406-407后,执行408),渲染单元在接收到视频展现控制单元的通知后,根据读取的所述视频播放的解码帧数据及根据获取的界面刷新相关信息渲染界面;

在本步骤中,所述渲染界面是由渲染单元实现,根据读取的所述视频播放的解码帧数据及根据获取的界面刷新相关信息渲染界面的步骤,具体的过程可以是:渲染单元读取所述视频播放的解码帧数据,将所述视频播放的解码帧数据渲染到所述界面的视频图层中;在此同时,也获取到界面刷新相关信息(在界面刷新相关信息更新或没有更新的情况下),根据界面刷新相关信息渲染界面。

从图4的过程可以看出,视频播放、数据帧刷新及界面刷新可以由所设置的视频展现控制单元控制实现。图4中的步骤401~404的过程与背景技术中的过程相同,但是,在步骤405及之后,对视频播放的解码帧数据存储、数据帧刷新采用的方法、界面刷新采用的方法则是本申请的关键所在,其可以由视频展现控制单元控制实现。

更进一步地,本发明实施例可以在界面上对设定区域进行标定或采用叠加窗口的形式在界面上进行透明效果或动画效果的呈现。通常,在界面针对设定区域的标定时,一种是在当前视频播放的视频图层上进行渲染线、框或图片的方式实现,这种方式需要将当前视频播放的解码帧数据进行界面的视频图层的渲染,绘制过程复杂且难以实现;另一种方式则如图5所示,图5为现有技术提供的叠加视频窗口示意图,在视频图层101之前增加一层透明图层102,在透明图层102中标定感兴趣区域窗口103,该感兴趣区域窗口103是透明图层102的子窗口,来达到标定感兴趣区域及动画效果。采用这种方式,透明图层102需要进行事件监听视频图层101的信息,包括尺寸及位置变化,从而来调整自身的图层信息,否则会与视频图层101产生错位,而事件监听及动态调整存在滞后的问题,在对透明图层102移动或变化窗口大小时会存在标定区域的抖动问题且实现较复杂。在这种情况下,背景技术在界面的视频图层中进行视频播放时,由于界面刷新与帧数据刷新是两套处理机制,其刷新会互相干扰,在界面进行一些视频叠加等方面的应用时,在界面显示的画面中,不能有效地做到透明图层的叠加,易出现移动透明图层不同步等问题。比如:界面的视频图层进行视频播放时无法将用户感兴趣区域采用透明图层叠加方式展现的问题。

采用本发明实施例,就可以解决上述问题。本发明实施例提供的方法还包括:

在所述界面的视频图层中设置子控件,以叠加所设置的窗口,所述窗口在所述界面透明呈现或动画呈现;

所述获得界面刷新指令包括:在所述窗口发生改变的情况下,触发界面刷新指令。

这样,就可以触发界面刷新,可较简单的采用叠加窗口方式实现透明效果及动画效果等。

采用上述方法,就可以将标定的窗口502,所述标定窗口502是感兴趣区域,直接在界面的视频图层101上叠加,也就是标定的窗口502作为界面的视频图层101的一个子控件进行叠加,如图6所示,图6为本发明实施例提供的视频图层叠加设置的示意图,将标定的窗口502叠加在界面的视频图层101,且标定的窗口502可以在界面的视频图层101呈现透明效果或动画效果。在标定的窗口502发生改变的情况下,触发界面刷新,进行界面刷新过程,从而可以将标定的窗口502不失真的呈现在界面的视频图层101上,减少出现不同步的问题,及不能有效叠加的问题。这样,就可以较简单的采用叠加窗口方式实现透明效果及动画效果等。

也就是说,在界面的视频图层叠加窗口后,当所述窗口改变的情况下,会触发本发明实施例的界面刷新事件,从而根据播放视频的解码帧数据及根据界面刷新相关信息对界面再次渲染,就不会出现窗口抖动等问题了。

本发明实施例还提供一种在视频播放过程中渲染的装置,如图7所示,包括:视频展现控制单元及渲染单元,其中,

所述视频展现控制单元,用于获得界面刷新指令;

所述渲染单元,用于读取播放的解码帧数据;根据界面刷新相关信息及所述解码帧数据渲染界面。

具体地,所述视频展现控制单元,可以用于获得界面刷新指令,向所述渲染单元发送渲染控制指令;

所述渲染单元,可以用于从所述视频展现控制单元获得所述渲染控制指令,读取播放的解码帧数据;根据界面刷新相关信息及所述解码帧数据渲染界面。

这样,本发明实施例提供的装置就可以在界面刷新时,根据界面刷新相关信息及获取的视频播放的解码帧数据对界面渲染。当出现界面刷新但帧数据不更新的情况下,通过读取视频播放的解码帧数据实现了界面刷新的同时,帧数据也进行了刷新,减少了出现界面的视频图层中显示的解码帧数据不重新渲染的情况,从而不会有界面显示的画面出现卡顿或残影等问题。

如图8所示,图8为本发明实施例提供的视频播放过程中渲染的装置具体例子示意图,较佳地,所述装置还包括取流单元和解码单元,其中,

所述视频展现控制单元,还用于获得视频播放指令;

所述取流单元,用于逐帧获取视频播放过程所需的帧数据;

所述解码单元,用于将所述取流单元获取的帧数据进行解码,得到解码帧数据;

所述渲染单元,还用于将所述解码帧数据存储。

具体地,所述视频展现控制单元,还可以用于获得视频播放指令,向所述取流单元发送获取视频播放过程所需的帧数据的控制指令;

所述取流单元,可以用于从所述视频展现控制单元获得所述获取视频播放过程所需的帧数据的控制指令,逐帧获取视频播放过程所需的帧数据,发送给所述解码单元;

所述解码单元,可以用于将从所述取流单元获得的帧数据进行解码,得到解码帧数据,在所述视频展现控制单元的控制下发送给所述渲染单元;

所述渲染单元,还可以用于获得所述解码帧数据,将所述解码帧数据存储。

在这里,所述渲染单元将所述解码帧数据存储,可以存储一帧或多帧解码帧数据,当存储多帧视频播放的解码帧数据时,可以存储视频播放的当前帧的前几帧解码帧数据或/和后几帧解码帧数据,在后续所述渲染单元在渲染界面时,也可以从中读取任一帧解码帧数据,或者是与当前视频播放帧相关的一帧解码帧数据,比如读取当前视频播放的前一帧解码帧数据或读取当前视频播放的后一帧解码帧数据,进行渲染。在这种情况下,可以克服界面显示的画面出现卡顿或残影等问题,但是有可能会使得界面的视频图层播放的视频出现跳帧或回帧的情况,造成播放不连续的问题。

较佳地,所述解码帧数据为当前视频播放的解码帧数据。

具体地,所述渲染单元还可以包括缓存子单元及渲染子单元,其中,

所述缓存子单元,用于将所述解码帧数据进行存储;

所述渲染子单元,用于读取所述缓存子单元缓存的当前播放的解码帧数据,根据界面刷新相关信息及所述当前播放的解码帧数据渲染界面。

在这里,为了既克服界面显示的画面出现卡顿或残影等问题,又使得界面的视频图层播放的视频连续,所述解码帧数据为当前视频播放的解码帧数据,渲染界面时采用的也是当前播放的解码帧数据。在这种情况下,所述缓存子单元存储的视频播放的解码帧数据,仍然可以为多帧,这多帧数据中包括有要被读取的当前视频播放的解码帧数据。更优地,为了减少所述缓存区的存储空间,所述缓存子单元存储的视频播放的解码帧数据为一帧,该帧数据为当前视频播放的解码帧数据。一旦有后续的视频播放的解码帧数据到来,就替换所存储的视频播放的解码帧数据,保证在所述缓存区中存储的是当前视频播放的解码帧数据。

较佳地,所述渲染单元,具体用于在获得到界面刷新指令的情况下,阻塞视频播放界面主线程,由所述视频播放界面主线程的子线程读取视频播放的解码帧数据和获取界面刷新相关信息后,结束阻塞所述视频播放界面主线程;由所述子线程根据界面刷新相关信息及所述解码帧数据渲染界面。

在本发明实施例中,较佳地,所述视频展现控制单元,还用于停止视频播放,清空存储的所述解码帧数据;

所述渲染单元,还用于清空在界面的视频图层中的渲染。

在本发明实施例中,较佳地,所述视频展现控制单元,具体用于在所述界面的视频图层中设置子控件,以叠加所设置的窗口,所述窗口在所述界面透明呈现或动画呈现;在所述窗口发生改变的情况下,获得界面刷新指令。

本发明实施例还提供一种电子设备,如图9所示,图9为本发明实施例提供的一种电子设备的示例性结构示意图,其中可以集成本申请实施例实现方法的装置。具体来讲:

该电子设备20可以包括一个或一个以上处理核心的处理器810、一个或一个以上计算机可读存储介质的存储器830以及存储在存储器830上并可在处理器810上运行的计算机程序。在执行所述存储器的程序时,可以实现上述实施例所述的在视频播放过程中渲染的方法。

图10为本发明实施例提供的一种电子设备具体例子示意图,如图所示,该电子设备20还可以包括:通信模组820,用于与其他实体进行通信连接(有线方式或无线方式),获取在界面的视频播放数据;计算机可读存储介质的存储器830,可以存储数据及信息,其中一部分数据及信息在由处理器810执行时使得处理器810执行如前述实施例中所述的方法。

另外,该电子设备20还可以包括显示模组840,在处理器810执行如前述实施例中所述的方法时,在显示模组840上显示界面。该电子设备20还可以进一步包括:磁盘介质850,可以用于存储视频播放数据;缓存介质860,至少可以用于存储视频播放的解码帧数据及界面刷新相关信息等等。

在另一个实施例中还提供了一种非瞬时计算机可读存储介质,该非瞬时计算机可读存储介质可以存储指令,其中一部分指令在由处理器执行时使处理器执行如前述实施例中所述的方法。

在又一个实施例中还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,可以使得计算机执行如前述实施例所述的方法。

可以看出,本发明实施例解决了视频播放过程中的界面刷新与帧数据刷新不同步而带来的界面残影问题,及无法有效的完成界面的视频图层的透明叠加窗口的问题,实现了界面刷新与帧数据刷新的同步及达到性能最大化的多核渲染;在界面变化但是没有视频播放解码帧数据的变化情况下,在界面上进行视频播放帧数据的存储策略,以在界面渲染时提供所存储的视频播放的解码帧数据;且通过界面的渲染刷新可自主方便地在界面的视频图层上叠加额外的窗口达到透明视频叠加。

本发明实施例解决了现有渲染过程在帧率比较低、帧间隔时间比较长的情况下造成的界面的画面有残影的问题,以及因为帧数据的解码渲染与界面刷新是两套系统而不容易进行的叠加窗口问题。本发明实施例进一步采用了多核渲染方式,让渲染效率达到同现有渲染相同的性能指标。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:视频数据获取方法及装置、计算机设备、存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类