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

文档序号:16278463发布日期:2018-12-14 22:44阅读:213来源:国知局
弹幕消息分发方法、装置、设备及存储介质与流程

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

背景技术

在诸如斗鱼的音视频播放/直播应用软件中,会大量使用弹幕消息。通常,这些弹幕消息是由音视频播放/直播应用软件逐条分发给需要使用弹幕消息的各个弹幕分发目标,如视图、业务控制器或数据管理器等。

以弹幕分发目标为视图为例,目前,对于安装于android系统的音视频播放/直播应用软件,其向各个视图分发弹幕消息的方式是逐层传递的方式。具体来说,android系统中的各个视图是按照层级关系布设的,那么基于该层级关系,可以构建各个视图之间的引用关系链。弹幕消息在各个视图之间的传递,便是按照上述引用关系链进行逐层传递的。参见图1,如果一个位于第三视图层104中的视图需要获取到弹幕消息101,那么该弹幕消息101需要按照引用关系链,先传递至第一视图层102,再由第一视图层102传递至第二视图层103,并最终由第二视图层103再传递至第三视图层104。这样,该视图获取弹幕消息的过程就比较复杂,用时较长,效率较低。而且,即便第一视图层102和第二视图层103中的视图不需要该弹幕消息,其也必须接收并传递该弹幕消息,无疑会造成系统资源的浪费。

现有的弹幕消息在音视频播放/直播应用软件中的分发方式存在分发过程复杂,分发效率低以及系统资源消耗较高的问题。



技术实现要素:

本发明实施例提供一种弹幕消息分发方法、装置、设备及存储介质,以实现音视频播放/直播应用软件中弹幕消息的直达式分发,使得各个弹幕分发目标能够直接获得弹幕消息,简化了弹幕消息分发过程,提高了弹幕消息分发效率。

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

获取待分发弹幕消息及第一弹幕分发目标;

将所述第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;

通过所述第二弹幕分发目标调用弹幕分发函数,将所述待分发弹幕消息分发至所述第二弹幕分发目标中,其中,所述弹幕分发函数为所述第一弹幕分发目标继承弹幕分发协议而获得。

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

数据获取模块,用于获取待分发弹幕消息及第一弹幕分发目标;

分发目标获取模块,用于将所述第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;

弹幕消息分发模块,用于通过所述第二弹幕分发目标调用弹幕分发函数,将所述待分发弹幕消息分发至所述第二弹幕分发目标中,其中,所述弹幕分发函数为所述第一弹幕分发目标继承弹幕分发协议而获得。

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

一个或多个处理器;

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

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

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

本发明实施例通过获取待分发弹幕消息,构建了弹幕消息直达式分发的数据基础。通过获取继承了弹幕分发协议的第一弹幕分发目标,使得第一弹幕分发目标中持有了弹幕分发函数,构建了弹幕消息直达式分发的分发接口和分发函数,使得音视频播放/直播应用软件与第一弹幕分发目标之间具有了弹幕消息直达的消息传输通道。通过将所述第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;通过所述第二弹幕分发目标调用弹幕分发函数,将所述待分发弹幕消息分发至所述第二弹幕分发目标中,实现了音视频播放/直播应用软件从上述构建的消息传输通道,直接将弹幕消息分发至各个弹幕分发目标,极大地简化了弹幕消息分发过程,提高了弹幕消息的分发效率,也在一定程度上降低了系统的资源损耗。

附图说明

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

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

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

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

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

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

具体实施方式

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

实施例一

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

s110、获取待分发弹幕消息及第一弹幕分发目标。

其中,待分发弹幕消息是指等待分发至弹幕分发目标的弹幕消息,其是android客户端从弹幕服务器中获取。第一弹幕分发目标是指音视频播放/直播应用软件中需要接收弹幕消息且满足直达式接收弹幕消息条件的组件对象。例如第一弹幕分发目标可以是用于弹幕消息显示的视图,也可以是用于对弹幕消息进行数据处理的业务控制器,还可以是对弹幕消息进行存储或传输的数据管理器。这里的直达式接收弹幕消息的条件将在后续进行说明。本发明实施例中将以第一弹幕消息为视图进行举例说明。

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

第一弹幕分发目标的获取,首先是确定组件对象是否需要接收弹幕消息,例如可以通过对弹幕消息进行区分的弹幕消息标识判断;也可以是对android客户端的音视频播放/直播应用软件中的各个视图进行分析,例如对视图的属性(如用途)进行分析,以判断其是否需要接收弹幕消息;同时,对视图是否具备直达式接收弹幕消息的条件进行判断;只有同时满足上述两个条件的视图才可确定为第一弹幕分发目标。

示例性地,获取第一弹幕分发目标包括:若弹幕分发目标列表存在,且弹幕分发目标列表的元素个数大于0,则依据弹幕分发目标列表获取第一弹幕分发目标。

其中,弹幕分发目标列表是指存储第一弹幕分发目标的列表,优选是该弹幕分发目标列表中存储音视频播放/直播应用软件中所有的第一弹幕分发目标。这里,存储第一弹幕分发目标意味着弹幕分发模块持有了第一弹幕分发目标的引用关系,后续可以基于该引用关系进行待分发弹幕消息的分发。该弹幕分发目标列表的创建及维护,将在实施例二中进行详述。

具体地,如果要通过弹幕分发目标列表来获取第一弹幕分发目标,则首先需要判断弹幕分发目标列表是否存在。如果弹幕分发目标列表不存在,则说明android客户端中的弹幕分发模块中没有建立第一弹幕分发目标的引用关系,则不进行该条待分发弹幕消息的分发,而是通过异常提示代码throwexception抛出一个异常消息,以便开发人员快速定位出错位置,并且返回至获取待分发弹幕消息的步骤,以进行下一条弹幕消息的处理。

如果弹幕分发目标列表存在,则进一步通过列表元素数量获取函数count()来判断该弹幕分发列表的元素个数是否大于0。如果元素个数不大于0,则说明该列表虽然存在,但是其内部没有存储任何元素,同样不可进行弹幕消息的分发,则返回至获取待分发弹幕消息的步骤,以进行下一条弹幕消息的处理。

如果列表元素个数大于0,则说明该待分发弹幕消息需要分发至弹幕分发目标列表中的每一个列表元素,此时通过弹幕分发目标列表获取其中的元素,即第一弹幕分发目标,该获取过程可以是逐个获取第一弹幕分发目标,也可以是并行的获取多个第一弹幕分发目标,具体的获取方式与弹幕分发模块的处理机制相适应。这样设置的好处在于,android客户端中的音视频播放/直播应用软件可以直接通过对弹幕分发目标列表的访问,实现对所有第一弹幕分发目标进行弹幕消息的分发,而无需在分发弹幕消息之前再逐个判断视图是否为第一弹幕分发目标,可以进一步提高弹幕分发效率。

s120、将第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标。

其中,弹幕分发协议对象是指基于弹幕分发协议而生成的对象。这里,弹幕分发协议是android客户端的音视频播放/直播应用软件中预先定义的弹幕分发模块进行弹幕分发时所遵循的组件间通信协议。第二弹幕分发目标是音视频播放/直播应用软件中弹幕分发模块进行弹幕分发的分发对象,其与第一弹幕分发目标相对应,是第一弹幕分发目标进行数据类型转换后的弹幕分发目标。

具体地,弹幕分发模块在进行待分发弹幕消息的直达式分发时,是通过预先定义的弹幕分发协议进行分发的,其在识别弹幕分发目标时,是通过弹幕分发协议对象进行识别的。根据后续说明可知,虽然第一弹幕分发目标已经继承了弹幕分发协议,属于一种弹幕分发协议对象,但是其同时还是组件对象。为了便于弹幕分发协议的执行,利用第一弹幕分发目标进行弹幕消息的分发,需将其设置为单纯的弹幕分发协议对象。故在进行待分发弹幕消息的分发之前,需要先将第一弹幕分发目标转换为弹幕分发协议对象,以获得弹幕分发模块可以识别并调用的第二弹幕分发目标。

示例性地,在将第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标之前,还包括:依据待分发弹幕消息的弹幕消息获取协议,定义弹幕分发协议及弹幕分发协议中的弹幕分发函数;第一弹幕分发目标通过协议继承关键字,继承弹幕分发协议,以获得弹幕分发函数。

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

具体地,为了实现弹幕分发模块的直达式弹幕分发,本发明实施例中预先进行了弹幕分发协议的实现。更进一步地,为了实现对弹幕消息的透传式分发,本发明实施例中的弹幕分发协议为透传分发协议。弹幕分发协议是通过与android客户端中弹幕消息获取协议采用一致的协议内部函数的形式来实现透传式分发的。

具体实施时,根据待分发弹幕消息的弹幕消息获取协议及其内部函数onmessage(stringtype,messagemsg),定义弹幕分发协议imessage及其内部函数——弹幕分发函数publicvoidonmessage(stringtype,messagemsg),其中type为字符串string类型的弹幕消息标识,msg为消息message类型的弹幕消息体。这里,弹幕消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该弹幕消息标识应当是一条弹幕消息的唯一的、全局的标识。弹幕消息体是指弹幕消息的承载者,其内包含具体地弹幕消息内容。

弹幕分发模块中定义了弹幕分发协议和弹幕分发函数之后,所有的第一弹幕分发目标均通过协议继承关键字implements,实现对弹幕分发协议的继承,以获得弹幕分发接口及弹幕分发函数。这样,就将各个第一弹幕分发目标注册至弹幕分发模块所在的弹幕分发总线中,在弹幕分发模块和各个第一弹幕分发目标之间建立了消息传输通道,且具备了实现弹幕消息透传式传输的函数,为后续实现弹幕消息的直达式分发提供了基础。

s130、通过第二弹幕分发目标调用弹幕分发函数,将待分发弹幕消息分发至第二弹幕分发目标中,弹幕分发函数为第一弹幕分发目标继承弹幕分发协议而获得。

具体地,根据上述说明可知,第一弹幕分发目标中已经持有弹幕分发函数,而第二弹幕分发目标是对第一弹幕分发目标进行数据类型转换而来,故第二弹幕分发目标中也包含有弹幕分发函数。那么,弹幕分发模块对待分发弹幕消息的分发过程则为,将待分发弹幕消息解析并重构为弹幕消息标识type和弹幕消息体msg的形式,并以获得的type和msg作为函数输入参数,通过第二弹幕分发目标调用其内部的弹幕分发函数onmessage(stringtype,messagemsg),将待分发弹幕消息分发至第二弹幕分发目标中。上述待分发弹幕消息的分发形式可以为串行分发,例如利用for-each语句将待分发弹幕消息逐个分发至各个第二弹幕分发目标中;也可以为并行分发,例如同时并行地将待分发弹幕消息分发至各个第二弹幕分发目标中,具体的分发形式与第一弹幕分发目标的获取形式相对应。

参见图3,通过本发明实施例中的弹幕消息分发方法,弹幕消息301可以直接通过弹幕分发模块(或称为弹幕分发器)302发送至需要接收弹幕消息的视图中,即位于第三视图层305中的视图,而无需经过中间的第一视图层303和第二视图层304。

本实施例的技术方案,通过获取待分发弹幕消息,构建了弹幕消息直达式分发的数据基础。通过获取继承了弹幕分发协议的第一弹幕分发目标,使得第一弹幕分发目标中持有了弹幕分发函数,构建了弹幕消息直达式分发的分发接口和分发函数,使得音视频播放/直播应用软件与第一弹幕分发目标之间具有了弹幕消息直达的消息传输通道。通过将第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;通过第二弹幕分发目标调用弹幕分发函数,将待分发弹幕消息分发至第二弹幕分发目标中,实现了音视频播放/直播应用软件从上述构建的消息传输通道,直接将弹幕消息分发至各个弹幕分发目标,极大地简化了弹幕消息分发过程,提高了弹幕消息的分发效率,也在一定程度上降低了系统的资源损耗。

实施例二

本实施例在上述实施例一的基础上,增加了弹幕分发目标列表维护的步骤,对弹幕分发目标列表的维护过程进行了详细阐述。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图4,本实施例提供的弹幕消息分发方法中弹幕分发目标列表的维护方法包括:

s210、依据弹幕分发协议,创建弹幕分发目标列表。

具体地,由于弹幕分发目标列表是用于存储第一弹幕分发目标,且是弹幕分发模块进行直接访问的列表,故该弹幕分发目标列表中元素的数据类型应该与弹幕分发协议对象一致。具体实施时,根据弹幕分发协议imessage中规定的弹幕分发协议对象imessage,创建弹幕分发目标列表listimessage,并利用android系统的动态数组类arraylist,对该弹幕分发目标列表listimessage进行初始化,其代码实现可以是list<imessage>listimessage=newarraylist<imessage>()。

s220、在创建第一弹幕分发目标之后,依据第一弹幕分发目标,调用列表元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表。

其中,列表元素添加函数是预先定义的,可以对弹幕分发目标列表进行元素添加操作的函数。

具体地,android客户端的音视频播放/直播应用软件中的每一个弹幕分发目标都有其生存周期,当弹幕分发目标被加载时,其被创建;当弹幕分发目标被退出时,其被销毁。那么,弹幕分发目标列表中对第一弹幕分发目标的存储,也应该是在第一弹幕分发目标的生存周期内,也就是说,当第一弹幕分发目标被创建后,将第一弹幕分发目标添加至弹幕分发目标列表中。

具体实施时,在第一弹幕分发目标被创建时,例如在视图被创建时,在其生命周期起始函数onviewcreated中,以第一弹幕分发目标为函数输入参数,调用列表元素添加函数publicvoidaddobserver(imessagedanmumessage),将已创建(待添加)的第一弹幕分发目标添加至弹幕分发目标列表。该列表元素添加函数的函数名称是addobserver,其是一个公有类型(public)的函数,以便弹幕分发模块能够方便的通过第一弹幕分发目标来调用相应的弹幕分发业务逻辑。函数返回值数据类型为void类型,表明该函数没有返回值,不关注返回信息。函数的参数类型是上述定义的弹幕分发协议imessage的弹幕分发协议对象,函数输入参数danmumessage即为待添加的第一弹幕分发目标。

示例性地,列表元素添加函数通过如下步骤实现将第一弹幕分发目标添加至弹幕分发目标列表的功能:判断列表元素添加函数的输入参数是否为与第一弹幕分发目标对应的目标输入参数;若是,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素判断函数,判断弹幕分发目标列表中是否包含第一弹幕分发目标;若否,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表。

具体地,上述列表元素添加函数的功能实现过程为:首先通过danmumessage==null的方式对列表元素添加函数的输入参数进行判断,以判断输入参数是否是第一弹幕分发目标对应的目标输入参数。若否,则说明列表元素添加函数的输入参数设置错误,该列表元素添加函数无法继续执行,故直接结束本次列表元素添加操作,以进行下一个第一弹幕分发目标的添加操作。

若输入参数为目标输入参数,即danmumessage!=null,则进一步通过弹幕分发目标列表的元素判断函数listimessage.contains(danmumessage),判断判定弹幕分发目标列表listimessage中是否已经包含了待添加的第一弹幕分发目标。如果元素判断函数的返回值为诸如true的确定性标识,则说明弹幕分发目标列表listimessage已经包含了待添加的第一弹幕分发目标,则无需进行添加操作,直接结束本次列表元素添加操作,以进行下一个第一弹幕分发目标的添加操作。

若元素判断函数的返回值为诸如false的否定性标识,则说明弹幕分发目标列表listimessage未包含待添加的第一弹幕分发目标,则以待添加的第一弹幕分发目标为函数输入参数,调用弹幕分发目标列表的元素添加函数listimessage.add(danmumessage),将上述第一弹幕分发目标添加至弹幕分发目标列表。这样设置的好处在于,能够减少代码执行过程中的逻辑错误,提高开发效率。

示例性地,在依据第一弹幕分发目标,调用列表元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表之前,还包括:依据弹幕分发协议,通过第一弹幕分发目标调用实例判断关键字,判断第一弹幕分发目标是否继承弹幕分发协议;若是,则执行依据第一弹幕分发目标,调用列表元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表的操作。

其中,实例判断关键字是java语言中规定的,以判断某一个对象是否是某一个类的实例的关键字,其使用方法为booleanresult=objectinstanceofclass,作用是判断实例判断关键字instanceof的左边对象object是否为其右边类class的实例,返回布尔类型boolean的返回值。

具体地,由于弹幕分发目标列表中存储的第一弹幕分发目标均是弹幕分发的对象,而要实现弹幕消息的直达式分发,弹幕分发目标列表中存储的第一弹幕分发目标均应当具备弹幕消息直达式分发的条件——继承了弹幕分发协议,也就是说添加至弹幕分发目标列表的第一弹幕分发目标应当是弹幕分发协议接口的实例。那么,在执行列表元素添加操作之前,应该先通过实例判断关键字instanceof判定待添加的第一弹幕分发目标是否为弹幕分发协议的实例,其代码实现可以为booleanresult=viewinstanceofimessage。如果返回值为诸如true的确定性标识,则说明待添加的第一弹幕分发目标是弹幕分发协议的实例,则可执行元素添加操作。否则,直接结束本次列表元素添加操作,以进行下一个第一弹幕分发目标的添加操作。这样设置的好处在于,能够进一步提高弹幕分发目标列表的有效性及可用性。

s230、在销毁第一弹幕分发目标之前,依据第一弹幕分发目标,调用列表元素删除函数,将第一弹幕分发目标从弹幕分发目标列表中删除。

其中,列表元素删除函数是预先定义的,可以对弹幕分发目标列表进行元素删除操作的函数。

具体地,当第一弹幕分发目标即将被销毁时,在其生命周期结束函数ondeatch中,将第一弹幕分发目标从弹幕分发目标列表中移除。具体实施时,在第一弹幕分发目标被销毁之前,以第一弹幕分发目标为函数输入参数,调用列表元素删除函数publicvoidremoveobserver(imessagedanmumessage),将待销毁(待删除)的第一弹幕分发目标从弹幕分发目标列表中移除。该列表元素添加函数的函数名称是removeobserver,其是一个公有类型(public)的函数,以便弹幕分发模块能够方便的通过第一弹幕分发目标来调用相应的弹幕分发业务逻辑。函数返回值数据类型为void类型,表明该函数没有返回值,不关注返回信息。函数的参数类型是上述定义的弹幕分发协议imessage的弹幕分发协议对象,函数输入参数danmumessage即为待删除的第一弹幕分发目标。

示例性地,列表元素删除函数通过如下步骤实现将第一弹幕分发目标从弹幕分发目标列表中删除的功能:判断列表元素删除函数的输入参数是否为与第一弹幕分发目标对应的目标输入参数;若是,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素判断函数,判断弹幕分发目标列表中是否包含第一弹幕分发目标;若是,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素删除函数,将第一弹幕分发目标从弹幕分发目标列表中删除。

具体地,上述列表元素删除函数的功能实现过程为:首先通过danmumessage==null的方式对列表元素删除函数的输入参数进行判断,以判断输入参数是否是第一弹幕分发目标对应的目标输入参数。若否,则说明列表元素删除函数的输入参数设置错误,该列表元素删除函数无法继续执行,故直接结束本次列表元素删除操作。

若输入参数为目标输入参数,即danmumessage!=null,则进一步通过弹幕分发目标列表的元素判断函数listimessage.contains(danmumessage),判断判定弹幕分发目标列表listimessage中是否已经包含了待删除的第一弹幕分发目标。如果元素判断函数的返回值为诸如false的否定性标识,则说明弹幕分发目标列表listimessage未包含待删除的第一弹幕分发目标,则无需进行删除操作,直接结束本次列表元素删除操作。

若元素判断函数的返回值为诸如true的确定性标识,则说明弹幕分发目标列表listimessage中包含待删除的第一弹幕分发目标,则以待删除的第一弹幕分发目标为函数输入参数,调用弹幕分发目标列表的元素删除函数listimessage.remove(danmumessage),将待删除的第一弹幕分发目标从弹幕分发目标列表中移除。

本实施例的技术方案,通过创建并维护一个弹幕分发目标列表,对需要接收弹幕消息的弹幕分发目标进行管理,能够进一步提高弹幕消息的分发效率。通过列表元素添加函数和列表元素删除函数对弹幕分发目标列表进行动态维护,能够提高弹幕分发目标列表中数据更新的实时性,从而提高弹幕分发目标列表的有效性,进而进一步提高弹幕消息的分发效率。

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

实施例三

本实施例提供一种弹幕消息分发装置,参见图5,该装置具体包括:

数据获取模块510,用于获取待分发弹幕消息及第一弹幕分发目标;

分发目标获取模块520,用于将数据获取模块510获取的第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;

弹幕消息分发模块530,用于通过分发目标获取模块520获得的第二弹幕分发目标调用弹幕分发函数,将数据获取模块510获取的待分发弹幕消息分发至分发目标获取模块520获得的第二弹幕分发目标中,其中,弹幕分发函数为第一弹幕分发目标继承弹幕分发协议而获得。

可选地,数据获取模块510具体用于:

若弹幕分发目标列表存在,且弹幕分发目标列表的元素个数大于0,则依据弹幕分发目标列表获取第一弹幕分发目标。

可选地,在上述装置的基础上,该装置还包括分发目标列表维护模块540,该分发目标列表维护模块540包括:

列表创建子模块,用于在依据弹幕分发目标列表获取第一弹幕分发目标之前,依据弹幕分发协议,创建弹幕分发目标列表;

列表元素添加子模块,用于在创建第一弹幕分发目标之后,依据第一弹幕分发目标,调用列表元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表;

列表元素删除子模块,用于在销毁第一弹幕分发目标之前,依据第一弹幕分发目标,调用列表元素删除函数,将第一弹幕分发目标从弹幕分发目标列表中删除。

其中,列表元素添加子模块包括列表元素添加函数执行单元,用于通过如下步骤实现将所述第一弹幕分发目标添加至所述弹幕分发目标列表的功能::

判断列表元素添加函数的输入参数是否为与第一弹幕分发目标对应的目标输入参数;

若是,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素判断函数,判断弹幕分发目标列表中是否包含第一弹幕分发目标;

若否,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表。

进一步地,列表元素添加函数执行单元具体用于:

在依据第一弹幕分发目标,调用列表元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表之前,依据弹幕分发协议,通过第一弹幕分发目标调用实例判断关键字,判断第一弹幕分发目标是否继承弹幕分发协议;

若是,则执行依据第一弹幕分发目标,调用列表元素添加函数,将第一弹幕分发目标添加至弹幕分发目标列表的操作。

其中,列表元素删除子模块包括列表元素删除函数执行单元,用于通过如下步骤实现将所述第一弹幕分发目标从所述弹幕分发目标列表中删除的功能:

判断列表元素删除函数的输入参数是否为与第一弹幕分发目标对应的目标输入参数;

若是,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素判断函数,判断弹幕分发目标列表中是否包含第一弹幕分发目标;

若是,则依据第一弹幕分发目标,调用弹幕分发目标列表的元素删除函数,将第一弹幕分发目标从弹幕分发目标列表中删除。

可选地,在上述装置的基础上,该装置还包括:弹幕分发协议继承模块550,用于在将第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标之前,依据待分发弹幕消息的弹幕消息获取协议,定义弹幕分发协议及弹幕分发协议中的弹幕分发函数;

第一弹幕分发目标通过协议继承关键字,继承弹幕分发协议,以获得弹幕分发函数。

通过本发明实施例三的一种弹幕消息分发装置,实现音视频播放/直播应用软件中弹幕消息的直达式分发,使得各个弹幕分发目标能够直接获得弹幕消息,简化了弹幕消息分发过程,提高了弹幕消息分发效率。

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

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

实施例四

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

获取待分发弹幕消息及第一弹幕分发目标;

将第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;

通过第二弹幕分发目标调用弹幕分发函数,将待分发弹幕消息分发至第二弹幕分发目标中,其中,弹幕分发函数为第一弹幕分发目标继承弹幕分发协议而获得。

当然,本领域技术人员可以理解,处理器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可包括显示屏等显示设备。

实施例五

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

获取待分发弹幕消息及第一弹幕分发目标;

将第一弹幕分发目标转换为弹幕分发协议对象,获得第二弹幕分发目标;

通过第二弹幕分发目标调用弹幕分发函数,将待分发弹幕消息分发至第二弹幕分发目标中,其中,弹幕分发函数为第一弹幕分发目标继承弹幕分发协议而获得。

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

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

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

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