发明内容
本发明解决的技术问题是提供一种弹幕播放方法、装置、计算机可读存储介质和终端,以解决如何使得弹幕与其轨道动态匹配的技术问题。
为了实现上述目的,根据本发明的第一方面,提供以下技术方案:
一种弹幕播放方法,包括:
接收当前待播放弹幕的播放请求;
根据所述播放请求,确定播放所述当前待播放弹幕的目标弹幕轨道;
将所述当前待播放弹幕调度至所述目标弹幕轨道;
在所述目标弹幕轨道上播放所述当前待播放弹幕。
进一步地,在所述接收当前待播放弹幕的播放请求的步骤之前,所述方法还包括:
生成预设弹幕轨道。
进一步地,所述生成预设弹幕轨道的步骤,具体包括:
获取显示区域的属性信息;其中,所述显示区域用于弹幕播放;
根据所述显示区域的所述属性信息,
生成所述预设弹幕轨道。
进一步地,所述当前待播放弹幕的播放请求包括所述当前待播放弹幕的字体高度信息;
所述根据所述播放请求,确定播放所述当前待播放弹幕的目标弹幕轨道的步骤,具体包括:
获取预设弹幕轨道高度信息;
根据所述当前待播放弹幕的字体高度信息和所述预设弹幕轨道高度信息,确定所述当前待播放弹幕占用预设弹幕轨道的数量;
根据所述当前待播放弹幕占用预设弹幕轨道的数量,确定播放所述当前待播放弹幕的所述目标弹幕轨道。
进一步地,所述根据所述当前待播放弹幕占用预设弹幕轨道的数量,确定播放所述当前待播放弹幕的所述目标弹幕轨道的步骤,具体包括:
根据所述当前待播放弹幕占用预设弹幕轨道的数量,判断是否存在相邻的所述数量个处于空闲状态的预设弹幕轨道;
若存在,则将所述相邻的所述数量个处于空闲状态的预设弹幕轨道合并为一个虚拟弹幕轨道,并将所述虚拟弹幕轨道确定为播放所述当前待播放弹幕的所述目标弹幕轨道。
进一步地,所述根据所述当前待播放弹幕占用预设弹幕轨道的数量,判断是否存在相邻的所述数量个处于空闲状态的预设弹幕轨道,具体包括:
若所述相邻的所述数量个预设弹幕轨道中不存在正在播放的弹幕,则判断为存在相邻的所述数量个处于空闲状态的预设弹幕轨道;
若所述相邻的所述数量个预设弹幕轨道中存在正在播放的弹幕,则继续判断正在播放的弹幕是否已经完全进入所述显示区域,且正在播放的弹幕的弹幕速度均不小于所述当前待播放弹幕的弹幕速度,则判断为存在相邻的所述数量个处于空闲状态的预设弹幕轨道。
进一步地,所述数量为一个或多个。
为了实现上述目的,根据本发明的第二方面,还提供以下技术方案:
一种弹幕播放装置,包括:
接收模块,用于接收当前待播放弹幕的播放请求;
确定模块,用于根据所述播放请求,确定播放所述当前待播放弹幕的目标弹幕轨道;
调度模块,用于将所述当前待播放弹幕调度至所述目标弹幕轨道;
播放模块,用于在所述目标弹幕轨道上播放所述当前待播放弹幕。
进一步地,所述装置还包括:
生成模块,用于生成预设弹幕轨道。
进一步地,所述生成模块具体用于:
获取显示区域的属性信息;其中,所述显示区域用于弹幕播放;
根据显示区域的属性信息,生成所述预设弹幕轨道。
进一步地,所述当前待播放弹幕的播放请求包括所述当前待播放弹幕的字体高度信息;
所述确定模块具体用于:
获取预设弹幕轨道高度信息;
根据所述当前待播放弹幕的字体高度信息和所述预设弹幕轨道高度信息,确定所述当前待播放弹幕占用预设弹幕轨道的数量;
根据所述当前待播放弹幕占用预设弹幕轨道的数量,确定播放所述当前待播放弹幕的所述目标弹幕轨道。
进一步地,所述确定模块具体还用于:
根据所述当前待播放弹幕占用预设弹幕轨道的数量,判断是否存在相邻的所述数量个处于空闲状态的预设弹幕轨道;
若存在,则将所述相邻的所述数量个处于空闲状态的预设弹幕轨道合并为一个虚拟弹幕轨道,并将所述虚拟弹幕轨道确定为播放所述当前待播放弹幕的所述目标弹幕轨道。
进一步地,所述确定模块具体还用于:
若所述相邻的所述数量个预设弹幕轨道中不存在正在播放的弹幕,则判断为存在相邻的所述数量个处于空闲状态的预设弹幕轨道;
若所述相邻的所述数量个预设弹幕轨道中存在正在播放的弹幕,则继续判断正在播放的弹幕是否已经完全进入所述显示区域,且正在播放的弹幕的弹幕速度均不小于所述当前待播放弹幕的弹幕速度,则判断为存在相邻的所述数量个处于空闲状态的预设弹幕轨道。
进一步地,所述数量为一个或多个。
为了实现上述目的,根据本发明的第三方面,还提供以下技术方案:
一种弹幕播放硬件装置,包括:
存储器,用于存储非暂时性计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现如本发明第一方面所述的弹幕播放方法。
为了实现上述目的,根据本发明的第四方面,还提供以下技术方案:
一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行如本发明第一方面所述的弹幕播放方法。
为了实现上述目的,根据本发明的第五方面,还提供以下技术方案:
一种弹幕播放终端,包括本发明第二方面所述的一种弹幕播放装置。
本发明实施例提供一种弹幕播放方法、装置、计算机可读存储介质和终端。其中,该弹幕播放方法包括接收当前待播放弹幕的播放请求;根据播放请求,确定播放当前待播放弹幕的目标弹幕轨道;将当前待播放弹幕调度至目标弹幕轨道;在目标弹幕轨道上播放当前待播放弹幕。通过本发明实施例,根据当前待播放弹幕的播放请求,确定出与之相应的目标弹幕轨道;然后,在所确定出的目标弹幕轨道上进行弹幕的播放;由此可以避免因弹幕字体尺寸与弹幕轨道不匹配而造成的弹幕显示不完全的缺陷,还可以避免进入同一弹幕轨道的前后两个弹幕之间发生碰撞的缺陷,从而实现了弹幕与其轨道可以动态匹配的技术效果,而且还提高了弹幕轨道的使用率。
上述说明仅是本发明技术方案的概述,为了能更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本发明,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
为了解决如何使得弹幕与其轨道动态匹配的技术问题,本发明实施例提供一种弹幕播放方法。如图1a所示,该方法主要包括如下步骤S100至步骤S130。其中:
S100:接收当前待播放弹幕的播放请求。
其中,该播放请求可以由用户利用终端通过触摸、点击或触发按键等操作来发送,而且该播放请求既可以是用户在本地发送的请求,也可以是用户远程发送的请求,本发明对此不作具体限定。其中,该终端例如可以是智能手机、平板电脑、个人数字助理、笔记本电脑、台式计算机、智能电视机、可穿戴设备、虚拟现实设备等。
上述当前待播放弹幕既可以位于本地缓存的弹幕队列中,也可以位于远程数据库的弹幕队列中,本发明对此不作限定。
在一个可选的实施例中,在步骤S100之前,该弹幕播放方法还可以包括:生成至预设弹幕轨道。
在本实施例中,预先在播放弹幕的显示区域上生成至少两个预设弹幕轨道,以在其上播放弹幕。
具体地,上述生成预设弹幕轨道的步骤主要包括如下步骤Sa1和步骤Sa2。
Sa1:获取显示区域的属性信息。其中,该显示区域用于弹幕播放。
在本步骤中,显示区域为播放弹幕的区域。以视频播放器为例,该视频播放器包括控制区域(例如,控制条);该显示区域是指该视频播放器上除去控制区域之外的区域。
其中,该显示区域的属性信息包括但不限于该显示区域的高度、基准字号等。
其中,显示区域的基准字号一般是指视频播放器上显示区域的默认字体大小。举例来说,如果该基准字号以px(pixel,像素)为单位,则对于移动端而言,基准字号一般为10px;对于台式计算机而言,该基准字号一般为12px。其中,移动端包括但不限于智能手机、平板电脑、个人数字助理、膝上型计算机、可穿戴设备、虚拟现实设备等。在本公开中,与上述台式计算机相等同的装置包括但不限于智能电视机、工控机等。
Sa2:根据显示区域的属性信息,生成预设弹幕轨道。
在本公开的一个示例中,上述预设弹幕轨道数量可以通过下式得到:
式中,m表示预设弹幕轨道数量;h表示显示区域的高度;A表示基准字号。其中,符号表示向下取整。
在本示例中,通过向下取整运算,得到整数个预设弹幕轨道。
在本公开的另一个示例中,预设弹幕轨道数量还可以通过下式得到:
式中,m表示预设弹幕轨道数量;h表示显示区域的高度;A表示基准字号。
在上述公式中,会出现显示区域的高度没有被基准字号整除的情况,此时,会存在一条比与其他预设弹幕轨道的高度低的预设弹幕轨道。在这种情况下,可以将与其匹配的当前待播放弹幕推送至该预设弹幕轨道上进行播放。
在本步骤中,根据所确定出的预设弹幕轨道数量,在显示区域上划分出用于播放弹幕的轨道,作为预设弹幕轨道。其中,对显示区域的划分可以是均分,也可以是非均分(例如,公式2所述情况),而且,这种划分既可以是水平方向的划分,也可以是垂直方向的划分,还可以是其他角度的划分,本发明对此均不作限定。
S110:根据播放请求,确定播放当前待播放弹幕的目标弹幕轨道。
在本步骤中,可以根据用户发送来的弹幕播放请求,选定出与当前待播放弹幕相匹配的目标弹幕轨道,以进行弹幕播放。
在一个可选的实施例中,当前待播放弹幕的播放请求包括当前待播放弹幕的字体高度信息;如图1b所示,步骤S110具体还可以包括如下步骤S111和步骤S113。其中:
S111:获取预设弹幕轨道高度信息。
S112:根据当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,确定当前待播放弹幕占用预设弹幕轨道的数量。
在本步骤中,可以根据当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,获得当前待播放弹幕的字体的高度值以及预设弹幕轨道的高度值,并据此来计算出为播放当前待播放弹幕而需要占用的预设弹幕轨道的数量。
在一个优选的实施例中,步骤S112具体可以包括如下步骤S1121和步骤S1122。其中:
S1121:根据当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,确定高度差值。
其中,本步骤基于当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,将当前待播放弹幕的字体高度数值与预设弹幕轨道高度数值之差作为高度差值。
例如,假设当前待播放弹幕的字体高度为15px、预设弹幕轨道高度为10px;则高度差值为5px。
S1122:根据高度差值,确定当前待播放弹幕占用预设弹幕轨道的数量。
在一个优选的实施例中,步骤S1122具体可以包括如下步骤Sb1和步骤Sb2。其中:
Sb1:如果该高度差值大于零,则将高度差值与预设弹幕轨道高度信息进行比较。
在本步骤中,高度差值大于零表明当前待播放弹幕的字体高度大于预设弹幕轨道的高度。
其中,该比较可以是差值比较,也可以是商之比,本发明对此不作限定。以商之比为例,将高度差值与预设弹幕轨道高度信息进行比较,得到高度比;然后,利用该高度比进行后续确定当前待播放弹幕占用预设弹幕轨道数量的步骤。举例来说,假设高度差值为5px、预设弹幕轨道高度为10px;则高度比为0.5。
Sb2:根据比较结果,确定当前待播放弹幕占用预设弹幕轨道的数量。
沿用上例,如果该高度比为小于等于1的数,则对该高度比进行向上取整运算,得到1,这表明:为了与当前待播放弹幕中的弹幕字体尺寸相匹配,至少还额外需要1倍高度的预设弹幕轨道,也就是说,当前待播放弹幕占用预设弹幕轨道的数量为2;如果该高度比为大于1的数,如1.5,则对该高度比进行向上取整运算,得到2,这表明:为了与当前待播放弹幕中的弹幕字体尺寸相匹配,至少还额外需要2倍高度的预设弹幕轨道,也就是说,当前待播放弹幕占用预设弹幕轨道的数量为3,将该运算得到的数值作为当前待播放弹幕占用预设弹幕轨道的数量。
举例来说,继续沿用前述弹幕字体高度的示例,得到高度比为0.5;对该0.5进行向上取整运算,得到1,则表明:为了完整地播放当前待播放弹幕,至少还额外需要1倍高度的预设弹幕轨道。所以,当前待播放弹幕占用预设弹幕轨道的数量确定为2。
S113:根据当前待播放弹幕占用预设弹幕轨道的数量,确定播放当前待播放弹幕的目标弹幕轨道。
举例而言,如果当前待播放弹幕占用预设弹幕轨道的数量为2,则可以将显示区域上相邻的两条预设弹幕轨道,确定为播放当前待播放弹幕的目标弹幕轨道。
在一个可选的实施例中,步骤S113具体包括:
S1131:根据当前待播放弹幕占用预设弹幕轨道的数量,判断是否存在相邻的所述数量个处于空闲状态的预设弹幕轨道;
S1132若存在,则将相邻的数量个处于空闲状态的预设弹幕轨道合并为一个虚拟弹幕轨道,并将虚拟弹幕轨道确定为播放当前待播放弹幕的目标弹幕轨道。
图2示例性地示出了将相邻两个预设弹幕轨道合并为一个虚拟弹幕轨道的示意图。
假设:显示区域包括第一至第五预设弹幕轨道;第一预设弹幕轨道播放的弹幕为“我是很长的弹幕”;第二预设弹幕轨道播放的弹幕是“我是很长的弹幕”;第三至第五预设弹幕轨道空闲;当前待播放弹幕为“我是很高的弹幕”,该当前待播放弹幕占用预设弹幕轨道的数量为2。
如图2所示,存在3条空闲的预设弹幕轨道,而且,当前待播放弹幕占用预设弹幕轨道的数量为2;本实施例将相邻的2个处于空闲状态的预设弹幕轨道(例如,第三预设弹幕轨道和第四预设弹幕轨道)合并为一个虚拟弹幕轨道,并将该虚拟弹幕轨道确定为播放当前待播放弹幕(即:我是很高的弹幕)的目标弹幕轨道。
在实施例中,步骤S1131中的根据当前待播放弹幕占用预设弹幕轨道的数量,判断是否存在相邻的所述数量个处于空闲状态的预设弹幕轨道,具体包括以下步骤,其中:
S11311:若所述数量为1个,则判断是否存在1个处于空闲状态的预设弹幕轨道;
S11312:若所述数量为多个,则判断是否存在相邻的所述多个处于空闲状态的预设弹幕轨道。
例如,所述数量为2,则步骤S11312判断是否存在相邻的2个处于空闲状态的预设弹幕轨道。
本实施例通过将相邻的预设弹幕轨道合并,使得合并后的轨道能够适于当前待播放弹幕的播放,从而动态地使得弹幕与其轨道相匹配,避免了因弹幕字体高度大于弹幕轨道高度而造成的弹幕显示不完全的缺陷。
在实施例中,步骤S1131具体包括:
步骤Sc1:若相邻的所述数量个预设弹幕轨道中不存在正在播放的弹幕,则判断为存在相邻的所述数量个处于空闲状态的预设弹幕轨道;
步骤Sc2:若相邻的所述数量个预设弹幕轨道中存在正在播放的弹幕,则继续判断正在播放的弹幕是否已经完全进入显示区域,且正在播放的弹幕的弹幕速度均不小于当前待播放弹幕的弹幕速度,则判断为存在相邻的所述数量个处于空闲状态的预设弹幕轨道。
上述各个实施例中的数量为一个或多个。作为示例,可以将显示区域的宽度(即从弹幕进入显示区域的边缘至运动出显示区域的边缘之间的长度)与正在播放的弹幕的时长之比(即正在播放的弹幕的显示时间)作为正在播放的弹幕的弹幕速度。
例如,假设弹幕显示区域的宽度时300px(Pixel,像素)、弹幕的播放时长为10秒、弹幕显示区域的帧率为60fps(Frames Per Second,每秒帧数),则弹幕速度可由下式确定:
式中,v表示弹幕速度;w表示弹幕显示区域的宽度;t表示弹幕的播放时长;p表示弹幕显示区域的帧率。
在实施例中,正在播放的弹幕已完全进入显示区域之后,再针对其速度进行判断,如果正在播放的弹幕的弹幕速度均不小于当前待播放弹幕的弹幕速度,则当前待播放弹幕不会与正在播放的弹幕相碰撞;因此,判断为存在相邻的数量个处于空闲状态的预设弹幕轨道。
在实施例中,步骤Sc2的判断正在播放的弹幕是否已经完全进入显示区域,具体包括如下步骤Sc21和步骤Sc22。其中:
Sc21:若正在播放的弹幕与显示区域的第一边缘相接触,则判定正在播放的弹幕没有已经完全进入显示区域。其中,第一边缘为正在播放的弹幕进入显示区域时所经过的显示区域边缘。
在本步骤中,如果以用户观看视频的角度为准,则上述第一边缘可以为显示区域右边缘。当然,如果弹幕从显示区域的左侧进入,那么,显示区域的左边缘也可以作为第一边缘。
本步骤为了确保当前待播放弹幕不会与正在播放的弹幕相碰撞,所以,在正在播放的弹幕与显示区域的第一边缘相接触时,判定正在播放的弹幕没有已经完全进入显示区域,以使得当前待播放弹幕不进入显示区域。
Sc22:若正在播放的弹幕未与显示区域的第一边缘相接触,则判定正在播放的弹幕已经完全进入显示区域。
在本步骤中,正在播放的弹幕未与显示区域的第一边缘相接触,这表明正在播放的弹幕已经进入显示区域内距离第一边缘一定的距离了,而且此时,正在播放的弹幕的速度大于当前待播放弹幕的速度;所以,此时,当前待播放弹幕进入显示区域,其不会与当前正在播放的弹幕相碰撞。
当然,本领域技术人员应能理解,如果不存在相邻的所述数量个处于空闲状态的预设弹幕轨道,表明当前不存在适合于当前待播放弹幕的弹幕轨道。
这里,需要说明的是,如果此时没有可合并的预设弹幕轨道,则本发明实施例还可以从弹幕队列中选择下一个当前待播放弹幕,对其进行判断,以确定是否与预设弹幕轨道相匹配。
举例来说,假设弹幕队列中包括第一当前待播放弹幕和第二当前待播放弹幕。如果根据第一当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,确定第一当前待播放弹幕占用预设弹幕轨道的数量为2,而且,此时,不存在空闲的、相邻的预设弹幕轨道;那么,从弹幕队列中选择第二当前待播放弹幕;然后,根据该第二当前待播放弹幕,确定其目标弹幕轨道;以此类推,在此不再赘述。
S120:将当前待播放弹幕调度至目标弹幕轨道。
在本步骤中,可以随机或按照预定方式将当前待播放弹幕调度至目标弹幕轨道上。
S130:在目标弹幕轨道上播放当前待播放弹幕。
在实际应用中,例如可以通过浏览器加载当前待播放弹幕,在显示区域的页面内添加画布元素(例如,canvas元素),且在绘图脚本中指定绘制起始位置(例如,显示区域的右顶点)并获取所添加的画布元素;当绘制完当前帧后,通过请求动画帧接口(例如,requestAnimationFrame函数、setTimeout、setlnterval等)调用回调函数,在该回调函数中进行下一帧图像的绘制且在该回调函数的最后结尾处再次调用requestAnimationFrame函数,由此使得一帧一帧地图像绘制下去,从而实现对当前待播放弹幕的播放。其中,优选地,利用requestAnimationFrame函数来实现弹幕,其可以兼容多种浏览器,便于浏览器智能地判断帧率。
综上所述,本发明实施例通过采取上述各个技术方案,根据当前待播放弹幕的播放请求,确定出与之相应的目标弹幕轨道;然后,在所确定出的目标弹幕轨道上进行弹幕的播放;由此可以避免因弹幕字体尺寸与弹幕轨道不匹配而造成的弹幕显示不完全的缺陷,还可以避免进入同一弹幕轨道的前后两个弹幕之间发生碰撞的缺陷,从而解决了弹幕与其轨道可以动态匹配的技术问题,还提高了弹幕轨道的使用率。
下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例实现的步骤,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明方法实施例。
为了解决如何使得弹幕与其轨道动态匹配的技术问题,本发明实施例还提供一种弹幕播放装置。如图3所示,该装置主要包括:接收模块31、确定模块32、调度模块33和播放模块34。其中,接收模块31用于接收当前待播放弹幕的播放请求。确定模块32用于根据播放请求,确定播放当前待播放弹幕的目标弹幕轨道。调度模块33用于将当前待播放弹幕调度至目标弹幕轨道。播放模块34用于在目标弹幕轨道上播放当前待播放弹幕。
在本实施例中,该播放请求可以由用户利用终端通过触摸、点击或触发按键等操作来发送,而且该播放请求既可以是用户在本地发送的请求,也可以是用户远程发送的请求,本发明对此不作具体限定。其中,该终端例如可以是智能手机、平板电脑、个人数字助理、笔记本电脑、台式计算机、智能电视机、可穿戴设备、虚拟现实设备等。
上述当前待播放弹幕既可以位于本地缓存的弹幕队列中,也可以位于远程数据库的弹幕队列中,本发明对此不作限定。
上述调度模块33可以随机或按照预定方式将当前待播放弹幕调度至目标弹幕轨道上。
上述播放模块34加载当前待播放弹幕,在显示区域的页面内添加画布元素(例如,canvas元素),且在绘图脚本中指定绘制起始位置(例如,显示区域的右顶点)并获取所添加的画布元素;当绘制完当前帧后,通过请求动画帧接口(例如,requestAnimationFrame函数、setTimeout、setlnterval等)调用回调函数,在该回调函数中进行下一帧图像的绘制且在该回调函数的最后结尾处再次调用requestAnimationFrame函数,由此使得一帧一帧地图像绘制下去,从而实现对当前待播放弹幕的播放。其中,优选地,利用requestAnimationFrame函数来实现弹幕,其可以兼容多种浏览器,便于浏览器智能地判断帧率。
在一个可选的实施例中,该弹幕播放装置还可以包括生成模块。其中,该生成模块用于生成至少两个预设弹幕轨道。
在一个可选的实施例中,上述生成模块具体用于:获取显示区域的属性信息;其中,显示区域用于弹幕播放;根据显示区域的属性信息,生成至少两个预设弹幕轨道。
其中,显示区域为播放弹幕的区域。以视频播放器为例,该视频播放器包括控制区域(例如,控制条);该显示区域是指该视频播放器上除去控制区域之外的区域。
其中,该显示区域的属性信息包括但不限于该显示区域的高度、基准字号等。
在一个可选的实施例中,当前待播放弹幕的播放请求包括当前待播放弹幕的字体高度信息;预设弹幕轨道包括预设弹幕轨道高度信息;
确定模块32具体用于:获取预设弹幕轨道高度信息;根据当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,确定当前待播放弹幕占用预设弹幕轨道的数量;根据当前待播放弹幕占用预设弹幕轨道的数量,确定播放当前待播放弹幕的目标弹幕轨道。
在一个可选的实施例中,确定模块32具体还用于:根据当前待播放弹幕占用预设弹幕轨道的数量,判断是否存在相邻的数量个处于空闲状态的预设弹幕轨道;若存在,则将相邻的数量个处于空闲状态的预设弹幕轨道合并为一个虚拟弹幕轨道,并将虚拟弹幕轨道确定为播放当前待播放弹幕的目标弹幕轨道。
在本实施例中,若所述数量为1个,则确定模块32判断是否存在1个处于空闲状态的预设弹幕轨道;若所述数量为多个,则确定模块32判断是否存在相邻的所述多个处于空闲状态的预设弹幕轨道。
本实施例通过将相邻的预设弹幕轨道合并,使得合并后的轨道能够适于当前待播放弹幕的播放,从而动态地使得弹幕与其轨道相匹配,避免了因弹幕字体高度大于弹幕轨道高度而造成的弹幕显示不完全的缺陷。
在一个可选的实施例中,确定模块32具体还用于:若相邻的数量个预设弹幕轨道中不存在正在播放的弹幕,则判断为存在相邻的数量个处于空闲状态的预设弹幕轨道;若相邻的数量个预设弹幕轨道中存在正在播放的弹幕,则继续判断正在播放的弹幕是否已经完全进入显示区域,且正在播放的弹幕的弹幕速度均不小于当前待播放弹幕的弹幕速度,则判断为存在相邻的数量个处于空闲状态的预设弹幕轨道。
在一个可选的实施例中,该数量为一个或多个。
作为示例,可以将显示区域的宽度(即从弹幕进入显示区域的边缘至运动出显示区域的边缘之间的长度)与正在播放的弹幕的时长之比(即正在播放的弹幕的显示时间)作为正在播放的弹幕的弹幕速度。
例如,假设弹幕显示区域的宽度时300px(Pixel,像素)、弹幕的播放时长为10秒、弹幕显示区域的帧率为60fps(Frames Per Second,每秒帧数),则弹幕速度可通过确定模块32根据下式确定:
式中,v表示弹幕速度;w表示弹幕显示区域的宽度;t表示弹幕的播放时长;p表示弹幕显示区域的帧率。
在实施例中,正在播放的弹幕已完全进入显示区域之后,再针对其速度进行判断,如果正在播放的弹幕的弹幕速度均不小于当前待播放弹幕的弹幕速度,则当前待播放弹幕不会与正在播放的弹幕相碰撞;因此,确定模块32判断为存在相邻的数量个处于空闲状态的预设弹幕轨道。
在实施例中,确定模块32还可以具体用于:若正在播放的弹幕与显示区域的第一边缘相接触,则判定正在播放的弹幕没有已经完全进入显示区域;其中,第一边缘为正在播放的弹幕进入显示区域时所经过的显示区域边缘;以及,若正在播放的弹幕未与显示区域的第一边缘相接触,则判定正在播放的弹幕已经完全进入显示区域。
在本实施例中,如果以用户观看视频的角度为准,则上述第一边缘可以为显示区域右边缘。当然,如果弹幕从显示区域的左侧进入,那么,显示区域的左边缘也可以作为第一边缘。
为了确保当前待播放弹幕不会与正在播放的弹幕相碰撞,所以,在正在播放的弹幕与显示区域的第一边缘相接触时,确定模块32判定正在播放的弹幕没有已经完全进入显示区域,以使得当前待播放弹幕不进入显示区域。如果正在播放的弹幕未与显示区域的第一边缘相接触,这表明正在播放的弹幕已经进入显示区域内距离第一边缘一定的距离了,而且此时,正在播放的弹幕的速度大于当前待播放弹幕的速度;所以,此时,当前待播放弹幕进入显示区域,其不会与当前正在播放的弹幕相碰撞。
当然,本领域技术人员应能理解,如果不存在相邻的所述数量个处于空闲状态的预设弹幕轨道,表明当前不存在适合于当前待播放弹幕的弹幕轨道。
这里,需要说明的是,如果此时没有可合并的预设弹幕轨道,则本发明实施例提供的弹幕播放装置还可以从弹幕队列中选择下一个当前待播放弹幕,对其进行判断,以确定是否与预设弹幕轨道相匹配。
举例来说,假设弹幕队列中包括第一当前待播放弹幕和第二当前待播放弹幕。如果根据第一当前待播放弹幕的字体高度信息和预设弹幕轨道高度信息,确定第一当前待播放弹幕占用预设弹幕轨道的数量为2,而且,此时,不存在空闲的、相邻的预设弹幕轨道;那么,从弹幕队列中选择第二当前待播放弹幕;然后,根据该第二当前待播放弹幕,确定其目标弹幕轨道;以此类推,在此不再赘述。
有关装置实施例的工作原理、取得的有益效果等可以参考前述方法实施例中的有关说明,在此不再赘述。
综上所述,本发明实施例利用接收模块31、确定模块32、调度模块33和播放模块34,根据当前待播放弹幕的播放请求,确定出与之相应的目标弹幕轨道;然后,在所确定出的目标弹幕轨道上进行弹幕的播放;由此可以避免因弹幕字体尺寸与弹幕轨道不匹配而造成的弹幕显示不完全的缺陷,还可以避免进入同一弹幕轨道的前后两个弹幕之间发生碰撞的缺陷,从而解决了弹幕与其轨道可以动态匹配的技术问题,还提高了弹幕轨道的使用率。
图4是图示根据本公开的实施例的弹幕播放硬件装置的硬件框图。如图4所示,根据本公开实施例的弹幕播放硬件装置40包括存储器41和处理器42。
该存储器41用于存储非暂时性计算机可读指令。具体地,存储器41可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
该处理器42可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制弹幕播放硬件装置40中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器42用于运行该存储器41中存储的该计算机可读指令,使得该弹幕播放硬件装置40执行前述的本公开各实施例的弹幕播放方法的全部或部分步骤。
本领域技术人员应能理解,为了解决如何获得良好用户体验效果的技术问题,本实施例中也可以包括诸如通信总线、接口等公知的结构,这些公知的结构也应包含在本发明的保护范围之内。
有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
本实施例在处理器42执行存储器41上的非暂时性计算机可读指令时,根据当前待播放弹幕的播放请求,确定出与之相应的目标弹幕轨道;然后,在所确定出的目标弹幕轨道上进行弹幕的播放;由此可以避免因弹幕字体尺寸与弹幕轨道不匹配而造成的弹幕显示不完全的缺陷,还可以避免进入同一弹幕轨道的前后两个弹幕之间发生碰撞的缺陷,从而解决了弹幕与其轨道可以动态匹配的技术问题,还提高了弹幕轨道的使用率。
图5是图示根据本公开的实施例的计算机可读存储介质的示意图。如图5所示,根据本公开实施例的计算机可读存储介质50,其上存储有非暂时性计算机可读指令51。当该非暂时性计算机可读指令51由处理器运行时,执行前述的本公开各实施例的弹幕播放方法的全部或部分步骤。
上述计算机可读存储介质50包括但不限于:光存储介质(例如:CD-ROM和DVD)、磁光存储介质(例如:MO)、磁存储介质(例如:磁带或移动硬盘)、具有内置的可重写非易失性存储器的媒体(例如:存储卡)和具有内置ROM的媒体(例如:ROM盒)。
有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
本实施例提供的计算机可读存储介质50在非暂时性计算机可读指令51由处理器运行时,根据当前待播放弹幕的播放请求,确定出与之相应的目标弹幕轨道;然后,在所确定出的目标弹幕轨道上进行弹幕的播放;由此可以避免因弹幕字体尺寸与弹幕轨道不匹配而造成的弹幕显示不完全的缺陷,还可以避免进入同一弹幕轨道的前后两个弹幕之间发生碰撞的缺陷,从而解决了弹幕与其轨道可以动态匹配的技术问题,还提高了弹幕轨道的使用率。
图6是图示根据本公开实施例的终端的硬件结构示意图。如图6所示,该弹幕播放终端60包括上述弹幕播放装置61。
该终端可以以各种形式来实施,本公开中的终端可以包括但不限于诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置、车载终端设备、车载显示终端、车载电子后视镜等等的移动终端设备以及诸如数字TV、台式计算机等等的固定终端设备。
作为等同替换的实施方式,该终端还可以包括其他组件。如图7所示,该弹幕播放终端70可以包括电源单元71、无线通信单元72、A/V(音频/视频)输入单元73、用户输入单元74、感测单元75、接口单元76、控制器77、输出单元78和存储器79等等。图7示出了具有各种组件的终端,但是应理解的是,并不要求实施所有示出的组件,也可以替代地实施更多或更少的组件。
其中,无线通信单元72允许终端70与无线通信系统或网络之间的无线电通信。A/V输入单元73用于接收音频或视频信号。用户输入单元74可以根据用户输入的命令生成键输入数据以控制终端设备的各种操作。感测单元75检测终端70的当前状态、终端70的位置、用户对于终端70的触摸输入的有无、终端70的取向、终端70的加速或减速移动和方向等等,并且生成用于控制终端70的操作的命令或信号。接口单元76用作至少一个外部装置与终端70连接可以通过的接口。输出单元78被构造为以视觉、音频和/或触觉方式提供输出信号。存储器79可以存储由控制器77执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据。存储器79可以包括至少一种类型的存储介质。而且,终端70可以与通过网络连接执行存储器79的存储功能的网络存储装置协作。控制器77通常控制终端设备的总体操作。另外,控制器77可以包括用于再现或回放多媒体数据的多媒体模块。控制器77可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。电源单元71在控制器77的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
本公开提出的弹幕播放方法的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,本公开提出的弹幕播放方法的各种实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,本公开提出的弹幕播放方法的各种实施方式可以在控制器77中实施。对于软件实施,本公开提出的弹幕播放方法的各种实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器79中并且由控制器77执行。
有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
本实施例提供的弹幕播放终端根据当前待播放弹幕的播放请求,确定出与之相应的目标弹幕轨道;然后,在所确定出的目标弹幕轨道上进行弹幕的播放;由此可以避免因弹幕字体尺寸与弹幕轨道不匹配而造成的弹幕显示不完全的缺陷,还可以避免进入同一弹幕轨道的前后两个弹幕之间发生碰撞的缺陷,从而解决了弹幕与其轨道可以动态匹配的技术问题,还提高了弹幕轨道的使用率。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
另外,如在此使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
还需要指出的是,在本公开的系统和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。