本发明涉及视频直播领域,尤其涉及一种弹幕显示方法及装置。
背景技术:
随着通信技术的发展,出现了越来越多的娱乐方式,如微博、手机游戏、网络视频直播等,其中网络视频直播由于其直观、内容丰富等特点,尤其受到人们的欢迎。
当用户发送弹幕消息后,现有技术通常是采用弹幕消息挤压方式来显示弹幕消息,即当一行中不具备再显示新的弹幕消息的资格的情况下,才会将新的弹幕消息显示于下一行。这种挤压显示弹幕消息的方式通常会将弹幕消息优先显示于直播界面的顶部,使弹幕消息集中聚集在直播界面的顶部,从而导致弹幕消息显示的不均匀,不能直观地反映出直播间的人气情况,使主播的直播体验欠佳,同时也影响观看用户的观看体验。
技术实现要素:
有鉴于此,本发明实施例提供一种弹幕显示方法及装置,均匀地在直播界面内显示弹幕消息,改善主播的直播体验以及观看用户的观看体验。
本发明实施例提供一种弹幕显示方法,包括:
接收待显示弹幕消息;
确定弹幕显示区域中是否存在用以显示所述待显示弹幕消息的空行,其中,所述弹幕显示区域被预先划分为多行;
若存在所述空行,则将所述待显示弹幕消息显示于所述空行中。
可选地,所述方法还包括:
若不存在所述空行,则获取满足预设插入条件的可插入行;
将所述待显示弹幕消息显示于所述可插入行。
可选地,所述获取满足预设插入条件的可插入行,包括:
获取所述弹幕显示区域中各行对应的最新已显示弹幕消息的运动距离,其中,所述最新已显示弹幕消息为每行中最后进入所述弹幕显示区域的已显示弹幕消息;
确定所述运动距离大于或等于预设长度的最新已显示弹幕消息所在的行为所述可插入行。
可选地,所述方法还包括:
若不存在所述可插入行,则将所述待显示弹幕消息显示于所述弹幕显示区域中的任意一行中。
可选地,若所述可插入行有多个,则所述将所述待显示弹幕消息显示于所述可插入行,包括:
计算所述多个可插入行各自对应的最新已显示弹幕消息的第一运动速度,以及所述待显示弹幕消息的第二运动速度;
从所述多个可插入行中选择出所述第一运动速度大于或等于所述第二运动速度的最新已显示弹幕消息所对应的可插入行;
将所述待显示弹幕消息显示于选择出的可插入行中。
本发明实施例提供一种弹幕显示装置,包括:
接收模块,用于接收待显示弹幕消息;
确定模块,用于确定弹幕显示区域中是否存在用以显示所述待显示弹幕消息的空行,其中,所述弹幕显示区域被预先划分为多行;
显示模块,用于若存在所述空行,则将所述待显示弹幕消息显示于所述空行中。
可选地,所述装置还包括:
获取模块,用于若不存在所述空行,则获取满足预设插入条件的可插入行;
所述显示模块,还用于将所述待显示弹幕消息显示于所述可插入行。
可选地,所述获取模块具体包括:
获取单元,用于获取所述弹幕显示区域中各行对应的最新已显示弹幕消息的运动距离,其中,所述最新已显示弹幕消息为每行中最后进入所述弹幕显示区域的已显示弹幕消息;
确定单元,用于确定所述运动距离大于或等于预设长度的最新已显示弹幕消息所在的行为所述可插入行。
可选地,所述显示模块还用于:若不存在所述可插入行,则将所述待显示弹幕消息显示于所述弹幕显示区域中的任意一行中。
可选地,所述显示模块具体包括:
计算单元,用于计算所述多个可插入行各自对应的最新已显示弹幕消息的第一运动速度,以及所述待显示弹幕消息的第二运动速度;
选择单元,用于从所述多个可插入行中选择出所述第一运动速度大于或等于所述第二运动速度的最新已显示弹幕消息所对应的可插入行;
显示单元,用于将所述待显示弹幕消息显示于选择出的可插入行中。
本发明实施例提供的弹幕显示方法及装置,客户端接收待显示弹幕消息,根据当前弹幕显示区域中的已显示弹幕消息所处的位置确定当前弹幕显示区域中是否存在无弹幕消息的空行,其中,弹幕显示区域已经被预先划分为多行。若弹幕显示区域中存在空行,则将此待显示弹幕消息显示在此空行中。此种优先将待显示弹幕消息显示于空行中的弹幕显示方式能够避免由于多条弹幕同时显示于同一行中而造成弹幕的集中显示,改善弹幕消息的显示效果,使弹幕消息能够均匀地分布于弹幕显示区域,从而改善主播的直播体验以及观看用户的观看体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的弹幕显示方法实施例一的流程图;
图2为本发明实施例提供的弹幕显示方法实施例二的流程图;
图3为本发明实施例提供的弹幕显示装置实施例一的结构示意图;
图4为本发明实施例提供的弹幕显示装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
图1为本发明实施例提供的弹幕显示方法实施例一的流程图,本实施例提供的该弹幕显示方法的执行主体可以为客户端,如图1所示,该方法包括如下步骤:
s101,接收待显示弹幕消息。
观看用户在观看某个直播间的期间,所有正在观看此直播间的观看用户都可以通过发送弹幕消息的方式来实现与主播互动。当处于该直播间中的观看用户触发了弹幕发送操作后,由客户端向消息服务器发送弹幕消息。消息服务器接收此弹幕消息后根据弹幕消息中包括的接收者标识获知该弹幕消息所指向的直播间。
对于某一直播间来说,所有处于此直播间中的观看用户都有可能向该直播间发送弹幕,而对于某一个观看用户发送的弹幕,该直播间中的其他观看用户也是可以看到的。基于此,消息服务器会将接收到的针对于此直播间的弹幕消息发送给该直播间对应的各客户端。由于客户端接收到弹幕消息后需要对其进行显示位置的判断操作后才会进行消息显示的,因此将客户端接收到的弹幕消息称作待显示弹幕消息。
s102,确定弹幕显示区域中是否存在用以显示待显示弹幕消息的空行,若存在,则执行步骤s103。
弹幕显示区域被预先划分为多行,可选地,多行可以是预设数目行。而弹幕显示区域中的空行是指没有弹幕消息显示的行。当客户端确定出弹幕显示区域中存在空行时,则将此待显示弹幕消息显示于确定出的空行中。
可选地,客户端可以采用以下方法确定弹幕显示区域中是否存在空行。
客户端在显示弹幕消息的过程中,会针对每一行生成一个数组,该数组中记录有当前在该行显示的弹幕消息的消息信息,并且数组中的每个元素对应于一条弹幕消息。可选地,消息信息可以包括弹幕消息的长度、弹幕消息进入弹幕显示区域的时间以及弹幕消息当前所处的坐标位置等等。当客户端识别出某一行对应的数组中的内容为空时,则表明此数组对应的行为空行,也即是确定出弹幕显示区域中的空行。
s103,将待显示弹幕消息显示于空行中。
当客户端确定出的空行数目为一个时,则将此待显示弹幕消息显示于此空行中。
当客户端确定出的空行数目为多个时,可选地,客户端可以通过随机选择的方式,随机选择一空行,将待显示弹幕消息显示于该空行中。可选地,客户端还可以将待显示弹幕消息显示于多个空行中第一行,此第一行与显示有弹幕消息的行存在相邻的位置关系。
本实施例中,客户端接收待显示弹幕消息,根据当前弹幕显示区域中的已显示弹幕消息所处的位置确定当前弹幕显示区域中是否存在无弹幕消息的空行,其中,弹幕显示区域已经被预先划分为多行。若弹幕显示区域中存在空行,则将此待显示弹幕消息显示在此空行中。此种优先将待显示弹幕消息显示于空行中的弹幕显示方式能够避免由于多条弹幕同时显示于同一行中而造成弹幕的集中显示,改善弹幕消息的显示效果,使弹幕消息能够均匀地分布于弹幕显示区域,从而改善主播的直播体验以及观看用户的观看体验。
图2为本发明实施例提供的弹幕显示方法实施例二的流程图,如图2所示,该方法可以包括如下步骤:
s201,接收待显示弹幕消息。
s202,确定弹幕显示区域中是否存在用以显示待显示弹幕消息的空行,若不存在,则执行步骤s203。
上述步骤s201-s202的执行过程与前述实施例的相应步骤相似,可以参见如图1所示实施例中的相关描述,在此不赘述。
s203,获取满足预设插入条件的可插入行。
当客户端确定当前的弹幕消息显示区域中没有空行,也即是当前各行中都有正在显示的弹幕消息,在这种情况下,客户端会将待显示弹幕消息显示于满足预设插入条件的可插入行。
可选地,客户端可以采用以下方式确定用于显示待显示弹幕消息的可插入行。
首先,获取弹幕显示区域中各行对应的最新已显示弹幕消息的运动距离,其中,最新已显示弹幕消息为每行中最后进入弹幕显示区域的已显示弹幕消息。
由于每一行中的各已显示弹幕消息的消息信息都记录在与该行对应的一个数组中,因此,客户端可以从各行对应的数组中获知各行中最后进入弹幕显示区域的最新已显示弹幕消息以及各消息对应的消息信息,并且消息信息中包括弹幕消息当前所处的坐标位置。进而,客户端能够获得每行中最新已显示弹幕消息当前的坐标位置,坐标位置为最新已显示弹幕消息距离弹幕显示区域一侧的距离,此弹幕显示区域一侧指的是弹幕消息进入的那一侧,因此,此坐标位置能够表示出最新已显示弹幕消息的运动距离。
进而,确定运动距离大于或等于预设长度的最新已显示弹幕消息所在的行为可插入行。
客户端将获得的各行中最新已显示弹幕消息的运动距离与预设长度进行比较,将运动距离大于或等于预设长度的最新已显示弹幕消息所在的行确定为可插入行。举例来说,当最新已显示弹幕消息的运动距离大于或等于50像素时,则可以代表此最新已显示弹幕消息所在的行为可插入行。
s204,将待显示弹幕消息显示于可插入行。
客户端基于上述过程确定出的可插入行的数目可以是一个也可以是多个。
当可插入行数目为一个时,客户端可以直接将待显示弹幕消息显示于此可插入行中。
当可插入行数目为多个个时,客户端则需要进一步在多个卡插入行中进行选择。
作为一种可选地的选择方式,客户端可以随机选择一个可插入行,并将待显示弹幕消息显示于此可插入行中。
作为另一种可选地的选择方式,客户端还可以通过以下步骤进行选择。
首先,计算多个可插入行各自对应的最新已显示弹幕消息的第一运动速度,以及待显示弹幕消息的第二运动速度。
其次,从多个可插入行中选择出第一运动速度大于或等于第二运动速度的最新已显示弹幕消息所对应的可插入行。
最后,将待显示弹幕消息显示于选择出的可插入行中。
具体地,为了保证弹幕显示的公平性,客户端会为每条弹幕消息都预设有相同的显示时间,客户端可以根据弹幕显示区域的尺寸以及多个可插入行各自对应的最新已显示弹幕消息的消息长度计算出各行中最新已显示弹幕消息对应的各第一运动速度,同时还可以根据弹幕显示区域的尺寸以及待显示弹幕消息的长度计算出此待显示弹幕消息对应的第二运动速度。由于待显示弹幕消息是在最新已显示弹幕消息之后才进入弹幕显示区域的,因此很容易想到,当第一运动速度小于第二运动速度时,随着待显示弹幕消息的运动,此待显示弹幕消息会与最新已显示弹幕消息发生追击,从而造成两条弹幕消息重叠显示的状况。
此种情况下,为了减少弹幕消息的重叠显示,客户端可以在多个满足预设插入条件的可插入行中选择不会发生弹幕消息追击的可插入行,也即是从多个可插入行中选择第一运动速度大于或等于第二运动速度的最新已显示弹幕消息所对应的可插入行,最终将此待显示弹幕消息显示于选择出不会发生弹幕消息追击的可插入行中。
可选地,在实际应用中,当某一直播间的弹幕消息数量较多时,还有可能出现弹幕显示区域中不存在可插入行的情况。此时,无论待显示弹幕消息显示于哪一行中都会发生弹幕消息追击,这时客户端则可以随机选择弹幕显示区域中的任意一行并将待显示弹幕消息显示于该行中。
本实施例中,当弹幕显示区域中的各行中都存在正在显示的弹幕消息,客户端通过获取各行中最新已显示弹幕消息的运动距离从而确定出满足预设插入条件的可插入行,并将待显示弹幕消息显示于可插入行中,使弹幕消息能够均匀分布于弹幕显示区域中。同时,对于存在多个可插入行的情况下,通过比较待显示弹幕与各可插入行中的最新已显示弹幕消息的运动速度,将待显示弹幕消息显示于不会发送弹幕消息追击的可插入行中,以使观看用户和主播都可以清晰地看到各条弹幕消息。
图3为本发明实施例提供的弹幕显示装置实施例一的结构示意图,如图3所示,该弹幕显示装置包括:接收模块11、确定模块12、显示模块13。
接收模块11,用于接收待显示弹幕消息。
确定模块12,用于确定弹幕显示区域中是否存在用以显示待显示弹幕消息的空行,其中,弹幕显示区域被预先划分为多行。
显示模块13,用于若存在空行,则将待显示弹幕消息显示于空行中。
图3所示装置可以执行图1所示实施例的方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
图4为本发明实施例提供的弹幕显示装置实施例二的结构示意图,如图4所示,在图3所示实施例基础上,该弹幕显示装置还包括:获取模块21。
获取模块21,用于若不存在空行,则获取满足预设插入条件的可插入行。
显示模块13,还用于将待显示弹幕消息显示于可插入行。
可选地,该弹幕显示装置中的获取模块21具体包括:
获取单元211,用于获取弹幕显示区域中各行对应的最新已显示弹幕消息的运动距离,其中,最新已显示弹幕消息为每行中最后进入弹幕显示区域的已显示弹幕消息。
确定单元212,用于确定运动距离大于或等于预设长度的最新已显示弹幕消息所在的行为可插入行。
可选地,显示模块13还用于:若不存在可插入行,则将待显示弹幕消息显示于弹幕显示区域中的任意一行中。
可选地,显示模块13具体包括:
计算单元131,用于计算多个可插入行各自对应的最新已显示弹幕消息的第一运动速度,以及待显示弹幕消息的第二运动速度。
选择单元132,用于从多个可插入行中选择出第一运动速度大于或等于第二运动速度的最新已显示弹幕消息所对应的可插入行。
显示单元133,用于将待显示弹幕消息显示于选择出的可插入行中。
图4所示装置可以执行图2所示实施例的方法,本实施例未详细描述的部分,可参考对图2所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2所示实施例中的描述,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以产品的形式体现出来,该计算机产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。