弹幕消息分发方法、装置、设备和存储介质与流程

文档序号:16130908发布日期:2018-12-01 00:18阅读:159来源:国知局

本发明实施例涉及计算机技术,尤其涉及一种弹幕消息分发方法、装置、设备和存储介质。

背景技术

在搭载android系统的客户端(可简称为android客户端)中,通常是从能够传输及处理弹幕消息的服务器(即弹幕服务器)中获取弹幕消息,也就是弹幕服务器会向android客户端发送消息。

目前,android客户端在接收到弹幕服务器发送的弹幕消息时,会直接通过音视频播放/直播应用软件中的弹幕分发模块,基于android系统提供的引用关系链,将解析后的弹幕消息按接收顺序发送至各个需要接收弹幕消息的弹幕消息接收器对象中,如视图对象、业务控制器对象或数据管理器对象等。以视图对象为例,弹幕分发模块会直接按照视图层级的引用关系链逐层地将弹幕消息传递至目标视图对象。参见图1,如果一个位于第三视图层104中的视图对象需要获取到弹幕消息101,那么该弹幕消息101需要按照引用关系链,先传递至第一视图层102,再由第一视图层102传递至第二视图层103,并最终由第二视图层103再传递至第三视图层104。该过程中,即便第一视图层102和第二视图层103中的视图对象不需要该弹幕消息,其也必须接收并传递该弹幕消息。

上述现有技术中,并非弹幕分发模块直接对弹幕消息进行解析和校验等的预处理操作,这在一定程度上增加了弹幕消息的流转过程,降低了弹幕消息分发效率和时效性。另外,弹幕消息的分发流程过于复杂,用时较长,更大程度上降低弹幕消息分发效率,且增大系统资源消耗。



技术实现要素:

本发明实施例提供一种弹幕消息分发方法、装置、设备和存储介质,以简化弹幕消息分发过程,实现音视频播放/直播应用软件中弹幕消息的直达式分发,提高弹幕消息分发效率和时效性。

第一方面,本发明实施例提供了一种弹幕消息分发方法,包括:

顶级弹幕分发器对象获取待分发弹幕消息,并对所述待分发弹幕消息进行预处理,获得目标弹幕消息集合;

次级弹幕分发器对象获得所述目标弹幕消息集合及弹幕消息接收器对象;

次级弹幕分发器对象通过所述弹幕消息接收器对象调用弹幕分发函数,按序将所述目标弹幕消息集合中的目标弹幕消息分发至所述弹幕消息接收器对象中;

其中,所述目标弹幕消息为javabean类型;所述弹幕分发函数为所述弹幕消息接收器对象继承预定义的弹幕分发协议而获得,所述弹幕分发协议为具有公有权限修饰符的接口协议。

第二方面,本发明实施例还提供了一种弹幕消息分发装置,该装置包括:顶级弹幕分发器和次级弹幕分发器;

所述顶级弹幕分发器用于获取待分发弹幕消息,并对所述待分发弹幕消息进行预处理,获得目标弹幕消息集合;

所述次级弹幕分发器用于获得所述目标弹幕消息集合及弹幕消息接收器对象,并通过所述弹幕消息接收器对象调用弹幕分发函数,按序将所述目标弹幕消息集合中的目标弹幕消息分发至所述弹幕消息接收器对象中;

其中,所述目标弹幕消息为javabean类型;所述弹幕分发函数为所述弹幕消息接收器对象继承预定义的弹幕分发协议而获得,所述弹幕分发协议为具有公有权限修饰符的接口协议。

第三方面,本发明实施例还提供了一种设备,该设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的弹幕消息分发方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的弹幕消息分发方法。

本发明实施例通过在音视频播放/直播应用软件中设置顶级弹幕分发器,以对从弹幕服务器接收到的弹幕消息进行预处理,获得目标弹幕消息集合,使得弹幕消息的预处理操作均集中在弹幕分发通道中,减少与其他模块的信息交互,一定程度上提高弹幕消息分发的效率。通过弹幕消息接收器对象继承透传式弹幕分发协议,使得弹幕消息接收器对象持有了弹幕分发函数,从而构建了弹幕消息直达式分发的分发接口和分发函数,使得音视频播放/直播应用软件中设置的次级弹幕分发器与弹幕消息接收器对象之间具有了弹幕消息直达的消息传输通道。通过次级弹幕分发器接收顶级弹幕分发器生成的目标弹幕消息集合,并调用弹幕消息接收器对象中的弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中,实现了次级弹幕分发器从上述构建的消息传输通道,直接将弹幕消息分发至各个弹幕消息接收器对象,极大地简化了弹幕消息分发过程,进一步提高了弹幕消息的分发效率,也在一定程度上降低了系统的资源损耗。

附图说明

图1是现有技术中弹幕消息分发的过程示意图;

图2是本发明实施例一中的一种弹幕消息分发方法的流程图;

图3是本发明实施例一中的弹幕消息分发的过程示意图;

图4是本发明实施例二中的一种弹幕消息分发方法的流程图;

图5是本发明实施例三中的一种弹幕消息分发装置的结构示意图;

图6是本发明实施例四中的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

本实施例提供的弹幕消息分发方法,可适用于android客户端中的音视频播放/直播应用软件,将接收到的待分发弹幕消息分发至各个弹幕消息接收器对象。该方法可以由弹幕消息分发装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在安装有音视频播放/直播应用软件的设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图2,本实施例的方法具体包括如下步骤:

s110、顶级弹幕分发器对象获取待分发弹幕消息,并对待分发弹幕消息进行预处理,获得目标弹幕消息集合。

其中,顶级弹幕分发器对象是指对弹幕消息进行分发处理的上一层级的弹幕分发器的实例化对象,其与次级弹幕分发器对象相对设置,次级弹幕分发器对象是对弹幕消息进行分发处理的下一层级的弹幕分发器的实例化对象。待分发弹幕消息是指等待分发至弹幕消息接收器对象的弹幕消息,其是android客户端从弹幕服务器中获取。这里,弹幕消息接收器对象是指音视频播放/直播应用软件中需要接收弹幕消息且满足直达式接收弹幕消息条件的组件对象,例如可以是用于弹幕消息显示的视图对象,也可以是用于对弹幕消息进行数据处理的业务控制器对象,还可以是对弹幕消息进行存储或传输的数据管理器对象。上述直达式接收弹幕消息条件将在后续进行说明。目标弹幕消息集合是指至少存储了待分发弹幕消息对应的目标弹幕消息的集合,其是一个有序集合。目标弹幕消息是指满足弹幕分发条件的弹幕消息,例如可以是设定数据格式的弹幕消息,也可以是经过弹幕消息解析和校验等操作的弹幕消息,还可以是具备优先级标签的弹幕消息等。示例性地,目标弹幕消息为javabean类型,即目标弹幕消息的数据类型须是javabean类型,这样设置的好处在于,便于对目标弹幕消息进行统一管理。

具体地,顶级弹幕分发器对象从弹幕服务器获取待分发弹幕消息,其获取方式可以是android客户端向弹幕服务器发送数据获取请求,弹幕服务器被动响应数据获取请求来获取;优选是通过android客户端中预先建立的弹幕监听器接口对象及弹幕监听器接口对象中作为回调函数的消息传输函数,接收弹幕服务器中的弹幕库对象回调消息传输函数发送的弹幕消息,弹幕监听器接口对象用于监听弹幕服务器中的弹幕库对象。也就是说,android客户端从弹幕服务器获取弹幕消息是通过android客户端中设置弹幕监听器接口对象,对弹幕服务器中的弹幕库对象进行监听,为弹幕服务器发送弹幕消息至android客户端提供接口,且弹幕监听器中包含回调函数,为弹幕服务器发送弹幕消息至android客户端提供调用函数指针。当弹幕消息到达弹幕服务器时,触发弹幕服务器主动调用回调函数,即弹幕服务器通过回调函数的函数指针,将弹幕消息由弹幕监听器接口发送至android客户端,android客户端则及时地、被动地接收弹幕消息,即待分发弹幕消息,并将其传输至顶级弹幕分发器对象。上述弹幕监听器和回调函数便是android客户端中设置的待分发弹幕消息获取协议和协议函数。

获取到待分发弹幕消息之后,顶级弹幕分发器对象直接对其进行预处理,例如可以是解析和/或校验待分发弹幕消息,也可以是将获取的多条待分发弹幕消息进行排序等,从而获得目标弹幕消息。之后,进一步存储该目标弹幕消息,获得目标弹幕消息集合。

示例性地,顶级弹幕分发器对象对待分发弹幕消息进行预处理,获得目标弹幕消息集合包括:顶级弹幕分发器对象对待分发弹幕消息进行解密和弹幕解析,获得解析弹幕消息;顶级弹幕分发器对象对解析弹幕消息进行弹幕校验,获得校验弹幕消息;顶级弹幕分发器对象将校验弹幕消息重构为javabean对象,获得目标弹幕消息,并将目标弹幕消息按序添加至初始弹幕消息集合,获得目标弹幕消息集合。

其中,初始弹幕消息集合是指未存储待分发弹幕消息对应的目标弹幕消息的弹幕消息集合,其同样是一个有序集合,具体的数据结构可以是诸如栈或队列等的线性表顺序结构,也可以是链表结构。

具体地,弹幕服务器将待分发弹幕消息发送至android客户端之前,为了确保数据传输的安全性,会对待分发弹幕消息进行加密处理。也就是说,顶级弹幕分发器对象获取到的待分发弹幕消息处于加密状态。那么,顶级弹幕分发器对象在对其进行后续处理时,首先对加密后的待分发弹幕消息进行解密,获得解密后的待分发弹幕消息(即解密弹幕消息)。并对解密弹幕消息进行解析,即将字符串string类型的解密弹幕消息进行字符串拆分,获得不包含字符串开始符、字符串分隔符和字符串结束符等无实际意义的多余字符的解析弹幕消息。之后,为了确保接收到弹幕消息的正确性,对解析弹幕消息进行校验,例如解密是否正确的解密校验、消息格式是否正确的格式校验、消息数量是否一致的数量校验和消息是否完整的完整性校验等,校验不合格的消息则丢弃或报错,而将校验合格的解析弹幕消息作为校验弹幕消息。然后,将所得的校验弹幕消息重构为javabean对象,作为目标弹幕消息,以便后续进行弹幕分发。同时,为了确保不丢失未被及时分发的弹幕消息,将获得的目标弹幕消息按照初始弹幕消息集合的数据结构,顺序添加至初始弹幕消息集合中,获得目标弹幕消息集合。这样设置的好处在于,可以减少专门用于弹幕消息预处理的独立功能模块的设置,降低程序开发难度。同时,省去了弹幕消息在不同功能模块之间的跨模块流转过程,提高了弹幕消息的分发处理速度,进一步提高弹幕消息的分发效率。

s120、次级弹幕分发器对象获得目标弹幕消息集合及弹幕消息接收器对象。

具体地,顶级弹幕分发器对象和次级弹幕分发器对象同属一个功能模块,故两者之间可以直接进行信息交互,即次级弹幕分发器对象可以直接获取顶级弹幕分发器对象生成的目标弹幕消息集合。同时,次级弹幕分发器对象可以将音视频播放/直播应用软件中的各个组件对象对应的弹幕消息与待分发弹幕消息进行对比,以确定出与待分发弹幕消息对应的组件对象,作为弹幕消息接收器对象,这意味着次级弹幕分发器对象持有了弹幕消息接收器对象的引用关系,可以基于该引用关系进行待分发弹幕消息的分发。

s130、次级弹幕分发器对象通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中。

其中,弹幕分发函数是用于进行弹幕消息分发的函数,其为弹幕分发协议的内部函数。弹幕分发协议是音视频播放/直播应用软件中预先定义的,次级弹幕分发器对象进行弹幕分发时所遵循的组件间通信协议。示例性地,弹幕分发协议为具有公有权限修饰符的接口协议,即其可以为具有公有权限修饰符public的接口类型interface的协议,这样便于其他类对该弹幕分发协议进行访问。示例性地,弹幕分发函数为弹幕消息接收器对象继承预先定义的弹幕分发协议而获得。如果弹幕消息接收器对象继承了定义的弹幕分发协议,意味着弹幕消息接收器对象持有了弹幕分发协议接口及其内部函数,其就被注册至次级弹幕分发器对象所在的弹幕分发总线中。这样,在次级弹幕分发器对象和各个弹幕消息接收器对象之间也就建立了消息传输通道,且具备了实现弹幕消息透传式传输的函数,后续的弹幕消息就可以基于该消息传输通道和分发函数被直达式分发。详细的弹幕分发协议及弹幕分发函数的定义及继承将在后续进行说明。

具体地,次级弹幕分发器对象按序从目标弹幕消息集合中获取一个目标弹幕消息,并将其重构为与弹幕分发函数的输入参数一致的数据形式,例如将目标弹幕消息重构为字符串string类型的消息标识type和消息message类型的消息体msg的形式,并以获得的type和msg作为函数输入参数,通过调用弹幕消息接收器对象内部的弹幕分发函数onmessage(stringtype,messagemsg),将目标弹幕消息分发至各个弹幕消息接收器对象中。这里消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该消息标识应当是一条弹幕消息的唯一的、全局的标识。消息体是指弹幕消息的承载者,其内包含具体地弹幕消息内容。

示例性地,在次级弹幕分发器对象通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中之前,还包括:次级弹幕分发器对象依据弹幕消息获取协议,定义弹幕分发协议及弹幕分发协议中的弹幕分发函数,其中,弹幕分发函数具有公有权限修饰符;弹幕消息接收器对象通过协议继承关键字,继承弹幕分发协议,以获得弹幕分发函数。

其中,弹幕消息获取协议是指android客户端从弹幕服务器获取弹幕消息时所遵循的通信协议,根据s110中所说明的,这里的弹幕消息获取协议是弹幕监听器接口对象及其内部所包含的回调函数。协议继承关键字是java语言中规定的进行协议继承的关键字。

具体地,为了实现次级弹幕分发器对象的直达式弹幕分发,本发明实施例中预先进行了弹幕分发协议的实现。更进一步地,为了实现对弹幕消息的透传式分发,本发明实施例中的弹幕分发协议为透传分发协议。弹幕分发协议是通过与android客户端中弹幕消息获取协议采用一致的协议内部函数的形式来实现透传式分发的。具体实施时,次级弹幕分发器对象根据弹幕消息获取协议及其内部函数onmessage(stringtype,messagemsg),定义具有公有权限修饰符public的弹幕分发协议imessage及具有公有权限修饰符public的协议内部函数——弹幕分发函数publicvoidonmessage(stringtype,messagemsg)。之后,所有的弹幕消息接收器对象均通过协议继承关键字implements,实现对弹幕分发协议的继承,以获得弹幕分发函数。

参见图3,通过本发明实施例中的弹幕消息分发方法,弹幕消息301可以经由顶级弹幕分发器对象302预处理之后,直接通过次级弹幕分发器对象303发送至需要接收弹幕消息的视图对象中,即位于第三视图层306中的视图对象,而无需经过中间的第一视图层304和第二视图层305。

本实施例的技术方案,通过在音视频播放/直播应用软件中设置顶级弹幕分发器,以对从弹幕服务器接收到的弹幕消息进行预处理,获得目标弹幕消息集合,使得弹幕消息的预处理操作均集中在弹幕分发通道中,减少与其他模块的信息交互,一定程度上提高弹幕消息分发的效率。通过弹幕消息接收器对象继承透传式弹幕分发协议,使得弹幕消息接收器对象持有了弹幕分发函数,从而构建了弹幕消息直达式分发的分发接口和分发函数,使得音视频播放/直播应用软件中设置的次级弹幕分发器与弹幕消息接收器对象之间具有了弹幕消息直达的消息传输通道。通过次级弹幕分发器接收顶级弹幕分发器生成的目标弹幕消息集合,并调用弹幕消息接收器对象中的弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中,实现了次级弹幕分发器从上述构建的消息传输通道,直接将弹幕消息分发至各个弹幕消息接收器对象,极大地简化了弹幕消息分发过程,进一步提高了弹幕消息的分发效率,也在一定程度上降低了系统的资源损耗。

实施例二

本实施例在上述实施例一的基础上,对“顶级弹幕分发器对象对待分发弹幕消息进行预处理,获得目标弹幕消息集合”进行了进一步优化。本实施例尤其适用于待分发弹幕消息的获取速度大于分发速度的情况。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图4,本实施例提供的弹幕消息分发方法包括:

s210、顶级弹幕分发器对象依据预设优先级规则,确定待分发弹幕消息的目标优先级。

其中,预设优先级规则是指预先设定的,用于进行优先级划分的规则,其可以是弹幕服务器或者android客户端中内置的弹幕消息的优先级规则,也可以是用户自定义的优先级规则。目标优先级是指待分发弹幕消息对应的优先级,其用于确定待分发弹幕消息对应的目标弹幕消息在目标弹幕消息集合中的存储顺序。

具体地,顶级弹幕分发器对象对待分发弹幕消息进行解析之后,根据解析弹幕消息和预设优先级规则,确定待分发弹幕消息的目标优先级。

示例性地,顶级弹幕分发器对象依据预设优先级规则,确定待分发弹幕消息的目标优先级包括:顶级弹幕分发器对象依据待分发弹幕消息对应的服务器优先级和/或本地优先级,确定目标优先级。

其中,服务器优先级是指弹幕服务器端中设定的优先级规则(即服务器优先级规则)中的优先级,例如服务器优先级规则可以是根据弹幕服务器对弹幕消息的处理状态确定优先级,如消息处理状态为50%时对应的服务器优先级低于处理状态为80%时对应的服务器优先级。本地优先级是指android客户端中设定的优先级规则(即本地优先级规则)中的优先级。本地优先级规则可以根据业务逻辑需求进行自定义,例如用于后台处理的弹幕消息的优先级低于前台显示处理的弹幕消息的优先级。

具体地,如果预设优先级规则为服务器优先级规则,那么顶级弹幕分发器对象根据解析弹幕消息,可以分析出其携带的服务器优先级,可直接将其作为目标优先级。

如果预设优先级规则为本地优先级规则,那么顶级弹幕分发器对象根据解析弹幕消息及本地优先级规则中的优先级划分标准,可以确定出待分发弹幕消息对应的本地优先级,直接将其作为目标优先级。

如果预设优先级规则为服务器优先级规则与本地优先级规则的综合优先级规则,那么顶级弹幕分发器对象确定出待分发弹幕消息对应的服务器优先级和本地优先级之后,还需按照预先设定的多个优先级之间的综合原则,例如累加或累乘多个优先级的综合原则等,将服务器优先级和本地优先级进行综合处理,获得待分发弹幕消息对应的综合优先级,将其作为目标优先级。

需要说明的是,具体的预设优先级规则是服务器优先级规则、本地优先级规则或综合优先级规则,可以预先人为设定,优选是根据服务器优先级规则和本地优先级规则的规则设定依据和/或两者之间的一致程度等因素,自动确定合适的预设优先级规则。例如,两者一致程度较高时,可以选择优先级确定速度快的优先级规则作为预设优先级规则;若两者一致程度较低,那么可以选择规则设定依据更加符合待分发弹幕消息应用场景的优先级规则,作为预设优先级规则;若两者一致程度较低,且两者的规则设定依据都无法很好地适应待分发弹幕消息应用场景,那么可以选择综合优先级规则作为预设优先级规则。这样设置的好处在于,能够根据待分发弹幕消息及具体的应用场景,确定合适的预设优先级规则,从而准确且快速地确定出目标优先级。

示例性地,顶级弹幕分发器对象依据待分发弹幕消息对应的本地优先级,确定目标优先级包括:顶级弹幕分发器对象依据预设优先级列表及待分发弹幕消息,确定本地优先级,作为目标优先级。

其中,预设优先级列表是指预先设定的,用于进行优先级查询的列表,其内可以存储每一条弹幕消息对应的优先级,也可以存储每一类弹幕消息对应的优先级。

具体地,当预设优先级规则为本地优先级规则时,顶级弹幕分发器对象根据待分发弹幕消息,从预设优先级列表中查询确定待分发弹幕消息对应的本地优先级,将其作为待分发弹幕消息的目标优先级。这样设置的好处在于,能够更加快速地确定出目标优先级,进一步提高弹幕分发效率。

s220、顶级弹幕分发器对象依据目标优先级,将待分发弹幕消息和目标优先级插入初始弹幕消息集合,获得目标弹幕消息集合。

具体地,在设定了预设优先级规则,并基于其对待分发弹幕消息进行优先级划分时,就意味着目标弹幕消息集合中的各个目标弹幕消息之间是根据优先级进行排序的。而为了更加方便地确定目标弹幕消息在集合中的存储位置,目标弹幕消息集合中除了存储各个目标弹幕消息之外,还存储有各个目标弹幕消息对应的优先级(即消息优先级)。那么,顶级弹幕分发器对象将待分发弹幕消息存储至初始弹幕消息集合时,要先根据待分发弹幕消息对应的目标优先级,确定出其在初始弹幕消息集合中的存储位置(即插入位置),之后再将待分发弹幕消息对应的目标弹幕消息和目标优先级存储至初始弹幕消息集合中的存储位置,即插入初始弹幕消息集合获得目标弹幕消息集合。

上述插入初始弹幕消息集合的方式与初始弹幕消息集合的数据结构相关。若初始弹幕消息集合为线性表顺序结构,那么插入上述数据时,就需要将上述存储位置之后的所有数据元素进行数据迁移,以使得存储位置处为空,从而可以将待分发弹幕消息对应的目标弹幕消息和目标优先级存储至上述存储位置。若初始弹幕消息集合为链表结构,那么插入过程就可以是修改相应结点指针域的过程。

示例性地,弹幕消息集合为链表结构;顶级弹幕分发器对象依据目标优先级,将待分发弹幕消息和目标优先级插入初始弹幕消息集合,获得目标弹幕消息集合包括:顶级弹幕分发器对象依据目标优先级及初始弹幕消息集合中的消息优先级,确定待分发弹幕消息在初始弹幕消息集合中的插入位置;顶级弹幕分发器对象依据初始弹幕消息集合中插入位置对应的前结点和待分发弹幕消息对应的当前结点,将待分发弹幕消息和目标优先级插入初始弹幕消息集合,获得目标弹幕消息集合。

其中,前结点是指链表结构中与插入位置相邻的,且位于插入位置之前的结点。当前结点是指待插入链表结构中的结点,其数据域中存储了待分发弹幕消息对应的目标弹幕消息和目标优先级的结点。

具体地,顶级弹幕分发器对象将目标优先级和初始弹幕消息集合中的各个消息优先级进行比较。如果初始弹幕消息集合中有与目标优先级同一优先级级别的消息优先级,那么将同一优先级级别对应的最后一个目标弹幕消息存储位置之后的存储位置,确定为插入位置。如果初始弹幕消息集合中没有与目标优先级同一优先级级别的消息优先级,那么将比目标优先级高一个级别的消息优先级对应的最后一个目标弹幕消息存储位置之后的存储位置,确定为插入位置。如果初始弹幕消息集合中没有消息优先级,那么将初始弹幕消息集合的第一个存储位置确定为插入位置。

确定了待分发弹幕消息在为链表结构的初始弹幕消息集合中的插入位置之后,顶级弹幕分发器对象将当前结点的指针域指向初始弹幕消息集合中前结点的指针域指向的数据域,并将前结点的指针域指向当前结点的数据域,便将当前结点插入了初始弹幕消息集合,即将待分发弹幕消息对应的目标弹幕消息和目标优先级存储至初始弹幕消息集合中的插入位置处,获得了目标弹幕消息集合。这样设置的好处在于,更加便捷地实现待分发弹幕消息对应的目标弹幕消息的有序存储,进一步提高弹幕消息的分发效率,也进一步减少了弹幕消息分发所占用的系统内存资源。

需要说明的是,上述将待分发弹幕消息存储至目标弹幕消息集合之前,顶级弹幕分发器对象或弹幕预处理功能模块还可以对待分发弹幕消息进行弹幕消息解密、弹幕消息解析、弹幕消息校验和弹幕消息重构等至少一项预处理操作,获得待分发弹幕消息对应的目标弹幕消息。之后,将该目标弹幕消息和目标优先级共同存储至目标弹幕消息集合。

s230、次级弹幕分发器对象获得目标弹幕消息集合及弹幕消息接收器对象。

s240、次级弹幕分发器对象通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中。

本实施例的技术方案,通过顶级弹幕分发器对象依据预设优先级规则,确定待分发弹幕消息的目标优先级;依据目标优先级,将待分发弹幕消息和目标优先级插入初始弹幕消息集合获得目标弹幕消息集合。实现了待分发弹幕消息对应的目标弹幕消息在目标弹幕消息集合中的有序存储,能够使得更加重要的目标弹幕消息优先分发至各个弹幕消息接收器对象,从而进一步提升用户体验。

以下是本发明实施例提供的弹幕消息分发装置的实施例,该装置与上述各实施例的弹幕消息分发方法属于同一个发明构思,在弹幕消息分发装置的实施例中未详尽描述的细节内容,可以参考上述弹幕消息分发方法的实施例。

实施例三

本实施例提供一种弹幕消息分发装置,参见图5,该装置具体包括:顶级弹幕分发器510和次级弹幕分发器520;

顶级弹幕分发器510用于获取待分发弹幕消息,并对待分发弹幕消息进行预处理,获得目标弹幕消息集合;

次级弹幕分发器520用于获得目标弹幕消息集合及弹幕消息接收器对象,并通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中;

其中,目标弹幕消息为javabean类型;弹幕分发函数为弹幕消息接收器对象继承预定义的弹幕分发协议而获得,弹幕分发协议为具有公有权限修饰符的接口协议。

可选地,顶级弹幕分发器510包括:

目标优先级确定模块,用于依据预设优先级规则,确定待分发弹幕消息的目标优先级;

目标弹幕消息集合获取模块,用于依据目标优先级,将待分发弹幕消息和目标优先级插入初始弹幕消息集合,获得目标弹幕消息集合。

可选地,目标优先级确定模块具体用于:

依据待分发弹幕消息对应的服务器优先级和/或本地优先级,确定目标优先级。

进一步地,目标优先级确定模块还具体用于:

依据预设优先级列表及待分发弹幕消息,确定本地优先级,作为目标优先级。

可选地,弹幕消息集合为链表结构。

相应地,目标弹幕消息集合获取模块具体用于:

依据目标优先级及初始弹幕消息集合中的消息优先级,确定待分发弹幕消息在初始弹幕消息集合中的插入位置;

依据初始弹幕消息集合中插入位置对应的前结点和待分发弹幕消息对应的当前结点,将待分发弹幕消息和目标优先级插入初始弹幕消息集合,获得目标弹幕消息集合。

可选地,顶级弹幕分发器510还具体用于:

对待分发弹幕消息进行解密和弹幕解析,获得解析弹幕消息;

对解析弹幕消息进行弹幕校验,获得校验弹幕消息;

将校验弹幕消息重构为javabean对象,获得目标弹幕消息,并将目标弹幕消息按序添加至初始弹幕消息集合,获得目标弹幕消息集合。

可选地,在上述装置的基础上,该装置还包括弹幕消息接收器;

相应地,次级弹幕分发器520还包括弹幕分发协议设置模块,用于:

在通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中之前,依据弹幕消息获取协议,定义弹幕分发协议及弹幕分发协议中的弹幕分发函数,其中,弹幕分发函数具有公有权限修饰符;

弹幕消息接收器用于通过协议继承关键字,继承弹幕分发协议,以获得弹幕分发函数。

通过本发明实施例三的一种弹幕消息分发装置,实现了音视频播放/直播应用软件中弹幕消息的直达式分发,简化了弹幕消息分发过程,提高了弹幕消息分发效率和时效性。

本发明实施例所提供的弹幕消息分发装置可执行本发明任意实施例所提供的弹幕消息分发方法,具备执行方法相应的功能模块和有益效果。

值得注意的是,上述弹幕消息分发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

实施例四

参见图6,本实施例提供了一种设备600,其包括:一个或多个处理器620;存储装置610,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器620执行,使得一个或多个处理器620实现本发明实施例所提供的弹幕消息分发方法,包括:

顶级弹幕分发器对象获取待分发弹幕消息,并对待分发弹幕消息进行预处理,获得目标弹幕消息集合;

次级弹幕分发器对象获得目标弹幕消息集合及弹幕消息接收器对象;

次级弹幕分发器对象通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中;

其中,目标弹幕消息为javabean类型;弹幕分发函数为弹幕消息接收器对象继承预定义的弹幕分发协议而获得,弹幕分发协议为具有公有权限修饰符的接口协议。

当然,本领域技术人员可以理解,处理器620还可以实现本发明任意实施例所提供的弹幕消息分发方法的技术方案。

图6显示的设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图6所示,该设备600包括处理器620、存储装置610、输入装置630和输出装置640;设备中处理器620的数量可以是一个或多个,图6中以一个处理器620为例;设备中的处理器620、存储装置610、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线650连接为例。

存储装置610作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的弹幕消息分发方法对应的程序指令/模块(例如,弹幕消息分发装置中的顶级弹幕分发器和次级弹幕分发器)。

存储装置610可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置610可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置610可进一步包括相对于处理器620远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置630可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。

实施例五

本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种弹幕消息分发方法,该方法包括:

顶级弹幕分发器对象获取待分发弹幕消息,并对待分发弹幕消息进行预处理,获得目标弹幕消息集合;

次级弹幕分发器对象获得目标弹幕消息集合及弹幕消息接收器对象;

次级弹幕分发器对象通过弹幕消息接收器对象调用弹幕分发函数,按序将目标弹幕消息集合中的目标弹幕消息分发至弹幕消息接收器对象中;

其中,目标弹幕消息为javabean类型;弹幕分发函数为弹幕消息接收器对象继承预定义的弹幕分发协议而获得,弹幕分发协议为具有公有权限修饰符的接口协议。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的弹幕消息分发方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的弹幕消息分发方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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