弹幕下发方法、接收方法、装置、电子设备及存储介质与流程

文档序号:26544141发布日期:2021-09-07 22:56阅读:125来源:国知局
弹幕下发方法、接收方法、装置、电子设备及存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及一种弹幕下发方法、接收方法、装置、电子设备、存储介质及程序产品。


背景技术:

2.随着互联网视频技术的发展,视频播放器具有了弹幕功能。视频弹幕又称为影片跑马灯,是一些视频分享网站的特殊功能。利用弹幕功能,当视频文件播放到某个时间点时,观看者可以发表自己的评论,则会在此该时间点的视频画面上显示该评论,比如以滑动而过字幕的形式显示出来。相关技术中,客户端向服务端请求弹幕的拉取,服务端向客户端下发弹幕时会导致网络带宽的浪费。


技术实现要素:

3.本公开提供一种弹幕下发方法、接收方法、装置、电子设备、存储介质及程序产品,以至少解决相关技术中服务端向客户端下发弹幕时导致网络带宽浪费的问题。本公开的技术方案如下:
4.根据本公开实施例的第一方面,提供一种弹幕下发方法,包括:
5.接收客户端发送的第一下发请求,所述第一下发请求携带有所述客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,所述查询时间段基于对所述视频文件的播放时长进行划分得到;
6.根据所述视频标识以及所述查询时间段,在弹幕数据库中进行查找,得到与所述视频标识以及所述查询时间段对应的弹幕集合,所述弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系;
7.从所述弹幕集合中获取目标弹幕,并将所述目标弹幕返回至所述客户端,所述目标弹幕为需要返回至所述客户端的若干条弹幕。
8.在其中一个实施例中,所述从所述弹幕集合中获取目标弹幕,并将所述目标弹幕返回至所述客户端,包括:
9.当所述弹幕集合中的弹幕数量大于预设的弹幕返回上限时,从所述弹幕集合中,获取数量等于所述弹幕返回上限的目标弹幕,并将翻页字段赋值为第一结果值,所述第一结果值用于告知所述客户端在所述弹幕集合中还包含有待下发弹幕;
10.将所述目标弹幕和所述第一结果值返回至所述客户端,所述第一结果值还用于指示所述客户端发送第二下发请求。
11.在其中一个实施例中,所述待下发弹幕中的各弹幕具有标识;所述方法还包括:
12.当所述目标弹幕完成播放时的视频播放进度依旧属于所述查询时间段时,接收所述第二下发请求,所述第二下发请求携带有所述查询时间段、所述视频标识以及所述第一结果值,所述第一结果值用于表征已经返回至所述客户端的目标弹幕的标识;
13.依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所
述弹幕集合;
14.根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕;
15.根据各弹幕的标识依次从所述待下发弹幕中获取新的目标弹幕,并将所述新的目标弹幕返回至所述客户端。
16.在其中一个实施例中,所述从所述弹幕集合中获取目标弹幕,并将所述目标弹幕返回至所述客户端,包括:
17.当所述弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,从所述弹幕集合中获取所有弹幕作为所述目标弹幕,并将所述翻页字段赋值为第二结果值;
18.将所述弹幕集合和所述第二结果值返回至所述客户端,所述第二结果值用于告知所述客户端所述弹幕集合中所有弹幕均已经返回至所述客户端。
19.在其中一个实施例中,当所述弹幕集合完成播放时的视频播放进度依旧属于所述查询时间段时,所述第二结果值还用于指示所述客户端不发送第二下发请求。
20.在其中一个实施例中,所述方法还包括:
21.当所述目标弹幕完成播放时的视频播放进度不再属于所述查询时间段时,接收所述客户端发送的第三下发请求,所述第三下发请求携带新的查询时间段。
22.在其中一个实施例中,所述查询时间段包括查询时间起点时刻和查询时间终点时刻,所述查询时间终点时刻等于所述查询时间起点时刻与预设的查询时长阈值之和。
23.根据本公开实施例的第二方面,提供一种弹幕接收方法,包括:
24.发送第一下发请求至服务端,所述第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,所述查询时间段基于对所述视频文件的播放时长进行划分得到;
25.接收所述服务端返回的目标弹幕,所述目标弹幕为所述服务端从弹幕集合中获取的若干条弹幕,所述弹幕集合是所述服务端根据所述视频标识以及所述查询时间段,在弹幕数据库中进行查找得到的与所述视频标识以及所述查询时间段对应的弹幕所组成的集合,所述弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系。
26.在其中一个实施例中,所述接收所述服务端返回的目标弹幕,包括:
27.接收所述服务端返回的目标弹幕和第一结果值;当所述弹幕集合中的弹幕数量大于预设的弹幕返回上限时,所述目标弹幕为所述服务端从所述弹幕集合中获取数量等于所述弹幕返回上限的若干条弹幕,所述第一结果值为所述服务端对翻页字段的赋值,且所述第一结果值用于表征在所述弹幕集合中还包含有待下发弹幕;
28.根据所述第一结果值向所述服务端发送第二下发请求。
29.在其中一个实施例中,所述待下发弹幕中的各弹幕具有标识,所述第一结果值还用于表征已经返回至所述客户端的目标弹幕的标识;所述方法还包括:
30.当所述目标弹幕完成播放时的视频播放进度依旧属于所述查询时间段时,根据所述第一结果值向所述服务端发送所述第二下发请求,所述第二下发请求携带有所述查询时间段、所述视频标识以及所述第一结果值;
31.接收所述服务端返回的新的目标弹幕,所述新的目标弹幕是所述服务端依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所述弹幕集合,根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕,根据各弹幕的标识依次从
所述待下发弹幕中获取的预设弹幕数量的弹幕。在其中一个实施例中,所述接收所述服务端返回的目标弹幕,包括:
32.接收所述服务端返回的目标弹幕和第二结果值;当所述弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,所述目标弹幕为所述服务端从所述弹幕集合中获取的所有弹幕,所述第二结果值为所述服务端对翻页字段的赋值,且所述第二结果值用于表征在所述弹幕集合中的所有弹幕均已经返回至客户端。
33.在其中一个实施例中,所述方法还包括:
34.当所述弹幕集合完成播放时的视频播放进度依旧属于所述查询时间段时,根据所述第二结果值不向所述服务端发送第二下发请求。
35.在其中一个实施例中,所述方法还包括:
36.当所述目标弹幕完成播放时的视频播放进度不再属于所述查询时间段时,向所述服务端发送第三下发请求,所述第三下发请求携带新的查询时间段。
37.在其中一个实施例中,所述查询时间段包括查询时间起点时刻和查询时间终点时刻,所述查询时间终点时刻等于所述查询时间起点时刻与预设的查询时长阈值之和。
38.根据本公开实施例的第三方面,提供一种弹幕下发装置,包括:
39.第一接收模块,被配置为执行接收客户端发送的第一下发请求,所述第一下发请求携带有所述客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,所述查询时间段基于对所述视频文件的播放时长进行划分得到;
40.第一查找模块,被配置为执行根据所述视频标识以及所述查询时间段,在弹幕数据库中进行查找,得到与所述视频标识以及所述查询时间段对应的弹幕集合,所述弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系;
41.第一弹幕返回模块,被配置为执行从所述弹幕集合中获取目标弹幕,并将所述目标弹幕返回至所述客户端,所述目标弹幕为需要返回至所述客户端的若干条弹幕。
42.在其中一个实施例中,所述第一弹幕返回模块,还被配置为执行当所述弹幕集合中的弹幕数量大于预设的弹幕返回上限时,从所述弹幕集合中,获取数量等于所述弹幕返回上限的目标弹幕,并将翻页字段赋值为第一结果值,所述第一结果值用于告知所述客户端在所述弹幕集合中还包含有待下发弹幕;将所述目标弹幕和所述第一结果值返回至所述客户端,所述第一结果值还用于指示所述客户端发送第二下发请求。
43.在其中一个实施例中,所述待下发弹幕中的各弹幕具有标识;当所述目标弹幕完成播放时的视频播放进度依旧属于所述查询时间段时,所述装置还包括:
44.第二接收模块,被配置为执行接收所述第二下发请求,所述第二下发请求携带有所述查询时间段、所述视频标识以及所述第一结果值,所述第一结果值用于表征已经返回至所述客户端的目标弹幕的标识;
45.第二查找模块,被配置为执行依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所述弹幕集合;
46.弹幕集合筛选模块,被配置为执行根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕;
47.第二弹幕返回模块,被配置为执行根据各弹幕的标识依次从所述待下发弹幕中获取新的目标弹幕,并将所述新的目标弹幕返回至所述客户端。
48.在其中一个实施例中,所述第一弹幕返回模块,还被配置为执行当所述弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,从所述弹幕集合中获取所有弹幕作为所述目标弹幕,并将所述翻页字段赋值为第二结果值;将所述弹幕集合和所述第二结果值返回至所述客户端,所述第二结果值用于告知所述客户端所述弹幕集合中所有弹幕均已经返回至所述客户端。
49.在其中一个实施例中,当所述弹幕集合完成播放时的视频播放进度依旧属于所述查询时间段时,所述第二结果值还用于指示所述客户端不发送第二下发请求。
50.在其中一个实施例中,所述装置还包括:
51.第三接收模块,被配置为执行当所述目标弹幕完成播放时的视频播放进度不再属于所述查询时间段时,接收所述客户端发送的第三下发请求,所述第三下发请求携带新的查询时间段。
52.在其中一个实施例中,所述查询时间段包括查询时间起点时刻和查询时间终点时刻,所述查询时间终点时刻等于所述查询时间起点时刻与预设的查询时长阈值之和。
53.根据本公开实施例的第四方面,提供一种弹幕接收装置,包括:
54.第一发送模块,被配置为执行发送第一下发请求至服务端,所述第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,所述查询时间段基于对所述视频文件的播放时长进行划分得到;
55.第一接收模块,被配置为执行接收所述服务端返回的目标弹幕,所述目标弹幕为所述服务端从弹幕集合中获取的若干条弹幕,所述弹幕集合是所述服务端根据所述视频标识以及所述查询时间段,在弹幕数据库中进行查找得到的与所述视频标识以及所述查询时间段对应的弹幕所组成的集合,所述弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系。
56.在其中一个实施例中,所述第一接收模块,还被配置为执行接收所述服务端返回的目标弹幕和第一结果值;当所述弹幕集合中的弹幕数量大于预设的弹幕返回上限时,所述目标弹幕为所述服务端从所述弹幕集合中获取数量等于所述弹幕返回上限的若干条弹幕,所述第一结果值为所述服务端对翻页字段的赋值,且所述第一结果值用于表征在所述弹幕集合中还包含有待下发弹幕,第一结果值还用于指示所述客户端发送第二下发请求。
57.在其中一个实施例中,所述待下发弹幕中的各弹幕具有标识,所述第一结果值还用于表征已经返回至所述客户端的目标弹幕的标识;所述弹幕接收装置还包括:
58.第二发送模块,被配置为执行当所述目标弹幕完成播放时的视频播放进度依旧属于所述查询时间段时,向所述服务端发送所述第二下发请求,所述第二下发请求携带有所述查询时间段、所述视频标识以及所述第一结果值;
59.第二接收模块,被配置为执行接收所述服务端返回的新的目标弹幕,所述新的目标弹幕是所述服务端依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所述弹幕集合,根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕,根据各弹幕的标识依次从所述待下发弹幕中获取的预设弹幕数量的弹幕。
60.在其中一个实施例中,所述第一接收模块,还被配置为执行接收所述服务端返回的目标弹幕和第二结果值;当所述弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,所述目标弹幕为所述服务端从所述弹幕集合中获取的所有弹幕,所述第二结果值为所述服
务端对翻页字段的赋值,且所述第二结果值用于表征在所述弹幕集合中的所有弹幕均已经返回至客户端。
61.在其中一个实施例中,所述弹幕接收装置还包括第三发送模块,被配置为执行当所述弹幕集合完成播放时的视频播放进度依旧属于所述查询时间段时,根据所述第二结果值不向所述服务端发送第二下发请求。
62.在其中一个实施例中,所述弹幕接收装置还包括第四发送模块,被配置为执行当所述目标弹幕完成播放时的视频播放进度不再属于所述查询时间段时,向所述服务端发送第三下发请求,所述第三下发请求携带新的查询时间段。
63.在其中一个实施例中,所述查询时间段包括查询时间起点时刻和查询时间终点时刻,所述查询时间终点时刻等于所述查询时间起点时刻与预设的查询时长阈值之和。
64.根据本公开实施例的第五方面,提供一种电子设备,包括:
65.处理器;
66.用于存储所述处理器可执行指令的存储器;
67.其中,所述处理器被配置为执行所述指令,以实现如上述的弹幕下发方法或者上述的弹幕接收方法。
68.根据本公开实施例的第六方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述的弹幕下发方法或者上述的弹幕接收方法。
69.根据本公开实施例的第七方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的弹幕下发方法或者上述的弹幕接收方法。
70.本公开的实施例提供的技术方案至少带来以下有益效果:
71.通过接收携带有视频标识和查询时间段的第一下发请求,查询时间段基于对视频文件的播放时长进行划分得到;并根据视频标识以及查询时间段在弹幕数据库中进行查找,得到对应的弹幕集合;从而从弹幕集合中获取目标弹幕,并将目标弹幕返回至客户端,不仅减少每次下发弹幕的数量,而且减少待播放弹幕对客户端内存的占用,还减少对服务端网络带宽的占用,并提升弹幕播放的实时性。
72.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
73.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
74.图1是根据一示例性实施例示出的一种弹幕下发方法的应用环境图。
75.图2是根据一示例性实施例示出的一种弹幕下发方法的流程图。
76.图3是根据一示例性实施例示出的步骤s230的流程图。
77.图4是根据一示例性实施例示出的一种弹幕下发方法的流程图。
78.图5是根据一示例性实施例示出的一种弹幕下发方法的流程图。
79.图6是根据一示例性实施例示出的一种弹幕下发方法的流程图。
80.图7是根据一示例性实施例示出的一种弹幕接收方法的流程图。
81.图8是根据一示例性实施例示出的一种弹幕接收方法的流程图。
82.图9是根据一示例性实施例示出的一种弹幕接收方法的时序图。
83.图10是根据一示例性实施例示出的一种弹幕下发装置的框图。
84.图11是根据一示例性实施例示出的一种弹幕接收装置的框图。
85.图12是根据一示例性实施例示出的一种电子设备的框图。
86.图13是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
87.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
88.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
89.在相关技术中,服务端采用全时段的方式下发弹幕。在客户端请求弹幕时,根据当前弹幕的排序结果,下发前n条弹幕,客户端展示完第n条弹幕,客户端请求下一批弹幕。举例来说,用户从头开始观看一个5分钟时长的视频,此时根据弹幕排序结果下发前n条弹幕。经分析发现:客户端展示完前n条弹幕,若第n条弹幕对应的播放进度为5分钟,此时客户端再次向服务端请求弹幕,而客户端却即将完成视频播放,那么,若在前5分钟内有其他用户发布的弹幕,该客户端是无法进行展示这些弹幕的,即该客户端的用户无法查看前5分钟内有其他用户发布的弹幕。进一步地,因为采用全时段的方式下发弹幕,每次下发的n条弹幕可以包括一些播放进度非常靠后的弹幕,用户若在播放过程中由于某种原因中断播放,下发至客户端内存中的一些弹幕没有得到播放,造成客户端侧不必要的性能开销。举例来说,某个视频的播放时长为10分钟,前5分钟内没有弹幕,后5分钟有200条弹幕,假设每次请求的弹幕数量限制为200条,开始播放时客户端请求弹幕,客户端接收到200条弹幕。当视频播放至第3分钟,用户中断播放,此时仅仅播放200条弹幕中的部分弹幕,其余的弹幕并没有播放,但是通过网络下发至客户端的内存中,从而浪费了客户端的内存以及服务端的网络带宽等资源。
90.基于此,本公开所提供的弹幕下发方法,可以应用于如图1所示的应用环境中。其中,客户端110通过网络与服务端120进行交互。服务端120可以是具有较强的数据存储和计算能力的电子设备,例如服务端120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。客户端110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。其中,客户端110安装和运行有具有视频播放功能的应用,比如浏览器、社交应用、直播应用、购物应用或者支付应用中至少一种。视频文件设有视频标识,视频文件具有播放时长,比如1分钟、3分钟或者5分钟甚至更长。对视频文件的播放时长进行时长划分,得到若干个查询时间段。各查询时间段包括查询时间起点时刻和查询时间终点时刻。查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和。比如一个2分钟
的视频文件,对该2分钟的视频文件进行划分,查询时长阈值可以是30秒,则得到的时间段可以包括:0至30秒、31秒到60秒、61秒到90秒、91秒到120秒。需要说明的是,预设的查询时长阈值可以是结合实际情况而限制的查询时长,比如取30秒至60秒之间,可以是30秒,也可以是45秒,还可以是60秒。服务端120上部署有弹幕数据库,弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系。
91.客户端110播放视频文件时,向服务端120发送弹幕的第一下发请求,第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段。服务端120接收到第一下发请求,服务端120根据视频标识以及查询时间段在弹幕数据库中进行查找,得到与视频标识以及查询时间段对应的弹幕集合,并从弹幕集合中获取目标弹幕,目标弹幕为需要返回至客户端的若干条弹幕。服务端120将目标弹幕返回至客户端110,客户端110播放目标弹幕。
92.图2是根据一示例性实施例示出的一种弹幕下发方法的流程图,如图2所示,弹幕下发方法用于图1中的服务端120中,包括以下步骤:
93.在步骤s210中,接收客户端发送的第一下发请求。
94.其中,第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,查询时间段基于对视频文件的播放时长进行划分得到。视频文件可以具有弹幕,弹幕可以分布在视频文件的任意播放进度处。客户端播放视频文件的当前播放进度可以理解为一个播放时间点,该播放时间点属于视频文件的若干个查询时间段中一个。比如一个1分钟的视频文件,对该1分钟的视频文件进行划分,查询时长阈值可以是20秒,则得到若干个查询时间段,包括:0至20秒、21秒到40秒、41秒到60秒。如果视频文件播放到45秒,则当前播放进度为45秒,且当前播放进度属于查询时间段41秒到60秒。具体地,客户端播放视频文件,若视频文件具有弹幕,客户端发送弹幕的第一下发请求至服务端,为了从服务端获取用户在当前播放进度发表的弹幕,第一下发请求不仅需要携带有正在播放的视频文件的视频标识,还需要携带有当前播放进度所属的查询时间段。
95.在步骤s220中,根据视频标识以及查询时间段,在弹幕数据库中进行查找,得到与视频标识以及查询时间段对应的弹幕集合。
96.其中,弹幕数据库可以部署在服务端,弹幕数据库的表结构可以包括视频标识、弹幕位置、弹幕标识、弹幕内容等。弹幕位置可以理解为弹幕在视频播放进度上的位置,也就是在视频播放到该视频播放进度时用户所发表的弹幕,弹幕数据库存储有用户发表的弹幕内容以及该弹幕对应的视频播放进度(即弹幕位置)。弹幕内容可以理解为弹幕对应的文字、图片、表情包等信息,比如“泰森和道格拉斯有二番战吗”、“拉得克也的确是一条硬汉,这场比赛当时看的现场直播”等文字内容。具体地,服务端根据视频标识以及查询时间段在弹幕数据库中进行查找,在视频标识对应的弹幕中,确定查询时间段内的弹幕集合。比如,若当前播放进度属于查询时间段41秒到60秒,则查找得到的弹幕集合可以是查询时间段41秒到60秒内的弹幕集合,可以理解为任一用户观看视频文件41秒到60秒的视频内容时所发表弹幕构成的集合。
97.在步骤s230中,从弹幕集合中获取目标弹幕,并将目标弹幕返回至客户端。
98.其中,目标弹幕为需要返回至客户端的若干条弹幕,客户端用于播放目标弹幕。具体地,从弹幕数据库中已经查找到与当前播放进度所属的查询时间段对应的弹幕集合,为
了保证弹幕显示的实时性(即实时看到其它用户发布的弹幕),可以从弹幕集合中获取部分弹幕或者全部弹幕作为目标弹幕,将目标弹幕下发至客户端,客户端播放目标弹幕,在客户端观看视频的当前用户可以看到该查询时间段的目标弹幕。示例性地,比如每个查询时间段的时长约定为30秒,视频播放到第15秒时,接收到服务端下发的0至30秒的弹幕,若在该时刻其他用户观看视频的30秒以后的视频内容,并在该播放进度处发布了弹幕,等到该当前用户观看到30秒以后的播放进度时(比如45秒,属于查询时间段31秒至60秒),服务端实时地下发该播放进度所属的查询时间段内的其他用户所发布的弹幕。
99.上述弹幕下发方法,通过接收携带有视频标识和查询时间段的第一下发请求,查询时间段基于对视频文件的播放时长进行划分得到;并根据视频标识以及查询时间段在弹幕数据库中进行查找,得到对应的弹幕集合;从而从弹幕集合中获取目标弹幕,并将目标弹幕返回至客户端,不仅减少每次下发弹幕的数量,而且减少待播放弹幕对客户端内存的占用,还减少对服务端网络带宽的占用,并提升弹幕播放的实时性。
100.在一示例性实施例中,如图3所示,在步骤s230中,从弹幕集合中获取目标弹幕,并将目标弹幕返回至客户端,具体可以通过以下步骤实现:
101.在步骤s310中,当弹幕集合中的弹幕数量大于预设的弹幕返回上限时,从弹幕集合中,获取数量等于弹幕返回上限的目标弹幕,并将翻页字段赋值为第一结果值。
102.其中,弹幕返回上限可以是服务端每次向客户端下发的弹幕的最大数量,可以结合客户端的性能参数、服务端的性能参数等实际情况设置弹幕返回上限。若弹幕返回上限为200,则服务端向客户端每次最多下发200条弹幕。具体地,从弹幕数据库中查找得到当前播放进度所属的查询时间段所对应的弹幕集合,弹幕集合的弹幕具有一定的数量,将弹幕集合中的弹幕数量与预设的弹幕返回上限进行比较。弹幕集合中的弹幕数量可以大于预设的弹幕返回上限,弹幕集合中的弹幕数量可以等于预设的弹幕返回上限,弹幕集合中的弹幕数量可以小于预设的弹幕返回上限。
103.若弹幕集合中的弹幕数量大于弹幕返回上限,说明弹幕集合中的弹幕并不能一次性全部的下发至客户端,因此需要设置翻页字段。利用翻页字段表征在弹幕集合中除返回至客户端的目标弹幕之外是否还有剩余弹幕(这些剩余弹幕作为待下发弹幕)。翻页字段可以理解为服务端提供给客户端接口所返回的一个字段。根据弹幕集合中的弹幕数量与预设的弹幕返回上限的比较结果对翻页字段进行赋值。若弹幕集合中的弹幕数量大于弹幕返回上限,则将翻页字段赋值为第一结果值。第一结果值用于表征在弹幕集合中除返回至客户端的目标弹幕之外还有待下发弹幕。
104.为了减少对客户端内存的占用,限制了服务端向客户端下发弹幕的数量,因此可以按照弹幕标识的顺序,从当前播放进度所属的查询时间段所对应的弹幕集合获取目标弹幕,目标弹幕的数量等于弹幕返回上限。
105.在步骤s320中,将目标弹幕和第一结果值返回至客户端。
106.其中,第一结果值还用于指示客户端发送第二下发请求。具体地,服务端在弹幕数据库中查找得到弹幕集合,并从弹幕集合中获取目标弹幕。若弹幕集合中的弹幕数量大于弹幕返回上限,则服务端将翻页字段赋值为第一结果值。服务端将目标弹幕和第一结果值返回至客户端,客户端接收并播放目标弹幕,在目标弹幕完成播放时,由于第一结果值告知客户端在弹幕集合中除返回至客户端的目标弹幕之外还有待下发弹幕,因此客户端可以向
服务端发送第二下发请求以拉取待下发弹幕。
107.本实施中,通过设置翻页字段,并根据弹幕集合中的弹幕数量与预设的弹幕返回上限的比较结果对翻页字段进行赋值,确保客户端可以再次向服务端拉取弹幕,实现弹幕的分页播放,尽可能多地播放弹幕,加强与用户之间的互动性。且通过设置弹幕返回上限,减少对客户端性能产生的影响。
108.在一示例性实施例中,待下发弹幕中的各弹幕具有标识。如图4所示,当目标弹幕完成播放时的视频播放进度依旧属于查询时间段时,该方法还包括:
109.在步骤s410中,接收第二下发请求。
110.在步骤s420中,依旧根据视频标识和查询时间段在弹幕数据库中进行查找,得到弹幕集合。
111.其中,第二下发请求携带有查询时间段、视频标识以及第一结果值,第一结果值用于表征已经返回至客户端的目标弹幕的标识。具体地,若弹幕集合中的弹幕数量大于弹幕返回上限,则将翻页字段赋值为第一结果值。服务端将目标弹幕和第一结果值返回至客户端后,客户端接收并播放目标弹幕。在目标弹幕完成播放时,由于第一结果值告知客户端在弹幕集合中除返回至客户端的目标弹幕之外还有待下发弹幕,因此客户端可以向服务端发送第二下发请求,服务端接收第二下发请求。第二下发请求携带有第一结果值、查询时间段和视频标识。服务端依旧根据视频标识和查询时间段在弹幕数据库中进行查找,得到与视频标识以及查询时间段对应的弹幕集合。
112.在步骤s430中,根据第一结果值从弹幕集合中筛选,得到待下发弹幕。
113.其中,剩余弹幕为在弹幕集合中除返回至客户端的目标弹幕之外的其他弹幕。具体地,第一结果值可以告知服务端返回至客户端的目标弹幕是哪些弹幕,因此,根据第一结果值从弹幕集合中筛选,将已经返回至客户端的目标弹幕进行过滤,得到由剩余弹幕重新组成的弹幕集合。
114.在步骤s440中,根据各弹幕的标识依次从待下发弹幕中获取新的目标弹幕,并将新的目标弹幕返回至客户端。
115.其中,待下发弹幕中的弹幕数量可以大于弹幕返回上限,可以小于弹幕返回上限。具体地,弹幕数据库中的弹幕可以是按照预设顺序(比如弹幕发送时间)进行存储的,同样的,待下发弹幕中的弹幕可以是按照预设顺序进行存储的。待下发弹幕中的各弹幕具有标识,根据各弹幕的标识从待下发弹幕中获取新的目标弹幕。若待下发弹幕的弹幕数量大于弹幕返回上限,服务端从待下发弹幕中获取数量等于弹幕返回上限弹幕,作为新的目标弹幕。若待下发弹幕的弹幕数量小于弹幕返回上限,服务端将待下发弹幕作为新的目标弹幕。服务端将新的目标弹幕返回至客户端,客户端接收新的目标弹幕,进一步地,客户端还可以播放新的目标弹幕。
116.本实施例中,若弹幕集合中的弹幕数量大于弹幕返回上限,在将目标弹幕返回至客户端之后,又根据第一结果值从弹幕集合中筛选,得到待下发弹幕;根据各弹幕的标识依次从待下发弹幕中获取新的目标弹幕,并将新的目标弹幕返回至客户端。可见,本实施例实现将查找到的弹幕集合多次分页下发至客户端,在减少客户端性能开销的前提下,还确保客户端可以播放更多的弹幕,加强与用户之间的互动性。
117.在一示例性实施例中,如图5所示,从弹幕集合中获取目标弹幕,并将目标弹幕返
回至客户端,包括以下步骤:
118.在步骤s510中,当弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,从弹幕集合中获取所有弹幕作为目标弹幕,并将翻页字段赋值为第二结果值。
119.在步骤s520中,将弹幕集合和第二结果值返回至客户端。
120.其中,第二结果值用于告知客户端弹幕集合中所有弹幕均已经返回至客户端。具体地,服务端比较弹幕集合中的弹幕数量与预设的弹幕返回上限,若弹幕集合中的弹幕数量不大于弹幕返回上限,说明可以将弹幕集合中各弹幕下发至客户端,从弹幕集合中获取所有弹幕作为目标弹幕。又,设置翻页字段的值,表征在弹幕集合中除返回至客户端的目标弹幕之外没有其他弹幕,即将翻页字段赋值为第二结果值,以通过第二结果值告知客户端弹幕集合中所有弹幕均已经返回至客户端。
121.本实施例中,若弹幕集合中的弹幕数量不大于弹幕返回上限,将翻页字段赋值为第二结果值,并将弹幕集合和第二结果值返回至客户端。通过第二结果值告知客户端不再向服务端发送第二下发请求,避免在服务端已经将查询时间段内的所有弹幕均下发的情况下客户端依旧向服务端发送下发请求,从而进一步地减少对服务器的带宽资源的占用。
122.在一示例性实施例中,若弹幕集合完成播放时的视频播放进度依旧属于查询时间段,第二结果值还用于指示客户端不发送第二下发请求。
123.具体地,服务端将弹幕集合和第二结果值返回至客户端,客户端接收到弹幕集合并播放弹幕集合。在完成播放弹幕集合时,判断客户端的视频播放进度是否属于查询时间段,若属于,由于第二结果值表明该查询时间内已经没有其他弹幕,则在弹幕集合完成播放时根据第二结果值客户端不再向服务端发送第二下发请求。示例性地,第二结果值可以是预设数值,比如可以为0。若客户端检测到翻页字段的赋值为0,则在弹幕集合完成播放时,客户端不再向服务端发送第二下发请求。
124.本实施例中,若弹幕集合完成播放时的视频播放进度依旧属于查询时间段,通过第二结果值指示客户端不发送第二下发请求,不仅减少对服务器的带宽资源的占用,而且进一步地减少客户端的性能开销,确保客户端运行的流畅性。
125.在一示例性实施例中,该方法还包括:当目标弹幕完成播放时的视频播放进度不再属于查询时间段时,接收客户端发送的第三下发请求,第三下发请求携带新的查询时间段。
126.其中,客户端接收到目标弹幕并进行播放,在目标弹幕完成播放时,判断目标弹幕完成播放时的视频播放进度是否属于上次查询所使用的查询时间段,若不属于,表明该视频播放进度属于新的查询时间段,则客户端可以从服务器拉取与新的查询时间段对应的弹幕。具体地,若目标弹幕完成播放时的视频播放进度不再属于查询时间段,则客户端向服务端发送第三下发请求,服务端接收到第三下发请求,第三下发请求携带有视频播放进度所属的新的查询时间段和视频标识。服务端可以根据新的查询时间段和视频标识在弹幕数据库中进行查找,得到新的弹幕集合。新的弹幕集合的弹幕位置位于新的查询时间段内。可以从新的弹幕集合中获取位于新的查询时间段内的目标弹幕,客户端接收并播放位于新的查询时间段内的目标弹幕。
127.本实施例中,若目标弹幕完成播放时的视频播放进度不再属于查询时间段,则接收客户端发送的第三下发请求,确保待用户观看到后续播放进度时,实时地拉取到其他用
户发布的弹幕,提升弹幕播放状态与视频播放进度的贴合性以及弹幕的实时性。
128.在一示例性实施例中,当目标弹幕完成播放时的视频播放进度不再属于查询时间段时,若与查询时间段对应的弹幕集合中依旧存在未播放弹幕,不下发未播放弹幕至客户端,这样,可以确保播放的弹幕与视频播放进度的对应,提升用户体验。
129.在一示例性实施例中,查询时间段包括查询时间起点时刻和查询时间终点时刻,查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和。
130.其中,视频文件具有播放时长,对视频文件的播放时长进行划分得到若干个查询时间段,查询时间段与视频文件的播放进度对应。如前文,查询时长阈值可以根据实际情况而设定。具体地,查询时间段包括查询时间起点时刻和查询时间终点时刻,查询时间起点时刻(positionfrominclude)可以与视频文件中第一时间点上的播放进度对应,作为查询时间段的起点。查询时间终点时刻(positiontoinclude)可以与视频文件中第二时间点上的播放进度对应,作为查询时间段的终点,第一时间点早于第二时间点。查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和。
131.本实施例中,通过对视频文件的播放时长进行划分得到若干个查询时间段,且查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和,建立查询时间段与视频播放进度的对应关系,实现从服务端拉取弹幕的准确控制,确保弹幕播放的实时性。进一步地,相对于相关技术中的全时段方式,本实施例中查询时间段内的弹幕数量较少,可以减少弹幕对客户端内存的占用。
132.图6是根据一示例性实施例示出的一种弹幕下发方法的流程图,如图6所示,弹幕下发方法用于图1中的服务端120中,该方法包括以下步骤:
133.在步骤s602中,接收客户端发送的第一下发请求。
134.其中,第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段。查询时间段基于对视频文件的播放时长进行划分得到。查询时间段包括查询时间起点时刻和查询时间终点时刻,查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和。
135.在步骤s604中,根据视频标识以及查询时间段,在弹幕数据库中进行查找,得到与视频标识以及查询时间段对应的弹幕集合。
136.在步骤s606中,比较弹幕集合中的弹幕数量与预设的弹幕返回上限。
137.在步骤s608中,若弹幕集合中的弹幕数量大于弹幕返回上限,则将翻页字段赋值为第一结果值。
138.其中,第一结果值用于告知客户端在弹幕集合中还包含有待下发弹幕。
139.在步骤s610中,从弹幕集合中,获取数量等于弹幕返回上限的目标弹幕。
140.在步骤s612中,将目标弹幕和第一结果值返回至客户端。
141.其中,客户端用于在完成播放目标弹幕时发送第二下发请求,且第二下发请求携带有第一结果值。
142.在步骤s614中,当目标弹幕完成播放时的视频播放进度依旧属于查询时间段时接收客户端发送的第二下发请求。
143.其中,第二下发请求携带有查询时间段、视频标识以及第一结果值,第一结果值用于表征已经返回至客户端的目标弹幕的标识。
144.在步骤s616中,依旧根据视频标识和查询时间段在弹幕数据库中进行查找,得到弹幕集合。
145.在步骤s618中,根据第一结果值从弹幕集合中筛选,得到待下发弹幕。
146.在步骤s620中,根据各弹幕的标识依次从待下发弹幕中获取新的目标弹幕,并将新的目标弹幕返回至客户端。
147.其中,客户端还用于播放新的目标弹幕。
148.在步骤s622中,当弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,从弹幕集合中获取所有弹幕作为目标弹幕,并将翻页字段赋值为第二结果值。
149.其中,第二结果值用于告知客户端弹幕集合中所有弹幕均已经返回至客户端。
150.在步骤s624中,将弹幕集合和第二结果值返回至客户端。
151.其中,若目标弹幕完成播放时的视频播放进度依旧属于查询时间段,在弹幕集合完成播放时根据第二结果值客户端不再发送第二下发请求。
152.在步骤s626中,当目标弹幕完成播放时的视频播放进度不再属于查询时间段时,接收客户端发送的第三下发请求。
153.其中,客户端完成播放目标弹幕时的视频播放进度属于新的查询时间段,第三下发请求携带新的查询时间段和视频标识。
154.本实施例中,通过对视频文件的播放时长进行划分得到若干个查询时间段,并从弹幕集合中获取与视频标识以及查询时间段对应的目标弹幕,将目标弹幕返回至客户端,在服务端实现对弹幕集合中各弹幕的分页下发,减少每次下发弹幕的数量,减少对服务端网络带宽的占用,在客户端实现弹幕的分页播放,尽可能多地播放弹幕,减少待播放弹幕对客户端内存的占用,提升弹幕播放的实时性。
155.图7是根据一示例性实施例示出的一种弹幕接收方法的流程图,如图7所示,弹幕接收方法用于图1中的客户端110中,包括以下步骤:
156.在步骤s710中,发送第一下发请求至服务端。
157.在步骤s720中,接收服务端返回的目标弹幕。
158.其中,第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,查询时间段基于对视频文件的播放时长进行划分得到,目标弹幕为服务端从弹幕集合中获取的若干条弹幕,弹幕集合是服务端根据视频标识以及查询时间段,在弹幕数据库中进行查找得到的与视频标识以及查询时间段对应的弹幕所组成的集合,弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系。
159.具体地,客户端播放视频文件,若视频文件具有弹幕,客户端发送弹幕的第一下发请求至服务端。服务端根据视频标识以及查询时间段在弹幕数据库中进行查找,在视频标识对应的弹幕中,确定查询时间段内的弹幕集合。为了保证弹幕显示的实时性(即实时看到其它用户发布的弹幕),服务端从弹幕集合中获取部分弹幕或者全部弹幕作为目标弹幕。服务端将查询结果返回至客户端,客户端接收查询结果,查询结果包括该查询时间段的目标弹幕。进一步地,客户端可以播放该目标弹幕,则在客户端侧观看视频的当前用户可以实时地看到该查询时间段的目标弹幕。
160.上述弹幕接收方法中,通过发送第一下发请求至服务端,并接收服务端返回的目标弹幕,从而客户端可以播放目标弹幕。不仅可以减少待播放弹幕对客户端内存的占用,而
且节约了服务端下发弹幕时所占用的带宽资源,还提升弹幕播放的实时性。
161.在一示例性实施例中,接收服务端返回的目标弹幕,包括:接收服务端返回的目标弹幕和第一结果值。
162.其中,当弹幕集合中的弹幕数量大于预设的弹幕返回上限时,目标弹幕为服务端从弹幕集合中获取数量等于弹幕返回上限的若干条弹幕,第一结果值为服务端对翻页字段的赋值,且第一结果值用于表征在弹幕集合中还包含有待下发弹幕,第一结果值还用于指示客户端发送第二下发请求。
163.具体地,弹幕集合的弹幕具有一定的数量,将弹幕集合中的弹幕数量与预设的弹幕返回上限进行比较。弹幕集合中的弹幕数量可以大于预设的弹幕返回上限,弹幕集合中的弹幕数量可以等于预设的弹幕返回上限,弹幕集合中的弹幕数量可以小于预设的弹幕返回上限。若弹幕集合中的弹幕数量大于弹幕返回上限,说明弹幕集合中的弹幕并不能一次性全部的下发至客户端,需要多次下发弹幕集合中的弹幕,因此需要设置一个翻页字段。利用翻页字段表征在弹幕集合中除返回至客户端的目标弹幕之外是否还有其他弹幕。需要说明的是,翻页字段可以理解为服务端提供给客户端接口返回的一个字段。若弹幕集合中的弹幕数量大于弹幕返回上限,则服务端将翻页字段赋值为第一结果值。
164.服务端将目标弹幕和第一结果值返回至客户端,客户端可以接收并播放目标弹幕,由于第一结果值告知客户端在弹幕集合中除返回至客户端的目标弹幕之外还有其他的待下发弹幕,因此客户端根据第一结果值可以向服务端发送第二下发请求以拉取待下发弹幕。
165.本实施中,通过设置翻页字段,并根据弹幕集合中的弹幕数量与预设的弹幕返回上限的比较结果对翻页字段进行赋值,通过翻页字段的值指示客户端是否向服务端再次发送请求以拉取弹幕,实现弹幕集合中弹幕的翻页播放,尽可能多地播放弹幕,加强与用户之间的互动性。且通过设置弹幕返回上限,减少弹幕对客户端性能产生的影响。
166.在一示例性实施例中,待下发弹幕中的各弹幕具有标识,第一结果值还用于表征已经返回至客户端的目标弹幕的标识。该方法还包括:当目标弹幕完成播放时的视频播放进度依旧属于查询时间段时,向服务端发送第二下发请求,接收服务端返回的新的目标弹幕。
167.其中,第二下发请求携带有查询时间段、视频标识以及第一结果值,新的目标弹幕是服务端依旧根据视频标识和查询时间段在弹幕数据库中进行查找,得到弹幕集合,根据第一结果值从弹幕集合中筛选,得到待下发弹幕,根据各弹幕的标识依次从待下发弹幕中获取的预设弹幕数量的弹幕。
168.具体地,若弹幕集合中的弹幕数量大于弹幕返回上限,则将翻页字段赋值为第一结果值。服务端将目标弹幕和第一结果值返回至客户端,客户端接收并播放目标弹幕。客户端可以在目标弹幕完成播放时,判断在目标弹幕完成播放时的视频播放进度是否属于查询时间段,若客户端完成播放目标弹幕时的视频播放进度依旧属于查询时间段,客户端向服务端发送第二下发请求。第二下发请求携带有第一结果值、查询时间段和视频标识。因此,服务端依旧根据视频标识和查询时间段在弹幕数据库中进行查找,在视频标识对应的弹幕中,确定查询时间段内的弹幕集合。又,第一结果值用于表征已经返回至客户端的目标弹幕的标识,即第一结果值可以告知服务端返回至客户端的目标弹幕是哪些弹幕,因此,服务端
根据第一结果值从弹幕集合中筛选,将已经返回至客户端的目标弹幕进行过滤,得到由其他弹幕重新组成的待下发弹幕。待下发弹幕可以理解为在弹幕集合中除返回至客户端的目标弹幕之外的其他弹幕。
169.需要说明的是,若待下发弹幕的弹幕数量大于弹幕返回上限,服务端从待下发弹幕中获取数量等于弹幕返回上限的目标弹幕。若待下发弹幕的弹幕数量小于弹幕返回上限,服务端将待下发弹幕作为新的目标弹幕。接着,服务端将新的目标弹幕返回至客户端,客户端接收并播放新的目标弹幕。
170.在一示例性实施例中,接收服务端返回的目标弹幕,包括:接收服务端返回的目标弹幕和第二结果值。
171.其中,当弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,目标弹幕为服务端从弹幕集合中获取的所有弹幕,第二结果值为服务端对翻页字段的赋值,且第二结果值用于表征在弹幕集合中的所有弹幕均已经返回至客户端。
172.具体地,服务端比较弹幕集合中的弹幕数量与预设的弹幕返回上限,若弹幕集合中的弹幕数量不大于弹幕返回上限,说明可以将弹幕集合中各弹幕下发至客户端,从弹幕集合中获取所有弹幕作为目标弹幕。又,设置翻页字段的值,表征在弹幕集合中除返回至客户端的目标弹幕之外没有其他弹幕,即将翻页字段赋值为第二结果值,以通过第二结果值告知客户端弹幕集合中所有弹幕均已经返回至客户端。因此,服务端向客户端返回目标弹幕和第二结果值,客户端接收到目标弹幕和第二结果值。
173.本实施例中,若弹幕集合中的弹幕数量不大于弹幕返回上限,服务端将翻页字段赋值为第二结果值,并将第二结果值返回至客户端。通过第二结果值告知客户端不再向服务端发送第二下发请求,避免在服务端已经将查询时间段内的所有弹幕均下发的情况下客户端依旧向服务端发送下发请求,从而进一步地减少对服务器的带宽资源的占用。
174.在一示例性实施例中,当弹幕集合完成播放时的视频播放进度依旧属于查询时间段时,根据第二结果值不向服务端发送第二下发请求。
175.其中,第二结果值用于表征在弹幕集合中除返回至客户端的目标弹幕之外没有待下发弹幕,弹幕集合即为目标弹幕。具体地,若弹幕集合中的弹幕数量不大于弹幕返回上限,说明可以将弹幕集合中各弹幕均已经下发至客户端。又,设有翻页字段为第二结果值。服务端将弹幕集合作为目标弹幕,服务端将弹幕集合和第二结果值返回至客户端,客户端接收到弹幕集合和第二结果值。客户端判断弹幕集合完成播放时的视频播放进度是否属于查询时间段,若属于,由于第二结果值表明该查询时间内已经没有待下发弹幕,则在完成播放弹幕集合时根据第二结果值客户端不再向服务端发送第二下发请求。
176.本实施例中,若弹幕集合中的弹幕数量不大于弹幕返回上限,客户端接收到服务端返回的弹幕集合,当弹幕集合完成播放时的视频播放进度依旧属于查询时间段时,客户端不再向服务端发送第二下发请求,进一步地减少对服务器的带宽资源的占用,并减少客户端的性能开销,确保客户端运行的流畅性。
177.在一示例性实施例中,该方法还包括:当目标弹幕完成播放时的视频播放进度不再属于查询时间段时,向服务端发送第三下发请求,第三下发请求携带新的查询时间段。
178.具体地,客户端接收到目标弹幕并进行播放,在目标弹幕完成播放时,判断目标弹幕完成播放时的视频播放进度是否属于上次查询所使用的查询时间段,若不属于,表明该
视频播放进度属于新的查询时间段,则客户端可以向服务器拉取与新的查询时间段对应的弹幕。客户端向服务端发送第三下发请求,服务端接收到第三下发请求,第三下发请求携带有视频播放进度所属的新的查询时间段和视频标识。服务端可以根据新的查询时间段和视频标识在弹幕数据库中进行查找,得到新的弹幕集合。新的弹幕集合的弹幕位置位于新的查询时间段内。
179.本实施例中,若目标弹幕完成播放时的视频播放进度不再属于查询时间段,则向服务端发送的第三下发请求,确保待用户观看到后续的播放进度时,实时得拉取到其他用户所发布的弹幕。
180.在一示例性实施例中,查询时间段包括查询时间起点时刻和查询时间终点时刻,查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和。
181.其中,视频文件具有播放时长,对视频文件的播放时长进行划分得到若干个查询时间段,查询时间段与视频文件的播放进度对应。如前文,查询时长阈值可以根据实际情况而设定。具体地,查询时间段包括查询时间起点时刻和查询时间终点时刻,查询时间起点时刻(positionfrominclude)可以与视频文件中第一时间点上的播放进度对应,作为查询时间段的起点。查询时间终点时刻(positiontoinclude)可以与视频文件中第二时间点上的播放进度对应,作为查询时间段的终点,第一时间点早于第二时间点。查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和。
182.本实施例中,通过对视频文件的播放时长进行划分得到若干个查询时间段,且查询时间终点时刻等于查询时间起点时刻与预设的查询时长阈值之和,建立查询时间段与视频播放进度的对应关系,实现从服务端拉取弹幕的准确控制,确保弹幕播放的实时性。进一步地,相对于相关技术中的全时段方式,本实施例中查询时间段内的弹幕数量较少,可以减少弹幕对客户端内存的占用。
183.图8是根据一示例性实施例示出的一种弹幕接收方法的流程图,如图8所示,弹幕接收方法用于图1中的客户端110中,包括以下步骤:
184.在步骤s802中,发送第一下发请求至服务端。
185.其中,第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,查询时间段基于对视频文件的播放时长进行划分得到,弹幕集合是服务端根据视频标识以及查询时间段,在弹幕数据库中进行查找得到的与视频标识以及查询时间段对应的弹幕所组成的集合,弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系。
186.在步骤s804中,接收服务端返回的目标弹幕和第一结果值。
187.其中,当弹幕集合中的弹幕数量大于预设的弹幕返回上限时,目标弹幕为服务端从弹幕集合中获取数量等于弹幕返回上限的若干条弹幕。第一结果值为服务端对翻页字段的赋值,且第一结果值用于表征在弹幕集合中还包含有待下发弹幕;待下发弹幕中的各弹幕具有标识,第一结果值还用于表征已经返回至客户端的目标弹幕的标识。
188.在步骤s806中,当目标弹幕完成播放时的视频播放进度依旧属于查询时间段时,根据第一结果值向服务端发送第二下发请求。
189.其中,第二下发请求携带有查询时间段、视频标识以及第一结果值。
190.在步骤s808中,接收服务端返回的新的目标弹幕。
191.其中,所述新的目标弹幕是所述服务端依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所述弹幕集合,根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕,根据各弹幕的标识依次从所述待下发弹幕中获取的预设弹幕数量的弹幕。
192.在步骤s810中,接收服务端返回的目标弹幕和第二结果值。
193.其中,当弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,目标弹幕为服务端从弹幕集合中获取的所有弹幕,第二结果值为服务端对翻页字段的赋值,且第二结果值用于表征在弹幕集合中的所有弹幕均已经返回至客户端。
194.在步骤s812中,当弹幕集合完成播放时的视频播放进度依旧属于查询时间段时,根据第二结果值不向服务端发送第二下发请求。
195.在步骤s814中,当目标弹幕完成播放时的视频播放进度不再属于查询时间段时,向服务端发送第三下发请求,第三下发请求携带新的查询时间段。
196.本实施例中,通过对视频文件的播放时长进行划分得到若干个查询时间段,并从弹幕集合中获取与视频标识以及查询时间段对应的目标弹幕,将目标弹幕返回至客户端,在服务端实现对弹幕集合中各弹幕的分页下发,减少每次下发弹幕的数量,减少对服务端网络带宽的占用,在客户端实现弹幕的分页播放,尽可能多地播放弹幕,减少待播放弹幕对客户端内存的占用,提升弹幕播放的实时性。
197.图9是根据一示例性实施例示出的一种弹幕接收方法的时序图,如图9所示,包括以下步骤:
198.在步骤s902中,客户端发送第一下发请求至服务端。
199.其中,第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,查询时间段基于对视频文件的播放时长进行划分得到。
200.在步骤s904中,服务端根据视频标识以及查询时间段在弹幕数据库中进行查找,得到与视频标识以及查询时间段对应的弹幕集合。
201.在步骤s906中,服务端从弹幕集合中获取目标弹幕。
202.具体地,比较弹幕集合中的弹幕数量与预设的弹幕返回上限。若弹幕集合中的弹幕数量大于弹幕返回上限,则将翻页字段赋值为第一结果值。从弹幕集合中,获取数量等于弹幕返回上限的目标弹幕。
203.在步骤s908中,服务端返回客户端查询结果。
204.其中,查询结果包括目标弹幕和第一结果值。
205.在步骤s910中,客户端播放目标弹幕。
206.在步骤s912中,判断在目标弹幕完成播放时的视频播放进度是否属于查询时间段;
207.在步骤s914中,若视频播放进度依旧属于查询时间段,在目标弹幕完成播放时向服务端发送第二下发请求。
208.其中,第二下发请求还携带有查询时间段和视频标识。
209.在步骤s916中,服务端依旧根据视频标识和查询时间段在弹幕数据库中进行查找,得到弹幕集合。
210.在步骤s918中,服务端根据第一结果值从弹幕集合中筛选,得到待下发弹幕。
211.其中,待下发弹幕为在弹幕集合中除返回至客户端的目标弹幕之外的其他弹幕。
212.在步骤s920中,服务端从待下发弹幕中获取新的目标弹幕。
213.具体地,根据各弹幕的标识依次从待下发弹幕中获取新的目标弹幕,并将新的目标弹幕返回至客户端。若待下发弹幕中的弹幕数量大于弹幕返回上限,从待下发弹幕中获取数量等于弹幕返回上限的目标弹幕,并作为新的目标弹幕。若待下发弹幕中的弹幕数量小于弹幕返回上限,将待下发弹幕作为新的目标弹幕。
214.在步骤s922中,服务端将新的目标弹幕返回至客户端。
215.在步骤s924中,客户端播放新的目标弹幕。
216.本实施例中,通过对视频文件的播放时长进行划分得到若干个查询时间段,并从弹幕集合中获取与视频标识以及查询时间段对应的目标弹幕,将目标弹幕返回至客户端,在服务端实现对弹幕集合中各弹幕的分页下发,减少每次下发弹幕的数量,减少对服务端网络带宽的占用,在客户端实现弹幕的分页播放,尽可能多地播放弹幕,减少待播放弹幕对客户端内存的占用,提升弹幕播放的实时性。
217.应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
218.图10是根据一示例性实施例示出的一种弹幕下发装置框图。参照图10,该查询装置1000包括第一接收模块1002,第一查找模块1004和第一弹幕返回模块1006。
219.第一接收模块1002,被配置为执行接收客户端发送的第一下发请求,所述第一下发请求携带有所述客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,所述查询时间段基于对所述视频文件的播放时长进行划分得到;
220.第一查找模块1004,被配置为执行根据所述视频标识以及所述查询时间段,在弹幕数据库中进行查找,得到与所述视频标识以及所述查询时间段对应的弹幕集合,所述弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系;
221.第一弹幕返回模块1006,被配置为执行从所述弹幕集合中获取目标弹幕,并将所述目标弹幕返回至所述客户端,所述目标弹幕为需要返回至所述客户端的若干条弹幕。
222.在一示例性实施例中,所述第一弹幕返回模块,还被配置为执行当所述弹幕集合中的弹幕数量大于预设的弹幕返回上限时,从所述弹幕集合中,获取数量等于所述弹幕返回上限的目标弹幕,并将翻页字段赋值为第一结果值,所述第一结果值用于告知所述客户端在所述弹幕集合中还包含有待下发弹幕;将所述目标弹幕和所述第一结果值返回至所述客户端,所述第一结果值还用于指示所述客户端发送第二下发请求。
223.在一示例性实施例中,所述待下发弹幕中的各弹幕具有标识;当所述目标弹幕完成播放时的视频播放进度依旧属于所述查询时间段时,所述装置还包括:
224.第二接收模块,被配置为执行接收所述第二下发请求,所述第二下发请求携带有所述查询时间段、所述视频标识以及所述第一结果值,所述第一结果值用于表征已经返回至所述客户端的目标弹幕的标识;
225.第二查找模块,被配置为执行依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所述弹幕集合;
226.弹幕集合筛选模块,被配置为执行根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕;
227.第二弹幕返回模块,被配置为执行根据各弹幕的标识依次从所述待下发弹幕中获取新的目标弹幕,并将所述新的目标弹幕返回至所述客户端。
228.在一示例性实施例中,所述第一弹幕返回模块,还被配置为执行当所述弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,从所述弹幕集合中获取所有弹幕作为所述目标弹幕,并将所述翻页字段赋值为第二结果值;将所述弹幕集合和所述第二结果值返回至所述客户端,所述第二结果值用于告知所述客户端所述弹幕集合中所有弹幕均已经返回至所述客户端。
229.在一示例性实施例中,当所述弹幕集合完成播放时的视频播放进度依旧属于所述查询时间段时,所述第二结果值还用于指示所述客户端不发送第二下发请求。
230.在一示例性实施例中,所述装置还包括:
231.第三接收模块,被配置为执行当所述目标弹幕完成播放时的视频播放进度不再属于所述查询时间段时,接收所述客户端发送的第三下发请求,所述第三下发请求携带新的查询时间段。
232.在一示例性实施例中,所述查询时间段包括查询时间起点时刻和查询时间终点时刻,所述查询时间终点时刻等于所述查询时间起点时刻与预设的查询时长阈值之和。
233.图11是根据一示例性实施例示出的一种弹幕接收装置框图。参照图11,该接收装置1100包括第一发送模块1102和第一接收模块1104。
234.第一发送模块1102,被配置为执行发送第一下发请求至服务端,所述第一下发请求携带有客户端正在播放的视频文件的视频标识以及当前播放进度所属的查询时间段,所述查询时间段基于对所述视频文件的播放时长进行划分得到;
235.第一接收模块1104,被配置为执行接收所述服务端返回的目标弹幕,所述目标弹幕为所述服务端从弹幕集合中获取的若干条弹幕,所述弹幕集合是所述服务端根据所述视频标识以及所述查询时间段,在弹幕数据库中进行查找得到的与所述视频标识以及所述查询时间段对应的弹幕所组成的集合,所述弹幕数据库包括视频标识、查询时间段以及弹幕的对应关系。
236.在一示例性实施例中,所述第一接收模块,还被配置为执行接收所述服务端返回的目标弹幕和第一结果值;当所述弹幕集合中的弹幕数量大于预设的弹幕返回上限时,所述目标弹幕为所述服务端从所述弹幕集合中获取数量等于所述弹幕返回上限的若干条弹幕,所述第一结果值为所述服务端对翻页字段的赋值,且所述第一结果值用于表征在所述弹幕集合中还包含有待下发弹幕,第一结果值还用于指示所述客户端发送第二下发请求。
237.在一示例性实施例中,所述待下发弹幕中的各弹幕具有标识,所述第一结果值还用于表征已经返回至所述客户端的目标弹幕的标识;所述弹幕接收装置还包括:
238.第二发送模块,被配置为执行当所述目标弹幕完成播放时的视频播放进度依旧属于所述查询时间段时,向所述服务端发送所述第二下发请求,所述第二下发请求携带有所述查询时间段、所述视频标识以及所述第一结果值;
239.第二接收模块,被配置为执行接收所述服务端返回的新的目标弹幕,所述新的目标弹幕是所述服务端依旧根据所述视频标识和所述查询时间段在所述弹幕数据库中进行查找,得到所述弹幕集合,根据所述第一结果值从所述弹幕集合中筛选,得到所述待下发弹幕,根据各弹幕的标识依次从所述待下发弹幕中获取的预设弹幕数量的弹幕。
240.在一示例性实施例中,所述第一接收模块,还被配置为执行接收所述服务端返回的目标弹幕和第二结果值;当所述弹幕集合中的弹幕数量不大于预设的弹幕返回上限时,所述目标弹幕为所述服务端从所述弹幕集合中获取的所有弹幕,所述第二结果值为所述服务端对翻页字段的赋值,且所述第二结果值用于表征在所述弹幕集合中的所有弹幕均已经返回至客户端。
241.在一示例性实施例中,所述弹幕接收装置还包括第三发送模块,被配置为执行当所述弹幕集合完成播放时的视频播放进度依旧属于所述查询时间段时,根据所述第二结果值不向所述服务端发送第二下发请求。
242.在一示例性实施例中,所述弹幕接收装置还包括第四发送模块,被配置为执行当所述目标弹幕完成播放时的视频播放进度不再属于所述查询时间段时,向所述服务端发送第三下发请求,所述第三下发请求携带新的查询时间段。
243.在一示例性实施例中,所述查询时间段包括查询时间起点时刻和查询时间终点时刻,所述查询时间终点时刻等于所述查询时间起点时刻与预设的查询时长阈值之和。
244.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
245.图12是根据一示例性实施例示出的一种用于弹幕接收的设备1200的框图。例如,设备1200可以是移动电话、计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。
246.参照图12,设备1200可以包括以下一个或多个组件:处理组件1202、存储器1204、电源组件1206、多媒体组件1208、音频组件1210、输入/输出(i/o)的接口1212、传感器组件1214以及通信组件1216。
247.处理组件1202通常控制设备1200的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件1202可以包括一个或多个处理器1220来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之间的交互。例如,处理组件1202可以包括多媒体模块,以方便多媒体组件1208和处理组件1202之间的交互。
248.存储器1204被配置为存储各种类型的数据以支持在设备1200的操作。这些数据的示例包括用于在设备1200上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器1204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、快闪存储器、磁盘或光盘。
249.电源组件1206为设备1200的各种组件提供电力。电源组件1206可以包括电源管理系统,一个或多个电源,及其他与为设备1200生成、管理和分配电力相关联的组件。
250.多媒体组件1208包括在所述设备1200和用户之间的提供一个输出接口的屏幕。在
一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1208包括一个前置摄像头和/或后置摄像头。当设备1200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
251.音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210包括一个麦克风(mic),当设备1200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1204或经由通信组件1216发送。在一些实施例中,音频组件1210还包括一个扬声器,用于输出音频信号。
252.i/o接口1212为处理组件1202和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
253.传感器组件1214包括一个或多个传感器,用于为设备1200提供各个方面的状态评估。例如,传感器组件1214可以检测到设备1200的打开/关闭状态,组件的相对定位,例如所述组件为设备1200的显示器和小键盘,传感器组件1214还可以检测设备1200或设备1200一个组件的位置改变,用户与设备1200接触的存在或不存在,设备1200方位或加速/减速和设备1200的温度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1214还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。
254.通信组件1216被配置为便于设备1200和其他设备之间有线或无线方式的通信。设备1200可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件1216经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1216还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
255.在示例性实施例中,设备1200可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
256.在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器1204,上述指令可由设备1200的处理器1220执行以完成上述方法。例如,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
257.在示例性实施例中,还提供一种计算机程序产品,包括所述计算机程序被处理器执行时实现上述的弹幕接收方法。
258.图13是根据一示例性实施例示出的一种用于弹幕下发的设备1300的框图。例如,设备1300可以为一服务器。参照图13,设备1300包括处理组件1320,其进一步包括一个或多个处理器,以及由存储器1322所代表的存储器资源,用于存储可由处理组件1320的执行的
指令,例如应用程序。存储器1322中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1320被配置为执行指令,以执行上述弹幕下发的方法。
259.设备1300还可以包括一个电源组件1324被配置为执行设备1300的电源管理,一个有线或无线网络接口1326被配置为将设备1300连接到网络,和一个输入输出(i/o)接口1328。设备1300可以操作基于存储在存储器1322的操作系统,例如windows server,mac os x,unix,linux,freebsd或类似。
260.在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器1322,上述指令可由设备1300的处理器执行以完成上述弹幕下发方法。存储介质可以是计算机可读存储介质,例如,所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
261.在示例性实施例中,还提供一种计算机程序产品,包括所述计算机程序被处理器执行时实现上述的弹幕下发方法。
262.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
263.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1