弹幕处理方法和系统转让专利

申请号 : CN201911168271.7

文献号 : CN111031399B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 武修然

申请人 : 上海哔哩哔哩科技有限公司

摘要 :

本申请实施例公开了一种弹幕处理方法,包括:获取视频播放页面,用于输出视频流;获取与所述视频流关联的多个弹幕数据;遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据;如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据。本申请实施例提供了弹幕回收机制,即将过期的弹幕数据删除掉。删除过期的弹幕数据,至少会带来以下好处:一、随着播放进度逐渐减少多个弹幕数据,降低内存占用;二、减少后续遍历多个弹幕数据的遍历次数,避免后续遍历时“再次遍历处于过期状态的弹幕数据”所导致的计算资源浪费。

权利要求 :

1.一种弹幕处理方法,其特征在于,包括:

获取视频播放页面,用于输出视频流,所述视频播放页面为微信小程序页面;

获取与所述视频流关联的多个弹幕数据;

遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据;及如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据;判断渲染列表中是否包括处于过期状态的弹幕数据;及如果所述渲染列表中包括处于过期状态的弹幕数据,则将所述渲染列表中处于过期状态的弹幕数据的数据指针指向NULL。

2.根据权利要求1所述的弹幕处理方法,其特征在于,还包括:遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于待发射状态的若干个弹幕数据;

其中,各个处于待发射状态的弹幕数据的发射时间小于或等于所述视频流的当前播放时间;各个处于过期状态的弹幕数据的发射时间和运动时间之和小于所述当前播放时间。

3.根据权利要求2所述的弹幕处理方法,其特征在于,所述视频播放页面为微信小程序页面;还包括:获取所述视频流的当前播放时间:通过弹幕时间线以模拟requestAnimationFrame的模式更新时间线,以将更新后的时间线确定为所述视频流的当前播放时间。

4.根据权利要求2所述的弹幕处理方法,其特征在于,还包括:如果所述多个弹幕数据包括所述处于待发射状态的若干个弹幕数据:将所述若干个弹幕数据添加到待发射弹幕队列中;

根据虚拟弹幕轨道判断多个弹幕轨道中是否包括处于空闲状态下的一个或多个弹幕轨道,其中,所述虚拟弹幕轨道为预先配置的嵌套数组,所述嵌套数组中包括多个子数组,每个子数组映射所述多个弹幕轨道中的其中一个弹幕轨道;及如果所述多个弹幕轨道中包括处于空闲状态下的一个或多个弹幕轨道:将所述待发射弹幕队列中的一个或多个弹幕数据添加到虚拟弹幕轨道中,所述虚拟弹幕轨道用于判断各个弹幕轨道是否处于空闲状态,及将所述待发射弹幕队列中的所述一个或多个弹幕数据添加到渲染列表中,以渲染得到相应的一个或多个弹幕元素。

5.根据权利要求4所述的弹幕处理方法,其特征在于,还包括:判断所述待发射弹幕队列中是否有新增弹幕数据;

如果所述待发射弹幕队列中有新增弹幕数据,则基于该新增弹幕数据执行部分渲染操作,以得到新增弹幕数据对应的弹幕宽度。

6.根据权利要求4所述的弹幕处理方法,其特征在于,还包括:判断所述虚拟弹幕轨道中是否包括处于过期状态的弹幕数据;及如果所述虚拟弹幕轨道中包括处于过期状态的弹幕数据,则在所述虚拟弹幕轨道中删除处于过期状态的弹幕数据。

7.一种弹幕处理系统,其特征在于,包括:

第一获取模块,用于获取视频播放页面,用于输出视频流,所述视频播放页面为微信小程序页面;

第二获取模块,用于获取与所述视频流关联的多个弹幕数据;

遍历模块,用于遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据;及删除模块,用于如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据;判断渲染列表中是否包括处于过期状态的弹幕数据;及如果所述渲染列表中包括处于过期状态的弹幕数据,则将所述渲染列表中处于过期状态的弹幕数据的数据指针指向NULL。

8.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述方法的步骤。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1至6任一项所述方法的步骤。

说明书 :

弹幕处理方法和系统

技术领域

[0001] 本申请实施例涉及通信领域,尤其涉及一种弹幕处理方法、系统、计算机设备及计算机可读存储介质。

背景技术

[0002] 弹幕,指的是在呈现视频时同时呈现评论性文字、表情、图案等。目前,弹幕成了为很多观众观看视频、直播的重要元素,其不仅能够使用户表达观看节目感受,而且还能使用户观看其他用户对节目的评论内容,实现用户观看视频时的互动性。
[0003] 然而,当某个热门视频下有巨量弹幕时,会极大消耗计算资源,如消耗大量内存资源。

发明内容

[0004] 有鉴于此,本申请实施例的目的是提供一种弹幕处理方法、系统、计算机设备及计算机可读存储介质,用于解决巨量弹幕导致地计算资源过度消耗的技术问题。
[0005] 本申请实施例的一个方面提供了一种弹幕处理方法,包括:获取视频播放页面,用于输出视频流;获取与所述视频流关联的多个弹幕数据;遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据;及如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据。
[0006] 可选的,还包括:遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于待发射状态的若干个弹幕数据;其中,各个处于待发射状态的弹幕数据的发射时间小于或等于所述视频流的当前播放时间;各个处于过期状态的弹幕数据的发射时间和运动时间之和小于所述当前播放时间。
[0007] 可选的,所述视频播放页面为微信小程序页面;还包括:获取所述视频流的当前播放时间:通过弹幕时间线以模拟requestAnimationFrame的模式更新时间线,以将更新后的时间线确定为所述视频流的当前播放时间。
[0008] 可选的,还包括:如果所述多个弹幕数据包括所述处于待发射状态的若干个弹幕数据:将所述若干个弹幕数据添加到待发射弹幕队列中;根据虚拟弹幕轨道判断多个弹幕轨道中是否包括处于空闲状态下的一个或多个弹幕轨道,其中,所述虚拟弹幕轨道为预先配置的嵌套数组,所述嵌套数组中包括多个子数组,每个子数组映射所述多个弹幕轨道中的其中一个弹幕轨道;及如果所述多个弹幕轨道中包括处于空闲状态下的一个或多个弹幕轨道:将所述待发射弹幕队列中的一个或多个弹幕数据添加到虚拟弹幕轨道中,所述虚拟弹幕轨道用于判断各个弹幕轨道是否处于空闲状态,及将所述待发射弹幕队列中的所述一个或多个弹幕数据添加到渲染列表中,以渲染得到相应的一个或多个弹幕元素。
[0009] 可选的,还包括:判断所述待发射弹幕队列中是否有新增弹幕数据;如果所述待发射弹幕队列中有新增弹幕数据,则基于该新增弹幕数据执行部分渲染操作,以得到该新增弹幕数据对应的弹幕宽度。
[0010] 可选的,判断所述虚拟弹幕轨道中是否包括处于过期状态的弹幕数据;及如果所述虚拟弹幕轨道中包括处于过期状态的弹幕数据,则在所述虚拟弹幕轨道中删除处于过期状态的弹幕数据。
[0011] 可选的,所述视频播放页面为微信小程序页面;还包括:判断所述渲染列表中是否包括处于过期状态的弹幕数据;及如果所述渲染列表中包括处于过期状态的弹幕数据,则将所述渲染列表中处于过期状态的弹幕数据的数据指针指向NULL。
[0012] 本申请实施例的一个方面又提供了一种弹幕处理系统,所述弹幕处理系统包括:第一获取模块,用于获取视频播放页面,用于输出视频流;第二获取模块,用于获取与所述视频流关联的多个弹幕数据;遍历模块,用于遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据;删除模块,用于如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据。
[0013] 本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现上述弹幕处理方法的步骤。
[0014] 本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行上述弹幕处理方法的步骤。
[0015] 本申请实施例提供的弹幕处理方法、系统、设备及计算机可读存储介质提供了弹幕回收机制,即将过期的弹幕数据删除掉。删除过期的弹幕数据,至少会带来以下好处:一、随着播放进度逐渐减少多个弹幕数据,降低内存占用;二、减少后续遍历多个弹幕数据的遍历次数,避免后续遍历时“再次遍历处于过期状态的弹幕数据”所导致的计算资源浪费。

附图说明

[0016] 图1示意性示出了根据本申请实施例的弹幕处理方法的应用环境图;
[0017] 图2示意性示出了根据本申请实施例一的弹幕处理方法的流程图;
[0018] 图3示意性示出了根据本申请实施例二的弹幕处理方法的流程图;
[0019] 图4示意性示出了图3中的新增步骤;
[0020] 图5示意性示出了图3中的另一新增步骤;
[0021] 图6示意性示出了图3中的另一新增步骤;
[0022] 图7示意性示出了根据本申请实施例二的弹幕处理方法的另一流程图;
[0023] 图8示意性示出了根据本申请实施例三的通信系统的框图;及
[0024] 图9示意性示出了根据本申请实施例四的适于实现弹幕处理方法的计算机设备的硬件架构示意图。

具体实施方式

[0025] 为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请实施例,并不用于限定本申请实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
[0026] 图1示意性示出了根据本申请实施例的弹幕处理方法的环境应用示意图。
[0027] 提供商网络2可以通过网络9连接多个计算机设备10。在一些实施例中,内容服务3由提供商网络2提供。在其他实施例中,内容服务3可以由与提供商网络2连接的独立内容商提供。
[0028] 内容服务3可以包括诸如互联网协议视频流服务之类的内容流服务。内容流服务可以被配置为经由各种传输技术来分发内容。内容服务3可以被配置为提供诸如视频,音频,文本数据,其组合等的内容。内容可以包括内容流(例如,视频流,音频流,信息流),内容文件(例如,视频文件,音频文件,文本文件)和/或其他数据。
[0029] 提供商网络2可以实现弹幕服务,该弹幕服务被配置为允许用户评论和/ 或共享与内容相关联的评论。弹幕内容可以与内容一起呈现在同一屏幕上。例如,弹幕内容可以在内容上方的覆盖图中显示。弹幕内容在显示时可能会带有动画效果。例如,弹幕内容可以被显示为在内容上滚动(例如,从右到左,从左到右,从上到下,从下到上),这种动画效果可以基于CSS3(cascading style sheets,层叠样式表)的transition属性实现的。
[0030] 提供商网络2可以位于诸如单个场所之类的数据中心,或者分布在不同的地理位置(例如,在多个场所)中。提供商网络2可以经由一个或多个网络9 提供服务。网络9包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或类似。网络9可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,其组合等。网络9可以包括无线链路,诸如蜂窝链路,卫星链路,Wi-Fi链路等。
[0031] 提供商网络2可以包括消息服务5。消息服务5可以被配置为接收多个消息。所述多个消息可以包括与内容相关联的多个弹幕内容以及与所述多个弹幕内容有关的信息。
[0032] 消息服务5可以被配置为管理用于各种内容项的消息。用户可以浏览内容并访问不同的内容项以查看针对特定内容的评论,例如其他用户针对该特定内容发布的评论。来自与特定内容项目相关联的用户的评论可以被输出到观看该特定内容项目的其他用户。例如,访问内容项目(例如,视频剪辑)的所有用户可以查看与该内容项目相关联的评论。输入的弹幕内容可以实时或接近实时地输出。
[0033] 消息服务5可以被配置为处理多个消息。消息服务5可以基于与相应弹幕内容相关联的信息(例如,时间戳,递增的标识符)来实现对多个消息的队列或以其他方式优先处理。消息服务5可以被配置为使用负载平衡来处理多个消息。例如,消息服务5可以被配置为使用多个处理节点中的一个或多个来处理多个消息,对消息进行优先级排序,对消息进行负载平衡等。消息服务5可以至少临时地存储多个消息。消息服务5可以将多个消息存储在诸如数据库的数据存储中。
[0034] 消息服务5可以被配置为通过执行分组过程来处理消息。分组过程可以包括基于特征对多个消息进行分组。如果两个消息具有相同的特征或在特征的阈值范围内,则可以将这两个消息分为一组。与特定内容项(例如,流,文件,节目,电影,歌曲,游戏会话)相关联的消息可以与同一组相关联。例如,消息可以包括内容标识符或与内容标识符相关联。内容标识符可以唯一地标识内容项。如果在消息中找到了内容标识符,或者与消息相关联(例如,单独发送),则消息服务5可以将消息与与内容项相关联的组相关联。
[0035] 消息服务5可以执行自然语言处理,主题识别,模式识别,人工智能等,以自动确定消息的特征和/或对消息进行分组。作为示例,频繁出现的短语或模式可以被识别为主题。作为另一个示例,可以维护与内容相关联的主题的数据库。主题可以包括流派(例如,动作,戏剧,喜剧),个性(例如,演员,女演员,导演),语言等。可以基于客户端设备和/或发送消息的用户的特征对消息进行分组。可以存储人口统计学,兴趣,历史和/或类似物以供多个用户确定消息的潜在分组。
[0036] 消息服务5可以进一步被配置为通过生成输出数据来处理消息。输出数据可以包括用于实现基于相应上下文输出评论的指令。输出数据可以包括用于基于上下文指示应用覆盖评论的应用数据。输出数据可以包括用于生成(例如,编码)与评论相对应的内容的指令。
[0037] 输出数据可以用于生成(例如,编码)输出弹幕内容,例如输出内容流。输出的评论内容可以与诸如内容服务3所提供的内容之类的原始内容项进行组合(例如,多路复用)。所得的组合可以包括单个包装(例如,容器,运输容器,运输流)中的内容。包可包括原始内容项以及输出的弹幕内容(例如,显示在原始内容项的顶部)。
[0038] 消息服务5可以进一步被配置为通过执行筛选过程来处理消息。筛选过程可以包括拒绝或标记与筛选标准匹配的消息。筛选标准可以指定术语和/或短语,例如亵渎,仇恨言论,不雅语言等。筛选标准可以指定字符,例如符号,字体等。筛选标准可以指定语言,计算机可读代码模式等。
[0039] 提供商网络2可以进一步包括处理服务6。处理服务6可以被配置为提供对各种服务的处理,例如提供商网络2的服务。处理服务6可以包括多个网络节点8。多个网络节点8可以处理与消息服务5相关联的任务。多个网络节点8 可以被实现为一个或多个计算设备,一个或多个处理器,一个或多个虚拟计算实例,它们的组合,和/或类似的东西。
[0040] 多个网络节点8可以由一个或多个计算设备实现。一个或多个计算设备可以包括虚拟化的计算实例。虚拟化的计算实例可以包括虚拟机,例如计算机系统,操作系统,服务器等的仿真。计算设备可以基于虚拟映像和/或定义用于仿真的特定软件(例如,操作系统,专用应用程序,服务器)的其他数据,由计算设备加载虚拟机。随着对不同类型的处理服务的需求改变,可以在一个或多个计算设备上加载和/或终止不同的虚拟机。可以实现管理程序来管理同一计算设备上不同虚拟机的使用。
[0041] 在一些实施例中,多个网络节点8可以处理由多个计算机设备提交的事件。这些事件可以与讨论实时新闻,视频,社交热点,针对某些用户帐户的报告等相关联。在其他实施例中,多个网络节点8可以处理针对审阅网络社区中的事件的多个用户账户的性能评估。在一些实现中,这些服务可以被实现为专用计算设备,专用处理器,专用虚拟机实例和/或类似物。在其他实现中,各种不同的节点可以实现与这些服务相关联的任何功能。
[0042] 多个计算机设备10可以被配置为访问提供商网络2的内容和服务。多个计算机设备10可以包括任何类型的电子设备,诸如移动设备、平板设备、膝上型计算机、工作站、虚拟现实设备,游戏设备、机顶盒、数字流媒体设备、车辆终端、智能电视、机顶盒、电子书阅读器等。
[0043] 多个计算机设备10可以与一个或多个用户相关联。单个用户可以使用多个计算机设备10中的一个或多个来访问提供商网络2。多个计算机设备10可以旅行到各种位置并使用不同的网络来访问提供商网络2。
[0044] 计算机设备10可以包括应用12。应用12将内容输出(例如,显示、渲染、呈现)给用户。所述应用12可以是视频客户端(如bilibili客户端)、浏览器客户端或基于微信的微信小程序等。内容可以包括视频,音频,弹幕内容和/或类似物。所述弹幕内容可以是文字、表情、图案等,可以有不同的颜色、大小、动画、滚动方向等。
[0045] 作为示例,应用程序12可以将针对某些用户的报告发送到处理服务,并且应用程序12还可以将关于报告的评论发送到处理服务6。从多个计算机设备10 发送的事件或评论包括提交事件的原因,与事件相关联的内容属性,用户帐户信息等。
[0046] 实施例一
[0047] 图2示意性示出了根据本申请实施例一的弹幕处理方法的流程图。可以理解,本方法实施例可以被执行在计算机设备10中,且本方法实施例的流程图不用于对执行步骤的顺序进行限定。
[0048] 如图2所示,该弹幕处理方法可以包括步骤S200~S206,其中:
[0049] 步骤S200,获取视频播放页面,用于输出视频流。
[0050] 步骤S202,获取与所述视频流关联的多个弹幕数据。
[0051] 在示例性的实施例中,所述多个弹幕数据可以是原始弹幕数据。
[0052] 在另外一些实施例中,所述多个弹幕数据也可以是克隆多个原始弹幕数据得到的弹幕数据。具体的:计算机设备10从提供商网络2获取多个原始弹幕数据之后,克隆所述多个原始弹幕数据。其中,所述多个原始弹幕数据不用弹幕播放,所述多个弹幕数据用于弹幕播放。
[0053] 多个原始弹幕数据和多个弹幕数据是信息一致的,且以数组格式保存。
[0054] 举例而言,每个弹幕数据可以包括如下信息:
[0055]
[0056] 步骤S204,遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据。
[0057] 弹幕内容往往与剧情(即,播放的内容节点)有关联性,因此,每个弹幕内容都有一个发射时间,该发射时间和某个内容节点相关联。当进度条处于某个时间节点时,说明处于该时间节点之前的内容节点属于过期状态下的内容节点(除非视频重新播放或进度条被用户拉回,否则处于过期状态下的内容节点不会被播放),与处于过期状态下的内容节点所对应的弹幕数据则属于过期状态下的弹幕数据。不难理解,处于过期状态下的弹幕数据不会被播放到弹幕播放区域,其属于无用数据。
[0058] 所述步骤S204可以通过如下示例性步骤实现:根据所述视频流的当前播放时间和各个弹幕数据的发射时间和运动时间,判断各个弹幕数据是否处于过期状态。其中,各个处于过期状态的弹幕数据的发射时间和运动时间之和小于所述当前播放时间。
[0059] 所述当前播放时间获取方式如下:通过弹幕时间线在弹幕开始播放后以模拟requestAnimationFrame的模式每16毫秒模拟视频时间去更新时间线,以此维持弹幕时间线和所述视频流的当前播放时间同步,所述更新后的时间线即为所述当前播放时间。
[0060] 步骤S206,如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据。如果所述多个弹幕数据中没有处于过期状态的弹幕数据,则不执行上述删除操作。
[0061] 当某个热门视频下有巨量弹幕时,会极大消耗计算资源,如消耗大量内存资源。为了解决该问题,本实施例提供了弹幕回收机制,即将过期的弹幕数据删除掉。删除过期的弹幕数据,至少会带来以下好处:一、随着播放进度逐渐减少多个弹幕数据,降低内存占用;二、减少后续遍历多个弹幕数据的遍历次数,避免后续遍历时“再次遍历处于过期状态的弹幕数据”所导致的计算资源浪费。
[0062] 实施例二
[0063] 图3示意性示出了根据本申请实施例二的弹幕处理方法的流程图。该弹幕处理方法可以包括步骤S300~步骤S314,其中:
[0064] 步骤S300,获取视频播放页面,用于输出视频流。
[0065] 步骤S302,获取与所述视频流关联的多个弹幕数据。
[0066] 在示例性的实施例中,各个弹幕数据可能包括以下内容:
[0067]
[0068] 可以理解,所述多个弹幕数据关联于所述视频流,是观众观看其视频内容是所发表的,当所述视频内容为热门内容时,多个弹幕数据的弹幕数量可能是巨量的,处理数量巨大的这些弹幕数据可能会极大消耗计算资源,如消耗大量内存资源和CPU资源。为了解决该问题,本实施例提供了动态创建弹幕元素的渲染模式和弹幕回收机制。
[0069] 所谓动态创建弹幕元素的渲染模式,在于每次均渲染出视频流的当前播放时间所对应的弹幕元素,而不会将接收到的所有弹幕数据用于渲染操作,以防止渲染出所有弹幕元素所导致的程序运行卡顿或程序崩溃,具体实现方式为:每次遍历多个弹幕数据,筛选出处于待发射状态的若干个弹幕数据,对该筛选出的若干个弹幕数据中的一个或多个弹幕数据进行渲染或部分渲染,即每次动态创建部分弹幕元素。
[0070] 所述回收机制,在于将不需要的或过期的弹幕数据删除,随着播放进度逐渐减小多个弹幕数据的弹幕数量,降低内存占用,还可以减少后续遍历多个弹幕数据的遍历次数,避免后续遍历时“再次遍历处于过期状态的弹幕数据”所导致的计算资源浪费。
[0071] 为了实现上述动态创建弹幕元素的渲染模式和弹幕回收机制,需要不断的遍历多个弹幕数据以查找处于待发射状态的弹幕数据和处于过期状态的弹幕数据,具体如下面所述。
[0072] 步骤S304,遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于待发射状态的若干个弹幕数据和/或处于过期状态的至少一个弹幕数据。
[0073] 在示例性的实施例中,各个处于待发射状态的弹幕数据的发射时间小于或等于所述视频流的当前播放时间;各个处于过期状态的弹幕数据的发射时间和运动时间之和小于所述当前播放时间。
[0074] 在示例性的实施例中,所述视频播放页面可以是微信小程序页面,为适应于微信小程序框架,还包括:获取所述视频流的当前播放时间:通过弹幕时间线以模拟requestAnimationFrame的模式更新时间线,以将更新后的时间线确定为所述视频流的当前播放时间。
[0075] 具体的,启动弹幕计算器和弹幕时间线,弹幕时间线会在弹幕开始播放后示例性地以模拟requestAnimationFrame的模式每16毫秒模拟视频时间去更新时间线,以此确定弹幕时间线和当前播放时间同步。比较每条弹幕数据中的 stime(发射时间)和当前播放时间。如果某条弹幕数据的发射时间小于或等于当前播放时间时,则认为这条弹幕数据到达了发射时间,则将条弹幕数据向后添加到待发射弹幕队列中。如果某条弹幕数据中的stime(发射时间)和duration (运动时间)之和小于当前播放时间,则说明这条弹幕数据已经“过期“了。在其他实施例中,也可以添加一秒的间隔时间,即如果某条弹幕数据中的“stime (发射时间)+duration(运动时间)+1秒”小于当前播放时间,则说明这条弹幕的运动时间结束已经超过了1秒钟,则认为这条弹幕数据已经“过期“了。
[0076] 步骤S306,如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据。
[0077] 步骤S308,如果所述多个弹幕数据包括所述处于待发射状态的若干个弹幕数据,则将所述若干个弹幕数据添加到待发射弹幕队列中。
[0078] 为了减少后续遍历次数,还可以包括以下步骤:更新所述多个弹幕数据,以从所述多个弹幕数据中删除所述若干个弹幕数据。即,在每个弹幕数据被成功添加到所述待发射弹幕队列之后,就会将该弹幕数据从所述多个弹幕数据中删除。
[0079] 计算机设备10会对所述待发射弹幕队列中若干个弹幕数据进行部分渲染,具体的:在可视区之外对待发射弹幕队列中的各个弹幕数据进行部分渲染,以得到各个弹幕数据的弹幕内容的弹幕宽度。通过渲染得到的各个弹幕数据中的弹幕内容的弹幕宽度,可以计算相应的弹幕速度,所述弹幕速度可以用于判断弹幕间是否会产生碰撞。
[0080] 上述部分渲染操作,同样会消耗计算机设备10的计算资源,为尽量节省该计算资源,在示例性的实施例中,如图4所示,所述方法还包括步骤S400~S402,其中:步骤S400,判断所述待发射弹幕队列中是新增弹幕数据;步骤S402,如果所述待发射弹幕队列中有新增弹幕数据,则基于该新增弹幕数据执行部分渲染操作,以得到该新增弹幕数据对应的弹幕宽度,所述弹幕宽度可以用于计算弹幕速度。可以理解,如果所述待发射弹幕队列中没有新增弹幕数据,则不执行该部分渲染操作,这样做可以减少弹幕元素的获取等相关操作,从而节省计算资源。
[0081] 步骤S310,根据虚拟弹幕轨道判断多个弹幕轨道中是否包括处于空闲状态下的一个或多个弹幕轨道。如果是,则进入步骤S312;如果不是,进入步骤S314。
[0082] 其中,所述虚拟弹幕轨道为预先配置的嵌套数组,所述嵌套数组中包括多个子数组,每个子数组映射所述多个弹幕轨道中的其中一个弹幕轨道。所谓虚拟弹幕轨道的提出,为了达到良好的弹幕视觉效果,每一条弹幕内容都不能被其他弹幕内容遮挡,这需要实现各个弹幕内容之间互相不重叠。虚拟弹幕轨道实质上是以数组嵌套数组的数据格式来模拟弹幕内容与弹幕轨道之间的关系。虚拟弹幕轨道内的弹幕数据并不参与视图层的渲染,而是通过数据的形式来映射当前的弹幕内容与弹幕轨道的关系。虚拟弹幕轨道的工作原理是:通过弹幕系统初始化时配置的弹幕轨道数量来向一个数组对象中向后添加相同数量的数组对象,类似于[[],[],[],[],…]这样的形式。其中嵌套数组中的每个子数组代表一条弹幕轨道。
[0083] 为确保各个弹幕内容之间互相不重叠,提供以下判断机制:
[0084] 【判断机制1】:S1,判断第i个子数组是否为空,所述第i个子数组对应第i个弹幕轨道。S2,如果第i个子数组为空,则确定所述第i个弹幕轨道的当前状态为空闲状态。S3,如果第i个子数组不为空,则确定所述第i个弹幕轨道的当前状态为拥挤状态。S4,更新i的取值,并基于更新后的i的取值执行步骤S1~S4直至i等于M;其中,1≤i≤M,i的初始值为1,M表示所述多个弹幕轨道的数量。
[0085] 【判断机制2】:S1,判断第i个子数组是否为空,所述第i个子数组对应第i个弹幕轨道。S2,如果第i个子数组为空,则确定所述第i个弹幕轨道的当前状态为空闲状态。S3,如果第i个子数组不为空,说明第i个弹幕轨道上已经存在正在运动中的弹幕内容,则判断所述待发射弹幕队列中的待发射队首弹幕数据中的队首弹幕内容和所述已发射尾部弹幕数据中的尾部弹幕内容是否会发生碰撞。S4,如果不会发送碰撞,则确定所述第i个弹幕轨道的当前状态为空闲状态。S5,如果会发送碰撞,则确定所述第i个弹幕轨道的当前状态为拥挤状态。S6,更新i的取值,并基于更新后的i的取值执行步骤S1~S6直至i 等于M;其中,1≤i≤M,i的初始值为1,M表示所述多个弹幕轨道的数量。
[0086] 需要说明的是,所述待发射队首弹幕数据为位于所述待发射弹幕队列头部的弹幕数据。所述已发射尾部弹幕数据为位于所述第i个数组尾部的已发射弹幕数据,所述已发射尾部弹幕数据即对应第i个数组中最后的那个弹幕数据,所述尾部弹幕内容即对应于呈现在第i个弹幕轨道中的最晚发射的那个弹幕内容。
[0087] 判断所述待发射弹幕队列中的待发射队首弹幕数据中的队首弹幕内容和所述已发射尾部弹幕数据中的尾部弹幕内容是否会发生碰撞,可以通过如下步骤实现:(1)根据所述已发射尾部弹幕数据中的发射时间t1和运动时间t2,计算所述已发射尾部弹幕数据中的尾部弹幕内容在所述弹幕播放区域的呈现时间 t1+t2;(2)根据所述待发射队首弹幕数据的发射时间t3、运动时间t4、弹幕宽度w2和所述弹幕播放区域的显示宽度w1,计算所述待发射队首弹幕数据中的队首弹幕内容达到所述弹幕播放区域的左边界(视动画样式而定,如果动画样式是从左到右,则计算所述待发射队首弹幕数据中的队首弹幕内容达到所述弹幕播放区域的右边界)时的达到时间t3+[w1*t4/(w1+w2)];(3),判断所述呈现时间 t1+t2是否小于所述到达时间t3+[w1*t4/(w1+w2)];(4)如果所述呈现时间t1+t2小于所述到达时间t3+[w1*t4/(w1+w2)],则确定所述待发射队首弹幕数据中的队首弹幕内容和所述已发射尾部弹幕数据中的尾部弹幕内容不会发生碰撞;(5)如果所述呈现时间t1+t2不小于所述到达时间t3+[w1*t4/(w1+w2)],则确定所述待发射队首弹幕数据中的队首弹幕内容和所述已发射尾部弹幕数据中的尾部弹幕内容会发生碰撞。
[0088] 不难理解,假设第i个弹幕轨道中最后一条弹幕内容的发射时间为t1且运动时间为t2,那么这最后一条弹幕内容完全消失在弹幕播放区域(可视区)的时间就是t1+t2,而所述待发射队首弹幕数据的发射时间t3、运动时间t4、弹幕宽度w2和所述弹幕播放区域的显示宽度w1,那么所述待发射队首弹幕数据的队首弹幕内容的运动速度为就是s1=(w1+w2)/t4,由此可以得出所述待发射队首弹幕数据的队首弹幕内容第一次到达弹幕播放区域的左边界(视运动终点位置而定) 的时间为t3+(w1/s1)。当t1+t2<t3+(w1/s1)时,则表示当这最后一条弹幕内容完全消失在弹幕播放区域范围时,所述待发射队首弹幕数据的队首弹幕内容仍然没有追上这最后一条弹幕内容,也就意味着这最后一条弹幕内容和所述待发射队首弹幕数据的队首弹幕内容之间不会相撞,因此可以将所述第i个弹幕轨道的当前状态确定为空闲状态。
[0089] 步骤S312,将所述待发射弹幕队列中的一个或多个弹幕数据添加到虚拟弹幕轨道中,所述虚拟弹幕轨道用于判断各个弹幕轨道是否处于空闲状态,及将所述待发射弹幕队列中的一个或多个弹幕数据添加到渲染列表中,以渲染得到相应的一个或多个弹幕元素。
[0090] 例如:
[0091] 所述待发射弹幕队列中从队首到队尾依次为弹幕数据A1、弹幕数据A2、弹幕数据A3、…,所述待发射弹幕队列中的待发射队首弹幕数据当前为弹幕数据A1。
[0092] ①通过虚拟弹幕轨道中第一个子数组判断第一个弹幕轨道的当前状态。
[0093] ②在第一个弹幕轨道的当前状态为空闲状态时,将弹幕数据A1向后分别添加到渲染列表中和第一个子数组中,并将弹幕数据A1从所述待发射弹幕数据删除,以将弹幕数据A1的后续弹幕数据(即,弹幕数据A2)更新为所述待发射弹幕队列中的待发射队首弹幕数据。位于渲染列表中的弹幕数据A1中的弹幕内容会被渲染,以得到诸如运动动画样式等。位于第一个子数组中的弹幕数据A1用于表示所述第一个弹幕轨道中目前存在弹幕数据A1的弹幕内容。
[0094] ③接着通过虚拟弹幕轨道中第二个子数组判断第二个弹幕轨道的当前状态。
[0095] ④在第二个弹幕轨道的当前状态为空闲状态时,将弹幕数据A2向后分别添加到渲染列表中和第二个子数组中,并将弹幕数据A2从所述待发射弹幕数据删除,以将弹幕数据A2的后续弹幕数据(即,弹幕数据A3)更新为所述待发射弹幕队列中的待发射队首弹幕数据。
[0096] ⑤接着通过虚拟弹幕轨道中第三个子数组判断第三个弹幕轨道的当前状态。
[0097] ⑥在第三个弹幕轨道的当前状态为拥挤状态时,则直接接着通过虚拟弹幕轨道中第四个子数组判断第四个弹幕轨道的当前状态。
[0098] 依次类推,本文不再赘述。
[0099] 步骤S314,删除所述待发射弹幕队列中的至少部分弹幕数据。
[0100] 例如:
[0101] 没有处于空闲状态的弹幕轨道,说明当前弹幕数量过多并超出屏幕渲染能力,因此可以将所述待发射弹幕队列中的弹幕数据删除掉。
[0102] ①通过虚拟弹幕轨道中第一个子数组判断第一个弹幕轨道的当前状态。
[0103] ②在第一个弹幕轨道的当前状态为拥挤状态时,则直接接着通过虚拟弹幕轨道中第二个子数组判断第二个弹幕轨道的当前状态。
[0104] ③在第二个弹幕轨道的当前状态为拥挤状态时,则直接接着通过虚拟弹幕轨道中第三个子数组判断第三个弹幕轨道的当前状态。
[0105] 依次类推,如果所有弹幕轨道(M个轨道)均处于拥挤状态,则删除所述待发射弹幕队列中的至少部分弹幕数据。
[0106] 需要说明的是,微信小程序框架依据MVC(model–view–controller)模式思想封装的功能,渲染由微信小程序的框架来完成。
[0107] 以以下一条弹幕数据为例:
[0108]
[0109] 这条弹幕数据在WXML(微信标记语言,WeiXin Markup Language)文件中绑定在弹幕元素上,当前通过setData API通知微信小程序按照数据更新视图时,微信小程序就会依据这条弹幕数据渲染出一条字体颜色为白色、内容为“我是弹幕的文字内容”、运动方式为从原点运动到自身宽度100%距离进行线性运动且运动时间为0.6秒的弹幕内容。这种动画效果可以基于CSS3的transition 属性实现的。
[0110] 另外,还可以理解的是,处于虚拟弹幕轨道或渲染列表中的弹幕数据也最终会过期,因此,有必要在虚拟弹幕轨道或渲染列表执行删除操作,以进一步节约计算机设备10的计算资源。
[0111] 如图5所示,在示例性的实施例中,所述方法还可以包括步骤S500~S502,其中:步骤S500,判断所述虚拟弹幕轨道中是否包括处于过期状态的弹幕数据;步骤S502,如果所述虚拟弹幕轨道中包括处于过期状态的弹幕数据,则将所述虚拟弹幕轨道中删除处于过期状态的弹幕数据。如果所述渲染列表中没有处于过期状态的弹幕数据,则不执行上述操作。
[0112] 如图6所示,在示例性的实施例中,所述方法还可以包括步骤S600~S602,其中:步骤S600,判断所述渲染列表中是否包括处于过期状态的弹幕数据;步骤S602,如果所述渲染列表中包括处于过期状态的弹幕数据,则将所述渲染列表中处于过期状态的弹幕数据的数据指针指向NULL。如果所述渲染列表中没有处于过期状态的弹幕数据,则不执行上述操作。
[0113] 由于微信小程序的框架限制,微信小程序开发中的弹幕元素的创建与销毁都是通过绑定数据来进行渲染的,发明人发现,当渲染列表中有处于过期状态的弹幕数据时,如果直接删除处于过期状态的弹幕数据由于数据的排序发生了变化会导致渲染动画出现混乱,因此,本实施例中,将渲染列表中处于过期状态的弹幕数据的弹幕数据指针指向NULL,这样在删除某个弹幕数据的同时保留一个数据位置,保证弹幕元素在视图层的正常渲染,最终实现微信小程序页面的弹幕元素的回收机制。
[0114] 如图7所示,下面提供一个用于辅助理解的具体示例,需要说明的是,该示例并不用于限制专利保护范围。
[0115] 步骤S700,对微信小程序页面(即,视频播放页面)执行初始化操作。
[0116] 步骤S702,发起弹幕数据请求。
[0117] 在所述微信小程序页面完成初始化之后,弹幕加载器向提供商网络2发起弹幕数据请求,并接收提供商网络2返回的XML(extensible markup language,可扩展标记语言)文件。
[0118] 所述弹幕加载器位于微信小程序页面的逻辑层。该逻辑层还包括弹幕计算器和弹幕时间线。
[0119] 步骤S704,编译XML文件以获取多个弹幕数据。
[0120] 具体的,将XML文件编译为Element对象,从Element对象上获取到多个弹幕数据,如弹幕内容、发射时间、弹幕颜色、运动时间等属性(弹幕数据),并将这些属性转化为json的数据格式存储到本地数组中,得到存储在本地数组中的多个弹幕数据。
[0121] 所述多个弹幕数据:可以用于弹幕播放;也可以用于作为原始数据,不用于弹幕播放,例如可以克隆所述多个弹幕数据,将克隆得到的多个克隆弹幕数据用于弹幕播放。
[0122] 在本示例性中,将所述多个弹幕数据用于弹幕播放。
[0123] 步骤S706,开始播放弹幕。
[0124] 所述弹幕计算器用于弹幕筛选和计算。所述弹幕时间线用于管理弹幕时间线,即同步视频流的当前播放时间。
[0125] 所述弹幕计算器和弹幕时间线是位于应用12(如浏览器、微信小程序)的逻辑层的,可以通过该逻辑层让让弹幕时间线与弹幕计算器以递归调用的帧渲染模式并行工作。
[0126] 当弹幕计算器检测到所述多个弹幕数据处理完毕时,所述弹幕计算器和所述弹幕时间线终止运行并重置弹幕系统。另外,如果计算机设备10检测到用户点击了暂停按钮或者视频播放完毕时,所述弹幕计算器与所述弹幕时间线也会同时暂停或终止运行。
[0127] 步骤S708,通过弹幕计算器遍历各个弹幕数据,以计算和筛选各个弹幕数据是否处于待发射状态或处于过期状态。
[0128] 下面以其中一个弹幕数据j为例:
[0129] 步骤S710,判断弹幕数据j是否到达发射时间。如果是,进入步骤S712,否则进入步骤S714。
[0130] 根据视频流的当前播放时间和弹幕数据j中的发射时间,判断弹幕数据j 中的弹幕内容是否达到发射时间,也就是说,弹幕数据j在当前是否处于待发射状态。
[0131] 步骤S712,将弹幕数据j添加到待发射弹幕队列中。进步步骤S718。
[0132] 通知所述视图层进行数据更新操作,根据所述处于待发射状态的弹幕数据执行第一次渲染操作。
[0133] 如:在可视区之外,插入真实的弹幕元素,用户无法看到并且没有添加运动效果,这么做是为了获取弹幕元素的真实的弹幕宽度,来计算弹幕的运动初始位置和运动终点位置,以及用于作为判断多个弹幕轨道是否有处于空闲状态的弹幕轨道的依据之一。
[0134] 添加到待发射弹幕队列中的弹幕数据j会从所述多个弹幕数据中删除,以减少后续遍历次数。
[0135] 步骤S714,判断弹幕数据j是否处于过期状态。如果是,进入步骤S716;否则,该弹幕数据j将等待下一次遍历操作。
[0136] 步骤S716,销毁弹幕数据j。例如,将弹幕数据j从所述多个弹幕数据删除,以减少后续遍历次数。
[0137] 步骤S718,判断当前是否有空闲的弹幕轨道。如果是,进入步骤S720,否则进入步骤S716。
[0138] 示例性的,获取所述第一次渲染操作得到的弹幕元素的弹幕宽度。根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道。
[0139] 假设第k个弹幕轨道中最后一条弹幕内容的发射时间为t1且运动时间为t2,那么这最后一条弹幕内容完全消失在弹幕播放区域(可视区)的时间就是t1+t2,而弹幕数据j的发射时间t3、运动时间t4、弹幕宽度w2和所述弹幕播放区域的显示宽度w1,那么弹幕数据j的运动速度为就是s1=(w1+w2)/t4,由此可以得出所述弹幕数据j的弹幕内容第一次到达弹幕播放区域的左边边界的时间为t3+(w1/s1)。当t1+t2
[0140] 步骤S720,加入虚拟弹幕轨迹和渲染队列,通知所述视图层进行数据更新操作以执行第二次渲染操作。
[0141] ①将所述待发射弹幕队列中的弹幕数据j加入到虚拟弹幕轨道中。其中,所述虚拟弹幕轨道用于判断各个弹幕轨道是否处于空闲状态。
[0142] ②将所述待发射弹幕队列中的弹幕数据j加入到渲染列表中,以进一步创建相应的弹幕元素,如运动效果。
[0143] 实施例三
[0144] 图8示意性示出了根据本申请实施例三的弹幕处理系统的框图,该弹幕处理系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
[0145] 如图8所示,该弹幕处理系统800可以包括第一获取模块810、第二获取模块820、遍历模块830及删除模块840,其中:
[0146] 第一获取模块810,用于获取视频播放页面,用于输出视频流。
[0147] 第二获取模块820,用于获取与所述视频流关联的多个弹幕数据。
[0148] 遍历模块830,用于遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于过期状态的至少一个弹幕数据。
[0149] 删除模块840,用于如果所述多个弹幕数据中包括所述处于过期状态的至少一个弹幕数据,则从所述多个弹幕数据中删除所述处于过期状态的至少一个弹幕数据。
[0150] 在示例性的实施例中,所述遍历模块830,还用于:遍历所述多个弹幕数据,以查找所述多个弹幕数据中是否包括处于待发射状态的若干个弹幕数据;其中,各个处于待发射状态的弹幕数据的发射时间小于或等于所述视频流的当前播放时间;各个处于过期状态的弹幕数据的发射时间和运动时间之和小于所述当前播放时间。
[0151] 在示例性的实施例中,所述视频播放页面为微信小程序页面;还包括第三获取模块 ,用于 :获取所 述视频流的 当前播放 时间 :通 过弹幕时 间线以模 拟 requestAnimationFrame的模式更新时间线,以将更新后的时间线确定为所述视频流的当前播放时间。
[0152] 在示例性的实施例中,还包括弹幕播放模块,用于:如果所述多个弹幕数据包括所述处于待发射状态的若干个弹幕数据:将所述若干个弹幕数据添加到待发射弹幕队列中;根据虚拟弹幕轨道判断多个弹幕轨道中是否包括处于空闲状态下的一个或多个弹幕轨道,其中,所述虚拟弹幕轨道为预先配置的嵌套数组,所述嵌套数组中包括多个子数组,每个子数组映射所述多个弹幕轨道中的其中一个弹幕轨道;如果所述多个弹幕轨道中包括处于空闲状态下的一个或多个弹幕轨道:将所述待发射弹幕队列中的一个或多个弹幕数据添加到虚拟弹幕轨道中,所述虚拟弹幕轨道用于判断各个弹幕轨道是否处于空闲状态,及将所述待发射弹幕队列中的所述一个或多个弹幕数据添加到渲染列表中,以渲染得到相应的一个或多个弹幕元素。
[0153] 在示例性的实施例中,所述弹幕播放模块,还用于:判断所述待发射弹幕队列中是否有新增弹幕数据;如果所述待发射弹幕队列中有新增弹幕数据,则基于该新增弹幕数据执行部分渲染操作,以得到该新增弹幕数据的弹幕宽度,所述弹幕宽度用于计算弹幕速度。
[0154] 在示例性的实施例中,所述删除模块840,还用于:判断所述虚拟弹幕轨道中是否包括处于过期状态的弹幕数据;及如果所述虚拟弹幕轨道中包括处于过期状态的弹幕数据,则在所述虚拟弹幕轨道中删除处于过期状态的弹幕数据。
[0155] 在示例性的实施例中,所述视频播放页面为微信小程序页面;所述删除模块840,还用于:判断所述渲染列表中是否包括处于过期状态的弹幕数据;如果所述渲染列表中包括处于过期状态的弹幕数据,则将所述渲染列表中处于过期状态的弹幕数据的数据指针指向NULL。
[0156] 实施例四
[0157] 图9示意性示出了根据本申请实施例四的适于实现弹幕处理方法的计算机设备的硬件架构示意图。本实施例中,计算机设备10是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。计算机设备10可以是诸如智能手机、电脑、投影仪、机顶盒等,也可以是虚拟机主机进程和一个或多个虚拟机实例,或者是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图9所示,计算机设备10至少包括但不限于:可通过系统总线相互通信链接存储器1010、处理器1020、网络接口1030。其中:
[0158] 存储器1010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1010可以是计算机设备10的内部存储模块,例如该计算机设备10的硬盘或内存。在另一些实施例中,存储器 1010也可以是计算机设备10的外部存储设备,例如该计算机设备10上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器1010还可以既包括计算机设备10的内部存储模块也包括其外部存储设备。本实施例中,存储器1010通常用于存储安装于计算机设备10的操作系统和各类应用软件,例如弹幕处理方法的程序代码等。此外,存储器1010还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0159] 处理器1020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1020通常用于控制计算机设备10的总体操作,例如执行与计算机设备10 进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1020用于运行存储器1010中存储的程序代码或者处理数据。
[0160] 网络接口1030可包括无线网络接口或有线网络接口,该网络接口1030通常用于在计算机设备10与其他计算机设备之间建立通信链接。例如,网络接口 1030用于通过网络将计算机设备10与外部终端相连,在计算机设备10与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
[0161] 需要指出的是,图9仅示出了具有部件1010-1030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0162] 在本实施例中,存储于存储器1010中的弹幕处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1020)所执行,以完成本申请。
[0163] 实施例五
[0164] 本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的弹幕处理方法的步骤。
[0165] 本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的弹幕处理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0166] 显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0167] 以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。