一种弹幕消息处理方法、解析方法及系统与流程

文档序号:11693461阅读:311来源:国知局
一种弹幕消息处理方法、解析方法及系统与流程
本发明涉及数据存储
技术领域
,更具体地,涉及一种弹幕消息处理方法、解析方法及系统。
背景技术
:在网络直播客户端中最常见的一个功能就是发送弹幕消息,弹幕消息就是在视频界面上发送的文字和图片组成的富文本消息,针对网络直播过程中众多的用户量,弹幕消息的并发数量是异常巨大的,因此,如何能够提高弹幕消息的并发显得尤为重要。目前,通常采用json格式来存储大量的弹幕消息,例如,采用json格式存储的弹幕消息为:{type:101,msg={type="chatmsg",rid="591839",ct="1",uid="46387962",nn="意识的爱",txt="看下装备",cid="123456",ic="abcdefg",level="4",el=""}}。从上述存储格式来看,json存储格式中包括众多的{}以及""这些符号,这些符号占用的内存比较大,因此采用json格式存储的弹幕消息数据占用的内存容量也比较大,不适合弹幕消息的并发传输。技术实现要素:本发明提供一种克服上述问题或者至少部分地解决上述问题的弹幕消息处理方法、解析方法及系统。根据本发明的一个方面,提供了一种弹幕消息处理方法,包括:s1a,获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;s2a,将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;s3a,将所述数据类型信息和所述整个数据内容通过第二分隔符进行连接,形成弹幕消息。根据本发明的另一方面,还提供了一种弹幕消息解析方法,包括:s1b、将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容;s2b,将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块;s3b,按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。根据本发明的又一方面,提供了一种弹幕消息处理系统,包括:获取模块,用于获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;第一连接模块,用于将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;第二连接模块,用于将所述数据类型信息和所述整个数据内容通过第一分隔符进行连接,形成弹幕消息。根据本发明的再一方面,还提供了一种弹幕消息解析系统,包括:第一分割模块,用于将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容;第二分割模块,用于将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块;第三分割模块,用于按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。本发明提供的一种弹幕消息处理方法、解析方法及系统,通过不同的分隔符将弹幕消息的各部分数据连接在一起,与通用的json格式相比,相同的数据所占用的内存容量更小,更有更高的压缩比,能够满足弹幕消息数据的高并发的要求;在对弹幕消息解析的过程中,通过多次调用函数就能完整地将数据解析出来,执行效率非常快,占用的系统资源非常少,而在对通用的json格式数据的解析过程中会有很多对象的生成,而在java中,对象是非常占有系统资源的,而本发明的解析方法,整个解析过程中不涉及到任何对象,全部都是对字符串进行的操作,解析的效率会更高。附图说明图1为本发明一个实施例的弹幕消息处理方法流程图;图2为本发明另一个实施例的弹幕消息解析方法流程图;图3为本发明一个实施例的弹幕消息处理系统连接框图;图4为本发明一个实施例的弹幕消息处理系统整个连接框图;图5为本发明另一个实施例的弹幕消息解析系统整体连接框图;图6为本发明一个实施例的弹幕消息处理系统的测试设备的结构框图;图7为本发明另一个实施例的弹幕消息解析系统的测试设备的结构框图。具体实施方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。参见图1,为本发明一个实施例的弹幕消息处理方法,包括:s1a,获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;s2a,将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;s3a,将所述数据类型信息和所述整个数据内容通过第二分隔符进行连接,形成弹幕消息。在网络直播客户端中最常见的一个功能就是发送弹幕消息,弹幕消息就是在视频界面上发送的文字和图片组成的富文本消息,弹幕消息的并发数量是异常巨大的,采用通用的json格式,数据占用的内存容量比较大。因此,本实施例通过不同的分隔符将弹幕消息的各部分数据连接在一起,与通用的json格式相比,相同的数据所占用的内存容量更小,更有更高的压缩比,能够满足弹幕消息数据的高并发的要求。在本发明的另一个实施例中,将每一个所述子数据块转换为“键值-属性值”对的格式,每一个所述“键值-属性值”对之间通过所述第一分隔符进行连接,其中,所述键值为所述子数据块的唯一标识,所述属性值为所述子数据块的内容。其中,所述键值与属性值之间通过第三分隔符进行连接。下面以一个具体的例子来描述弹幕消息处理方法,本实施例中自定义的弹幕消息的格式为:type:101,msg:type@=chatmsg/rid@591839/ct@=1/uid@=46387962/nn@=意识的爱/txt@=看下装备/cid@=123456/ic@=abcdefg/level@=4/e1@=/。其中,弹幕消息分为两部分,第一部分为type:101,type表示的是弹幕消息数据内容的数据类型,101表示数据类型标识,用来区分该条数据是何种类型的数据;第二部分msg:type@=chatmsg/rid@591839/ct@=1/uid@=46387962/nn@=意识的爱/txt@看下装备/cid@=123456/ic@=abcdefg/level@=4/e1@=/是弹幕消息的具体数据内容,数据类型和数据内容之间通过分隔符“,”进行分隔连接,msg表示该条数据内容的开始,msg后面为type类型消息的具体内容。弹幕消息的具体内容包括多个子数据块,每一个子数据块采用“键值-属性值”对的格式,其中,type@=chatmsg即为msg中的一个“键值-属性值”对,“/”为每一个“键值-属性值”对之间的分隔符,“@=”为键值和属性值之间的分隔符,其中,如果键值对应的属性值为空,那么采用为@=/的方式进行展示。上述对弹幕消息的传输格式进行了定义,接下来将该格式与通用的json格式进行相关的对比分析。完全相同的弹幕消息使用json数据格式的形式进行展示如下:{type:101,msg={type="chatmsg",rid="591839",ct="1",uid="46387962",nn="意识的爱",txt="看下装备",cid="123456",ic="abcdefg",level="4",el=""}}。接下来用大小这个维度来进行对比分析本实施例使用的格式和json格式所占用的空间大小对比分析,通过统计发现,在相同信息量数据大小的情况下,本实施例所采用的格式所占用的字符数为114个字符,而json格式的数据所占用的字符数为129个字符,为了更为直观的展现上述格式在内存占用空间上的提升,使用表格的形式进行展现,具体的表格数据如下表1所示:表1相同msg下占用字符相对于129压缩比本实施例格式1140.88json格式1291通过上述表格数据的分析,可以得出相同数据量的情况下本实施例设计的格式相比已有的json数据格式压缩到了88%,也就是对数据压缩了12%的提升,这样对于相同数据量的弹幕消息,能够极大地提高系统处理数据的能力,提高了后台对弹幕消息的并发和处理能力。参见图2,为本发明另一个实施例的弹幕消息解析方法,包括:s1b、将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容;s2b,将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块;s3b,按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。其中,调用的函数为split()函数,在每一次调用split()函数将数据分割为两部分或者多部分后,将分割后的数据存放于字符串数组中。上述实施例对弹幕消息按照自定义格式进行了组织之后,在需要用到弹幕消息中的具体数据时,需要对弹幕消息进行解析。本实施例中通过多次调用函数就能完整地将数据解析出来,执行效率非常快,占用的系统资源非常少,而对通用的json格式的数据的解析过程中会有很多对象的生成,对象是非常占有系统资源的,而采用本发明的解析方法,整个过程中不涉及到任何对象,全部都是对字符串进行的操作,解析的效率会更高。下面以一个具体的例子来描述本实施例的弹幕消息的解析方法,解析过程分为以下几个步骤:(1)首先调用字符串中的string[]data=split(“,”)函数来将字符串按照”,”的方式来进行分割,将字符串分割成2部分,其一是type部分,其二是msg部分。split函数将返回一个切割好的字符串数组,这个字符串数组中第0个元素data[0]是type中的内容,第1个元素data[1]是msg中的内容。(2)对于data[0]中的数据再次调用string[]typemsg=data[0].split(“:”),将data[0]中的数据再次分割,那么typemsg[0]中存放的是type,typemsg[1]中存放的是101,也就是弹幕消息数据类型标识。(3)对于msg中的内容首先是通过调用string[]data1=smsg[1].split(“:”),那么data1[1]中的内容就是具体的msg的数据了。(4)再使用string[]realmsgdata=data1[1].split(“/”)函数调用,使用”/”来对数据进行分割得到每一个子数据块realmsgdata。(5)再对字数据块realmsgdata中的数据依次调用split(“@=”)来对数据再次分割得到真正需要的数据。通过上述方法能够完整地将弹幕消息解析出来,接下来对本实施例提供的解析方法与通用的json格式数据的解析方法进行对比分析,json格式数据的解析过程为主要包括以下步骤:假设json格式的数据为:{type:101,msg={type="chatmsg",rid="591839",ct="1",uid="46387962",nn=“意识的爱”,txt="看下装备",cid="123456",ic="abcdefg",level="4",el=""}}。(1)首先将上述字符串origindata(origindata代指上述字符串)数据进行格式化为jsonobject数据类型,具体为jsonobjectjsonobject=newjsonobject(origindata),这样就将origindata数据格式化成了一个jsonobject对象。(2)提取jsonobject对象中的msg数据,具体是通过调用jsonobjectmsgobject=origindata.getjsonobject(“msg”)的方法来实现,这样就获取到msg中的具体数据了,并且将msg中的内容赋值给msgobject对象。(3)接下来需要从msgobject对象中提取出具体的消息数据,具体是通过调用stringtypemsg=msgobject.getstring("type")函数来获取到type对应的具体数据;依次类推其它数据的获取如下所示:stringtypemsg=msgobject.getstring("rid");stringtypemsg=msgobject.getstring("ct");stringtypemsg=msgobject.getstring("uid");stringtypemsg=msgobject.getstring("nn");stringtypemsg=msgobject.getstring("txt");stringtypemsg=msgobject.getstring("cid");stringtypemsg=msgobject.getstring("ic");stringtypemsg=msgobject.getstring("level")。通过上述操作后就能够将json中的所有数据完整的解析出来了,接下来来对比分析一下本实施例的解析方式和json格式数据的解析方式的差异性。由于json格式数据的解析需要依赖第三方的json解析库来进行解析,并且解析过程中有众多个对象的生成,对象是非常占用数据资源的,实例化一个对象和释放一个对象会造成很大的系统开销。通过对比发现json格式数据的解析过程需要多次实例化对象,而本实施例提供的解析方法仅仅多次调用split函数就能够完整地将弹幕消息数据解析出来,整个解析过程没有涉及到任何对象的概念,全部都是对字符串进行的操作,占用的系统资源非常少,效率相对比较高。参见图3,为本发明一个实施例的弹幕消息处理系统,包括获取模块31、第一连接模块32和第二连接模块33。其中,获取模块31,用于获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;第一连接模块32,用于将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;第二连接模块33,用于将所述数据类型信息和所述整个数据内容通过第二分隔符进行连接,形成弹幕消息。参见图4,在本发明的另一个实施例中,弹幕消息处理系统中还包括格式转换模块34和第三连接模块35。格式转换模块34,用于将每一个所述子数据块转换为“键值-属性值”对的格式,其中,所述键值为所述子数据块的唯一标识,所述属性值为所述子数据块的内容,每一个所述“键值-属性值”对之间通过所述第一分隔符进行连接;第三连接模块35,用于将每一个键值与对应属性值之间通过第三分隔符进行连接。参见图5,为本发明一个实施例的弹幕消息解析系统,包括第一分割模块51、第二分割模块52、第三分割模块53和存放模块54。第一分割模块51,用于将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容。第二分割模块52,用于将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块。第三分割模块53,用于按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。存放模块54,用于将每一次分割出来的数据存放于字符串数组中。基于上述图3或图4对应实施例所提供的弹幕消息处理系统,本发明提供了一种弹幕消息处理系统的测试设备。参见图6,该弹幕消息处理系统的测试设备包括:处理器(processor)601、存储器(memory)602、通信接口(communicationsinterface)603和总线604;其中,处理器601、存储器602及通信接口603分别通过总线604完成相互间的通信;通信接口603用于该测试设备与弹幕渲染装置的通信设备之间的信息传输;处理器601用于调用存储器602中的程序指令,以执行上述图1对应实施例所提供的弹幕消息处理方法,例如包括:获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;将所述数据类型信息和所述整个数据内容通过第二分隔符进行连接,形成弹幕消息。本发明公开一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述图1对应实施例所提供的弹幕消息处理方法,例如包括:获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;将所述数据类型信息和所述整个数据内容通过第二分隔符进行连接,形成弹幕消息。本发明提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述图1对应实施例所提供的弹幕消息处理方法,例如包括:获取弹幕消息的数据内容以及所述数据内容的数据类型信息,其中,所述弹幕消息的数据内容包括多个子数据块;将数据内容的各个子数据块通过第一分隔符进行连接组成整个数据内容;将所述数据类型信息和所述整个数据内容通过第二分隔符进行连接,形成弹幕消息。基于上述图5对应实施例所提供的弹幕消息解析系统,本发明还提供了一种弹幕消息解析系统的测试设备。参见图7,该弹幕消息解析系统的测试设备包括:处理器(processor)701、存储器(memory)702、通信接口(communicationsinterface)703和总线704;其中,处理器701、存储器702及通信接口703分别通过总线704完成相互间的通信;通信接口703用于该测试设备与弹幕渲染装置的通信设备之间的信息传输;处理器701用于调用存储器703中的程序指令,以执行上述图2对应实施例所提供的弹幕消息解析方法,例如包括:将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容;将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块;按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。本发明还公开一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述图2对应实施例所提供的弹幕消息解析方法,例如包括:调用函数将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容;调用相同的函数,将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块;再次调用相同的函数按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。本发明还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述图2对应实施例所提供的弹幕消息解析方法,例如包括:调用函数将弹幕消息按照第二分隔符分割为两部分,其中,第一部分为弹幕消息的数据内容的数据类型信息,第二部分为弹幕消息的数据内容;调用相同的函数,将所述弹幕消息的数据内容按照第一分隔符分割为多个子数据块;再次调用相同的函数按照第三分隔符对每一个子数据块分割得到键值和属性值,并输出每一个子数据块中的属性值。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。以上所描述的弹幕渲染装置的测试设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。本发明提供的一种弹幕消息处理方法、解析方法及系统,通过不同的分隔符将弹幕消息的各部分数据连接在一起,与通用的json格式相比,相同的数据所占用的内存容量更小,更有更高的压缩比,能够满足弹幕消息数据的高并发的要求;在对弹幕消息解析的过程中,通过多次调用函数就能完整地将数据解析出来,执行效率非常快,占用的系统资源非常少,而对通用的json格式的数据的解析过程中会有很多对象的生成,对象是非常占有系统资源的,而采用本发明的解析方法,整个过程中不涉及到任何对象,全部都是对字符串进行的操作,解析的效率会更高。最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1