弹弹play是如何加载弹幕的?

目录:

弹弹play致力于打造一个“省心、方便”的弹幕加载体验。我们的目标是,当用户选择了硬盘上的一个视频文件之后,不需要经过太多思考,即可看到网上其他用户的弹幕。目前来看,这个目标还是基本实现了的。

但是事实上,弹弹play加载弹幕是一个非常复杂的过程,复杂到无法通过一两句话概括。这篇文章将尝试向您解释弹弹play是如何通过视频文件信息获取到它对应的弹幕的。

总览

总体来说,当您加载视频后,弹幕的来源通常有下面这些:

弹幕来源概览

但是这些弹幕来源的加载都是有条件的,下面会分别进行说明。

弹幕来源(一):弹弹play服务器

当用户在播放器内打开某个视频文件时,播放器将首先计算此文件的特征值(hash),然后将此信息与其他视频文件信息(例如文件大小、视频时长、文件名等)回传到服务器进行识别与匹配。识别完成后即将这个文件关联到“弹幕库”。

“弹幕库”是服务器端内置的作品列表,包含了历史上所有的动画作品信息。与豆瓣、bangumi等网站不同,为了保证条目质量,这个列表由人工进行定期维护,普通用户是无法参与编辑的。例如,“火影忍者 第1话”“Overload 第2话”就是两个不同的弹幕库。

在这个过程中,如果服务器无法识别视频文件,将会猜测此文件的内容(可能是xxx、yyy、zzz的作品的某一集),并要求用户进行选择。用户可以选择关联,或是跳过。

当视频文件关联上弹幕库后,即可从弹弹play服务器下载到这个弹幕库中的弹幕了。如果选择了跳过,那么会终止加载弹幕的流程。

播放开始后,可以在弹幕列表页面看到“弹弹play”来源,说明这些弹幕是来自于弹弹play服务器。

弹幕来源(二):关联的第三方网站

在视频关联到弹幕库后,有可能出现的一个问题是,服务器上此弹幕库中的弹幕数量并不多(毕竟弹弹play用户总量不大),而对应的A站、B站上却有此作品的专题页。这时候就需要从这些第三方网站补充弹幕来观看了。

视频加载过程中,当播放器发现官方弹幕数量不够时,会读取【设置-联机服务-获取弹幕】处的设置项,如果弹幕数量小于设置的数值,那么将会联网读取一个列表,即“当前弹幕库关联的第三方网址”列表。举例来说,《公主连结 Re:Dive》第一话在B站上的播放页是 /bangumi/play/ep317766 ,这时服务器就会告诉播放器,可以从B站的ep317766获取到这一话的弹幕。

这个关联网址的列表是由用户投票产生的,那么如何保证关联网址是正确的呢?每当用户手动向已关联弹幕库的视频加载指定网址的弹幕时,就会给这个网址投一个“赞成”票,而当用户删除了这条关联时,相当于投了一个“反对”票。当总投票人数和赞成/反对超过阈值时,服务器就会采用这条记录,这样就能在不投入大量人力维护的情况下,让更多用户受益于社区贡献的数据。

弹弹play目前支持加载多个网站的弹幕,例如AB站、5dm、爱奇艺、腾讯等等,但是由于不同网站弹幕社区文化不同,为了保证弹幕质量,只有部分网站的网址会被服务器接受。(举例来说,相比而言,B站就是弹幕质量还不错的网站)

播放器在获取到第三方网址后,如何才能解析出弹幕来呢?在PC端,我们使用了“弹幕插件”用来解析视频网站的弹幕文本。而在移动端,由于插件形式比较难实现,所以移动端将会读取“弹幕代理服务”上缓存的弹幕内容(所以移动端读取到的弹幕不是实时更新的)。在PC端设置中开启“弹幕代理”选项后,解析行为也会和移动端相同。

最后,将官方弹幕与第三方网站的弹幕合并、去重之后,就可以开始播放了。您可以在弹幕列表页、弹幕来源边栏看到弹幕来源。

弹幕来源(三):手动添加第三方网址

在PC端,还可以手动添加受支持的第三方网站的弹幕。在【播放器-弹幕列表】页面中,点击【添加更多弹幕】按钮,即可打开添加弹幕的窗口。

在输入框中粘贴你想要加载的网址,点击【添加网址并确认】,即可解析并加载这个网址的弹幕了。

对于一些播放器无法自动关联和加载的网址,例如优酷网、腾讯视频等,需要用这种方式进行加载。

弹幕来源(四):本地xml弹幕文件

一些下载软件或是在线解析服务会提供xml格式弹幕文件的下载。常见的例如BiliPlus,可以让你将B站视频的弹幕保存为一个 .xml 后缀的文本文件供以后回看。

加载本地弹幕文件的方式共有三种:

  1. 自动读取:当弹幕文件和视频文件处于同一个文件夹并同名时,加载视频后会自动读取此弹幕文件。例如加载视频 C:\文件夹\视频.mp4 时将自动读取 C:\文件夹\视频.xml 弹幕。弹弹play手机版本都支持这种加载方式。
  2. 拖拽添加:播放视频时,将弹幕文件由桌面拖拽到播放器内,即可加载成功。
  3. 菜单添加:可以通过播放时的右键菜单,或是【弹幕列表】页面来手动选择并加载弹幕文件。手机端请点击播放器内对应的按钮或是菜单,也可以浏览到弹幕文件列表。

结语

这篇文章介绍了弹弹play加载弹幕的方式和流程,希望能够帮助您更进一步地理解弹弹play的运行逻辑。

当您发现弹幕加载错误时,可以据此判断是哪一步出现了问题,然后手工进行修复。例如,有可能是视频文件关联到了错误的弹幕库(重新关联弹幕库),或者是弹幕库正确,但连接到了错误的第三方网址(删除错误的网址关联)。

如果发现弹弹play弹幕库中的弹幕有错误或是不匹配的情况,可以通过反馈社区告诉我们:https://support.qq.com/products/104929在新窗口打开

上次更新:
贡献者: kaedei