弹幕显示系统及其CPU消耗控制方法与流程

文档序号:11961409阅读:581来源:国知局
弹幕显示系统及其CPU消耗控制方法与流程

本发明涉及互联网视频技术领域,具体涉及一种弹幕显示系统及其CPU消耗控制方法。



背景技术:

弹幕是指一种在观看视频时,大量以字幕形式呈现的评论与视频同在一个画面的现象。在视频上方大量飘过的评论如密集炮弹一般,故得名弹幕。弹幕会随着视频的播放实时在视频上呈现,这样观看者在观看该视频时能够看到其他观看者和自己发送的弹幕。

视频设备在锁屏状态下系统设置CPU消耗能达到的上限低于视频设备正常使用状态,从而提高了在锁屏状态下弹幕显示所占用的CPU消耗的控制要求,对弹幕显示造成困难。



技术实现要素:

本发明提供一种弹幕显示系统及其CPU消耗控制方法,根据视频设备硬件相关信息及实时显示情况控制CPU消耗,实现在视频设备CPU消耗上限较低的锁屏状态下最优的弹幕显示效果。

为实现上述目的,本发明提供一种用于弹幕显示的CPU消耗控制方法,其特点是,该控制方法包含:

当视频设备的CPU消耗大于预设的CPU消耗阈值,降低弹幕绘制频率,根据式(1)视频设备渲染弹幕每帧所需的消耗降低;

当视频设备的CPU消耗小于等于预设的CPU消耗阈值,提高弹幕绘制频率,根据式(1)视频设备渲染弹幕每帧所需的消耗提高;

式(1)如下:

(a/c)*(d/f)*g=弹幕渲染每帧所需的消耗 (1)

其中,a为弹幕显示区域高度,c为弹幕密集度,d为弹幕滚动时间,f为弹幕绘制频率,g为渲染弹幕的时间;弹幕渲染每帧所需的消耗与CPU消耗成正比。

上述控制方法包含:

当视频设备渲染弹幕每帧所需的消耗降低,视频设备的显示模块处于不饱和状态,视频设备显示渲染后弹幕每帧所需的消耗降低,视频设备根据式(2)降低视频设备的预值帧率;

当视频设备渲染弹幕每帧所需的消耗提高,视频设备的显示模块处于过饱和状态,视频设备显示渲染后弹幕每帧所需的消耗提高,视频设备根据式(2)提高视频设备的预值帧率;

式(2)如下:

(a/c)*(d/e)*g=显示渲染后弹幕每帧所需的消耗 (2)

其中,e为预值帧率;显示渲染后弹幕每帧所需的消耗与CPU消耗成正比。

上述视频设备显示弹幕的方法包含:

视频设备预设弹幕绘制频率和预值帧率,根据其应用程序编程接口获取视频设备的屏幕分辨率、设备屏幕密度和弹幕显示区域尺寸,进而获取最终显示的弹幕字号大小、弹幕滚动时间、滚动速度和弹幕密集度,对弹幕显示进行渲染,并显示经过渲染的弹幕。

上述弹幕绘制频率提高,弹幕滚动时间缩短且弹幕密集度提高,从而提高CPU消耗;弹幕绘制频率降低,弹幕滚动时间延长且弹幕密集度降低,从而降低CPU消耗。

上述视频设备显示弹幕的方法还包含:

视频设备获得每一次输出位图之后与输出位图之前的时间差;

视频设备获得每次输出的位图的质量的权重;

时间差除以权重后得到稳定的评分,该评分为CPU消耗的辅助运算;

当连续预置时间内评分突增加至评分阈值,可判断此时视频设备正在进行高强度计算,从而降低刷新率。

上述视频设备处于锁屏状态时,将CPU消耗提高10%设为视频设备的CPU消耗阈值。

上述视频设备在锁屏状态下显示弹幕的方法包含:

视频设备向gpu申请渲染用的位图空间;

视频设备向内存池申请弹幕绘制的缓存空间;

视频设备向系统注册后台线程的使用权限,并开启一条新的消息线程;

视频设备基于获取的弹幕绘制频率和预值帧率,绘制出包含弹幕的位图,输出在锁屏界面上得以显示弹幕。

一种弹幕显示系统,其特点是,该显示系统包含:

弹幕渲染模块,其输入端连接视频设备的应用程序编程接口,输出最终显示的弹幕字号大小、弹幕滚动时间、滚动速度和弹幕密集度的弹幕渲染指令;

CPU消耗控制模块,其连接弹幕渲染模块,判断弹幕渲染时CPU消耗是否大于预设的CPU消耗阈值,若是则降低弹幕绘制频率,延长弹幕滚动时间,降低弹幕密集度,降低渲染弹幕每帧所需的消耗,降低CPU消耗;若否则提高弹幕绘制频率,缩短弹幕滚动时间,提高弹幕密集度,提高渲染弹幕每帧所需的消耗,提高 CPU消耗;

显示模块,其输入端连接弹幕渲染模块,根据弹幕渲染指令输出渲染后的弹幕。

上述的弹幕渲染模块包含:

应用程序编程接口信息采集模块,其输入端连接视频设备的应用程序编程接口,采集视频设备的应用程序编程接口信息;

视频设备信息采集模块,其输入端连接应用程序编程接口信息采集模块,采集屏幕分辨率、设备屏幕密度、弹幕显示区域尺寸;

弹幕信息渲染模块,输入端连接视频设备信息采集模块,根据屏幕分辨率、设备屏幕密度、弹幕显示区域尺寸获取弹幕字号大小、弹幕滚动时间、滚动速度和弹幕密集度,并输出弹幕渲染指令。

上述显示系统还包含:屏幕控制模块,其根据预设或当前的锁屏指令,控制视频设备的显示模块进入锁屏状态,显示模块绘制出包含弹幕的位图,输出在锁屏界面上得以在锁屏界面显示弹幕。

本发明的弹幕显示系统及其CPU消耗控制方法和现有技术的弹幕显示技术相比,其优点在于,本发明通过获取各个显示设备平台的平台应用程序编程接口,获取设备硬件相关的基础元数据,从而获取视频设备的CPU消耗,根据CPU消耗调整弹幕在不同视频设备上的预值帧率和弹幕绘制频率,实现在视频设备的锁屏界面上显示弹幕,便于用于观看弹幕,并且还能使用户在设备处于锁屏状态下能看到最优的弹幕显示效果。

附图说明

图1为本发明锁屏界面弹幕显示方法的方法流程图;

图2为本发明锁屏界面弹幕显示系统的框图。

具体实施方式

以下结合附图进一步说明本发明的具体实施例。

如图1所示,为本发明公开的一种视频设备锁屏状态下控制CPU消耗的弹幕显示方法,该显示方法具体包含以下步骤:

S1、视频设备弹幕和渲染空间获取。

S1.1、视频设备向GPU申请渲染用的位图空间。

S1.2、视频设备向内存池申请弹幕绘制的缓存空间。

S1.3、进入视频设备的后台,打开后台task模式 ,申请后台线程权限,开启一条新的消息线程。并空放一端空的音乐,维护后台线程的长久性。

S1.4、通过长链接获得控制指令。在后台线程维护一个长链接到服务端用来接收绘制弹幕。通过长链接获得弹幕输出背景。接受所有需要输出的弹幕。

S1.5、维护一个输出带弹幕的连续帧FIFO输出队列。当队列超过60帧后对先入队列抛出,防止冗余无用计算。通过后台权限申请一条长久消息队列。在收到弹幕后模拟时间轴轨从输出队列中获取当前需要展示的弹幕。

S2、视频设备设置弹幕渲染的预值帧率和弹幕绘制频率。预值帧率和弹幕绘制频率用于对弹幕滚动时间和弹幕密集度进行调整。

初始状态时,先将预值帧率和弹幕绘制频率设置为预设的初始值,以启动对弹幕的渲染操作。

当弹幕渲染后,则根据当时收到CPU消耗所的对应的预值帧率和弹幕绘制频率控制弹幕渲染的滚动时间和弹幕密集度。

S3、弹幕渲染和绘制。

弹幕渲染中,视频设备根据其应用程序编程接口渲染弹幕的弹幕字号大小、滚动速度、弹幕滚动时间和弹幕密集度,其中弹幕滚动时间和弹幕密集度根据S2中设置的预值帧率和弹幕绘制频率进行调整。

S3.1、视频设备根据设备屏幕密度和屏幕分辨率获取的最终显示的弹幕字号大小。

S3.1.1、视频设备根据其应用程序编程接口获取设备屏幕密度和屏幕分辨率。

S3.1.2、视频设备根据设备屏幕密度获得全屏下最大弹幕占用行数,由屏幕分辨率获得分辨率高度,根据式(3)获得每行弹幕的行高:

每行弹幕的行高=分辨率高度/全屏下最大弹幕占用行数 (3)。

其中,视频设备或显示设备平台预设有设备屏幕密度与全屏下最大弹幕占用行数的关系。

S3.1.3、每行弹幕的行高通过带入字体变量得到最终显示的标准字号的缩放基准值。

其中,字体变量包含:字符基准线(Baseline)之上至字符最高处的距离(Ascent)、字符基准线之下至字符最低处的距离(Descent)和字符间的行间距(Leading),得到缩放基准值的关系式如下:

Leading=每行弹幕的行高-(Ascent+Descent)

font size=每行弹幕的行高-Leading/2

font size为弹幕字号的基准大小,并定义该弹幕字号的基准大小为最终显示的标准字号的缩放基准值。

S3.1.4、视频设备或显示设备平台预设定弹幕原始数据预设的标准字号的字体像素大小,代表希望显示的弹幕像素大小,但这个预定义大小不适合所有显示屏幕(过大或过小),所以需要结合上述得到的缩放基准值,根据式(4)得到缩放比例。结合缩放比例和当前设定的字号大小,根据式(5)获得最终显示的弹幕字号大小:

缩放比例=缩放基准值/弹幕原始数据预设的标准字号的字体像素大小(4)

最终显示的弹幕字号大小=当前设定的字号大小*缩放比例 (5)。

S3.2、视频设备根据最终显示的弹幕字号大小和弹幕显示区域尺寸获取滚动速度和弹幕滚动时间。

S3.2.1、视频设备根据其应用程序编程接口获取弹幕显示区域尺寸。

S3.2.2、最终显示的弹幕字号大小和弹幕文本长度(弹幕内容的文字长度)通过带入字体变量得到每条弹幕的弹幕显示占用尺寸,弹幕显示占用尺寸包含弹幕显示占用高度和弹幕显示占用宽度。

其中,字体变量包含:字符基准线(Baseline)之上至字符最高处的距离(Ascent)、字符基准线之下至字符最低处的距离(Descent)和字符间的行间距(Leading)。

S3.2.3、预设滚动速度基准值,结合弹幕显示区域尺寸的宽度,根据式(6)获得弹幕滚动显示时间。然后根据弹幕显示占用宽度、弹幕显示区域尺寸的宽度和弹幕滚动显示时间,根据式(7)获得弹幕滚动显示时间和滚动速度:

弹幕滚动时间=弹幕显示区域尺寸的宽度/滚动速度基准值 (6)

滚动速度=(弹幕显示区域尺寸的宽度+弹幕显示占用宽度)/弹幕滚动时间(7)。

S3.2.4、视频设备根据预值帧率和弹幕绘制频率调整弹幕滚动时间和滚动速度,以实现对CPU消耗进行控制。

S3.3、视频设备根据设备屏幕密度获取弹幕密集度。

S3.3.1、视频设备根据其应用程序编程接口获取设备屏幕密度。

S3.3.2、根据预设的设备屏幕密度与同屏弹幕条数的范围的关系,由设备屏幕密度得到同屏弹幕条数的范围。本实施例中可通过表1获得。

S3.3.3、同屏弹幕条数的范围中取同屏弹幕最大条数,以同屏弹幕最大条数为基准得到弹幕密集度。

另外,视频设备还需要根据弹幕密集度动态调整滚动速度,弹幕滚动时间与弹幕密集度的关系呈反比,即滚动速度与弹幕密集度的关系呈正比。

S3.3.4、视频设备根据预值帧率和弹幕绘制频率调整弹幕密集度,以控制CPU消耗。

S3.3.5、在收到输出队列指示进行绘制后,从模拟弹幕池中找到相应弹幕采用弹幕绘制模块进行绘制,绘制和渲染完成的弹幕由内存缓存。

S4、视频设备显示弹幕的弹幕滚动时间和弹幕密集度对视频设备的CPU消耗产生影响,视频设备根据CPU消耗对预值帧率和弹幕绘制频进行优化,以控制CPU消耗。

S4.1、视频设备实时CPU消耗监控,并判断CPU消耗是否大于预设的CPU消耗阈值。本实施中,视频设备处于锁屏状态时,将CPU消耗提高10%设为视频设备的CPU消耗阈值。

若是,当视频设备的CPU消耗大于预设的CPU消耗阈值,降低弹幕绘制频率,根据式(1)视频设备渲染弹幕每帧所需的消耗降低,跳转到S4.2。

若否,当视频设备的CPU消耗小于等于预设的CPU消耗阈值,提高弹幕绘制频率,根据式(1)视频设备渲染弹幕每帧所需的消耗提高,跳转到S4.1.2。

式(1)如下:

(a/c)*(d/f)*g=弹幕渲染每帧所需的消耗 (1)

其中,a为弹幕显示区域高度,c为弹幕密集度,d为弹幕滚动时间,f为弹幕绘制频率,g为渲染弹幕的时间。

其中,弹幕渲染每帧所需的消耗与CPU消耗成正比。

可知,弹幕绘制频率提高,弹幕滚动时间缩短且弹幕密集度提高,从而提高CPU消耗;

而弹幕绘制频率降低,弹幕滚动时间延长且弹幕密集度降低,从而降低CPU消耗。

实际操作中可通过以下实现,视频设备获得每一次输出位图之后与输出位图之前的时间差。视频设备获得每次输出的位图的质量的权重。时间差除以权重后得到一个稳定评分。此评分的作用是作为cpu消耗的辅助运算,当连续评分变低时,需要降低绘制弹幕频率。当连续预置时间,例如10S,内评分突增加至一个评分预值,例如20%,可判断此时视频设备正在进行高强度计算,从而降低刷新率。

S4.1.2、当视频设备渲染弹幕每帧所需的消耗提高,视频设备的显示模块处于过饱和状态,视频设备显示渲染后弹幕每帧所需的消耗提高,视频设备根据式(2)提高视频设备的预值帧率,跳转到S5。

式(2)如下:

(a/c)*(d/e)*g=显示渲染后弹幕每帧所需的消耗 (2)

其中,e为预值帧率;显示渲染后弹幕每帧所需的消耗与CPU消耗成正比。

S4.2、当视频设备渲染弹幕每帧所需的消耗降低,视频设备的显示模块处于不饱和状态,视频设备显示渲染后弹幕每帧所需的消耗降低,视频设备根据式(2)降低视频设备的预值帧率,跳转到S5。

S5、视频设备判断CPU消耗是否符合锁屏状态下弹幕显示,即判断CPU消耗是否处于预设的锁屏状态CPU消耗的数值范围内,若是,则视频设备绘制出包含弹幕的位图,输出在锁屏界面的texture上得以显示渲染后的弹幕,并等待循环输出下一帧弹幕。若否,则跳转到S2。

如图2所示,本发明还公开了一种锁屏界面弹幕显示系统的实施例,该显示系统包含:弹幕渲染模块21、锁屏控制模块22、显示模块23和CPU消耗控制模块24。

弹幕渲染模块21输入端连接视频设备的应用程序编程接口,输出最终显示的弹幕字号大小、滚动速度和弹幕密集度的弹幕调整指令。

具体的,弹幕渲染模块21包含:应用程序编程接口信息采集模块211、视频设备信息采集模块212和弹幕信息调整模块213。

应用程序编程接口信息采集模块211输入端连接视频设备的应用程序编程接口,采集视频设备的应用程序编程接口信息。

视频设备信息采集模块212输入端连接应用程序编程接口信息采集模块,采集屏幕分辨率、设备屏幕密度和弹幕显示区域尺寸。

弹幕信息调整模块213输入端连接视频设备信息采集模块,根据屏幕分辨率、设备屏幕密度和弹幕显示区域尺寸获取弹幕在该视频设备上的渲染频率和弹幕绘制频率,并输出弹幕调整指令。

CPU消耗控制模块24,其连接弹幕渲染模块21,判断弹幕渲染时CPU消耗是否大于预设的CPU消耗阈值,若是,则降低弹幕绘制频率,延长弹幕滚动时间,降低弹幕密集度,降低渲染弹幕每帧所需的消耗,降低CPU消耗;若否,则提高弹幕绘制频率,缩短弹幕滚动时间,提高弹幕密集度,提高渲染弹幕每帧所需的消耗,提高 CPU消耗。

锁屏控制模块22用于当达到视频设备预设的无操作时间阈值或接收到实时的锁屏操作,则输出锁屏指令。

显示模块23输入端连接弹幕调整模块和锁屏控制模块,接收锁屏指令进入锁屏状态后,根据弹幕显示调整指令显示输出调整后弹幕。

其根据预设或当前的锁屏指令,控制视频设备的显示模块进入锁屏状态,显示锁屏界面;显示模块绘制出包含弹幕的位图,输出在锁屏界面上得以在锁屏界面显示弹幕。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1