一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于gstreamer的播放器提升起播黑屏性能的方法与流程

2022-02-23 00:31:26 来源:中国专利 TAG:


1.本发明涉及流媒体播放技术领域,具体涉及一种基于gstreamer的播放器提升起播黑屏性能的方法。


背景技术:

2.随着网络技术和流媒体技术的快速发展,电子消费类产品不断增长,人们对于消费类电子产品的要求越来越高。而消费类电子产品使用最多的功能之一就是音视频播放功能,因此提升音视频播放体验是流媒体开发领域重点关注的问题,也是在这个精益求精的年代提升产品竞争力的关键因素之一。
3.而视频播放的第一个直观感受就是视频起播性能,目前android系统上的播放器在起播视频的时候,在视频缓冲完成以及系统底层解mute之前,会存在一定时长的黑屏问题,即在点击视频播放到出现视频画面之间会存在黑屏现象。这是因为android系统底层显示视频需要在获得稳定视频信号一段时间后,才真正在屏幕上显示,其需要的时间长度不固定,执行解mute的时间点也无法捕获。有时候黑屏的时间很长,这非常影响播放体验感。


技术实现要素:

4.本发明的目的在于提供一种基于gstreamer的播放器提升起播黑屏性能的方法,以期解决背景技术中存在的技术问题。
5.为了实现上述目的,本发明采用以下技术方案:
6.一种基于gstreamer的播放器提升起播黑屏性能的方法,包括:
7.步骤一:在音视频播放前,在产品系统相应目录下的配置文件中配置预滚和异步预滚开关;
8.步骤二:在android产品系统和基于gstreamer的流媒体播放器之间的中间自适应层,获取步骤一配置的开关;
9.步骤三:在基于gstreamer的流媒体播放器的sink层中,根据步骤二中异步预滚开关重起一个线程来控制预滚显示,对于从头起播和seek起播使用不同的起播流程;
10.步骤四:在基于gstreamer的流媒体播放器的sink层中,根据步骤二中的预滚和异步预滚开关值以及步骤三中的异步延时来控制视频第一帧的显示;依据预滚开关的值来决定在解码出第一帧视频后是否需要立马直接显示;并根据异步预滚开关值来决定是否需要延时等待seek操作;
11.步骤五:如果是从头起播视频,当解码完第一帧视频,则立马送去显示;如果是seek起播,则第一帧不做预滚preroll显示,然后视频起播成功开始播放play。
12.在一些实施例中,所述配置文件中配置预滚和异步预滚开关是采用的是系统配置文件的形式配置开关。
13.有益效果
14.本发明提出了一种基于gstreamer的播放器提升起播黑屏性能的方法,通过本发
明的方法,可以实现在视频起播缓冲完成以及系统底层解mute之前,视频播放不会处于黑屏状态,显著缩短了视频起播的黑屏时长,大大提升了视频播放的快速起播体验感,从而进一步提高了产品核心竞争力。
附图说明
15.图1为实施例中android系统上播放器起播视频的正常流程。
16.图2为本发明方法的视频起播流程:其中蓝色虚框中的流程是本发明提出的异步预滚(async preroll)显示第一帧视频画面的起播流程。
具体实施方式
17.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
18.相反,本技术涵盖任何由权利要求定义的在本技术的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本技术有更好的了解,在下文对本技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本技术。
19.本发明提出了一种基于gstreamer的播放器提升起播黑屏性能的方法,使得视频起播缓冲完成以及系统底层解mute之前,视频播放不会处于黑屏状态。
20.具体包括如下技术步骤:
21.步骤一:在音视频播放前,在产品系统(如电视系统)相应目录下的配置文件中配置预滚(preroll)和异步预滚(async preroll)开关,采用的是系统配置文件的形式配置开关,可以随时进行开关控制且操作方便,并不需要去通过修改代码来控制;
22.步骤二:在android产品系统和基于gstreamer的流媒体播放器之间的中间自适应层,获取步骤一配置的开关;
23.步骤三:在基于gstreamer的流媒体播放器的sink(显示)层中,根据步骤二中异步预滚(async preroll)开关重起一个线程来控制预滚显示,从而达到一种异步控制的效果,对于从头起播和seek起播使用不同的起播流程;
24.步骤四:在基于gstreamer的流媒体播放器的sink(显示)层中根据步骤二中的预滚(preroll)和异步预滚(async preroll)开关值以及步骤三中的异步延时来控制视频第一帧的显示。依据预滚(preroll)开关的值来决定在解码出第一帧视频后是否需要立马直接显示;并根据异步预滚(async preroll)开关值来决定是否需要延时等待seek操作;
25.步骤五:如果是从头起播视频,当解码完第一帧视频,则立马送去显示;如果是seek起播(续播如跳过片头\从上次结束位置起播),则第一帧不做预滚preroll显示(seek前的视频第一帧),然后视频起播成功开始播放play。
26.以上步骤只在音视频起播的时候执行一次。
27.以上步骤一中,配置配置预滚(preroll)和异步预滚(async preroll)开关采用音视频播放器技术领域固有的实现方法;以上步骤二中,开关从android产品系统到播放器的传递采用音视频播放器技术领域固有的实现方法;以上步骤三、步骤四、步骤五中的异步控
制第一帧视频的显示的方法采用c语言标准库里的函数。
28.以下结合附图的实现流程图对比图,对本发明的具体实施方式进行详细的说明:
29.如附图1所示,目前android系统上播放器起播视频的正常流程是:
30.起播视频(set url)
‑→
缓冲prepared视频数据
‑→
续播(存在seek to操作)
‑→
播放视频(play)
‑→
显示视频画面(show frame)
‑‑→
解mute。
31.如附图2所示,是本发明提出的一种基于gstreamer的播放器提升起播黑屏性能的方法,从而解决视频起播黑屏现象的方法,其与一般播放器起播视频流程附图1的区别具体包括如下步骤:
32.步骤一:在音视频起播前,在产品系统(如电视系统/vendor/etc/mmp/mmp.conf)相应目录下的配置文件mmp.conf中配置预滚(preroll)和异步预滚(async preroll)开关,采用的是系统配置文件的形式配置开关,可以随时进行开关控制且操作方便,并不需要去通过修改代码来控制;
33.步骤二:点击播腾讯应用中的《您好,母亲大人》,在android产品系统和基于gstreamer的流媒体播放器之间的中间自适应层,获取步骤一配置的开关;
34.步骤三:视频解码出第一帧视频后,在基于gstreamer的流媒体播放器的sink(显示)层中,根据步骤二中获取到的异步预滚(async preroll)开关值重起一个线程来控制视频第一帧的显示与否(延时判断),从而达到一种异步控制的效果,对于从头起播和seek起播使用不同的预滚策略;
35.步骤四:在基于gstreamer的流媒体播放器的sink(显示)层中根据步骤二中的预滚(preroll)和异步预滚(async preroll)开关值以及步骤三中的异步延时来控制视频第一帧的显示。依据预滚(preroll)开关的值来决定在解码出第一帧视频后是否需要立马直接显示;并根据异步预滚(async preroll)开关值来决定是否需要延时等待seek操作;
36.步骤五:如果是从头起播视频,当解码完第一帧视频,则立马送去显示,解mute看到视频画面,然后播放play;如果是seek起播(续播如跳过片头\从上次结束位置起播),则第一帧不做预滚preroll显示(seek前的视频第一帧),然后视频起播成功开始播放play。
37.以上步骤只在音视频起播的时候执行一次。
38.本发明专利针对以上android系统上的播放器在起播视频存在黑屏现象,提出了一种基于gstreamer的播放器提升起播黑屏性能的方法,即采用异步preroll的方式,延迟50ms后进行判断,如果这期间未进行seek操作,则在解码出第一帧视频后,不考虑时间戳以及播放状态,直接显示;若期间进行了seek操作,就不进行预滚preroll显示。
39.通过本发明的方法,可以实现在视频起播缓冲完成以及系统底层解mute之前,视频播放不会处于黑屏状态,显著缩短了视频起播的黑屏时长,大大提升了视频播放的快速起播体验感,从而进一步提高了产品核心竞争力。
40.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献