在MPV播放器中加载弹弹play弹幕,基于 uosc UI框架和弹弹play API的mpv弹幕扩展插件
插件具体效果见演示视频:
_20240903_023413.mp4
- 从弹弹play的API获取剧集及弹幕数据,并根据用户选择的集数加载弹幕
- 通过点击uosc control bar中的弹幕搜索按钮可以显示搜索菜单供用户选择需要的弹幕
- 通过点击加入uosc control bar中的弹幕开关控件可以控制弹幕的开关
无需亲自下载整合弹幕文件资源,无需亲自处理文件格式转换,在mpv播放器中一键加载包含了哔哩哔哩、巴哈姆特等弹幕网站弹幕的弹弹play的动画弹幕。
插件本身支持Linux和Windows平台。项目依赖于uosc UI框架。欲使用本插件必须在mpv播放器中安装有uosc。uosc的安装步骤可以参考其官方安装教程。当然,如果使用MPV_lazy等内置了uosc的懒人包则只需安装本插件即可。
另外本插件也使用了DanmakuFactory弹幕格式转换工具。在Windows平台上本插件调用DanmakuFactory官方release版的DanmakuFactory.exe文件,在Linux平台上本插件调用基于作者自己Linux系统编译的二进制文件。如果本项目仓库中bin文件夹下提供的可执行文件无法正确运行,请前往DanmakuFactory项目地址,按照其教程选择或编译兼容自己环境的可执行文件。
一般的mpv配置目录结构大致如下
~/.config/mpv
├── fonts
├── input.conf
├── mplayer-input.conf
├── mpv.conf
├── script-opts
└── scripts
想要使用本插件,请将本插件完整地下载或者克隆到scripts
目录下,文件结构如下:
务必注意
⚠️
- scripts目录下放置本插件的文件夹名称必须为uosc_danmaku,否则必须参照uosc控件配置部分修改uosc控件
- danmaku目录虽然下载或者克隆时为空,但插件依赖此目录缓存弹幕文件,此文件夹不可或缺,不要因为这是空文件夹就删除此文件夹
- 记得给bin文件夹下的文件赋予可执行权限
~/.config/mpv/scripts
└── uosc_danmaku
├── api.lua
├── bin
│ ├── DanmakuFactory
│ └── DanmakuFactory.exe
├── danmaku
└── main.lua
这一步非常重要,不添加控件,弹幕搜索按钮和弹幕开关就不会显示在进度条上方的控件条中。若没有控件,则只能通过绑定快捷键调用弹幕搜索和弹幕开关功能
想要添加uosc控件,需要修改mpv配置文件夹下的script-opts
中的uosc.conf
文件。如果已经安装了uosc,但是script-opts
文件夹下没有uosc.conf
文件,可以去uosc项目地址下载官方的uosc.conf
文件,并按照后面的配置步骤进行配置。
由于uosc最近才更新了部分接口和控件代码,导致老旧版本的uosc和新版的uosc配置有所不同。如果是下载的最新git版uosc或者一直保持更新的用户按照最新版uosc的控件配置步骤配置即可。如果不确定自己的uosc版本,或者在使用诸如MPV_lazy等由第三方管理uosc版本的用户,可以使用兼容新版和旧版uosc的旧版uosc控件配置步骤
找到uosc.conf
文件中的controls
配置项,uosc官方默认的配置可能如下:
controls=menu,gap,subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality,gap,space,speed,space,shuffle,loop-playlist,loop-file,gap,prev,items,next,gap,fullscreen
在controls
控件配置项中添加button:danmaku
的弹幕搜索按钮和cycle:toggle_on:show_danmaku@uosc_danmaku:on=toggle_on/off=toggle_off?弹幕开关
的弹幕开关。放置的位置就是实际会在在进度条上方的控件条中显示的位置,可以放在自己喜欢的位置。我个人把这两个控件放在了<stream>stream-quality
画质选择控件后边。添加完控件的配置大概如下:
controls=menu,gap,subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality,button:danmaku,cycle:toggle_on:show_danmaku@uosc_danmaku:on=toggle_on/off=toggle_off?弹幕开关,gap,space,speed,space,shuffle,loop-playlist,loop-file,gap,prev,items,next,gap,fullscreen
找到uosc.conf
文件中的controls
配置项,uosc官方默认的配置可能如下:
controls=menu,gap,subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality,gap,space,speed,space,shuffle,loop-playlist,loop-file,gap,prev,items,next,gap,fullscreen
在controls
控件配置项中添加command:search:script-message open_search_menu?搜索弹幕
的弹幕搜索按钮和cycle:toggle_on:show_danmaku@uosc_danmaku:on=toggle_on/off=toggle_off?弹幕开关
的弹幕开关。放置的位置就是实际会在在进度条上方的控件条中显示的位置,可以放在自己喜欢的位置。我个人把这两个控件放在了<stream>stream-quality
画质选择控件后边。添加完控件的配置大概如下:
controls=menu,gap,subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality,command:search:script-message open_search_menu?搜索弹幕,cycle:toggle_on:show_danmaku@uosc_danmaku:on=toggle_on/off=toggle_off?弹幕开关,gap,space,speed,space,shuffle,loop-playlist,loop-file,gap,prev,items,next,gap,fullscreen
如果出于重名等各种原因,无法将本插件所放置的文件夹命名为uosc_danmaku
的话,需要修改cycle:toggle_on:show_danmaku@uosc_danmaku:on=toggle_on/off=toggle_off?弹幕开关
的弹幕开关配置中的uosc_danmaku
为放置本插件的文件夹的名称。假如将本插件放置在my_folder
文件夹下,那么弹幕开关配置就要修改为cycle:toggle_on:show_danmaku@my_folder:on=toggle_on/off=toggle_off?弹幕开关
对于坚定的键盘爱好者和不使用鼠标主义者,可以选择通过快捷键调用弹幕搜索和弹幕开关功能
弹幕搜索功能绑定的脚本消息为open_search_danmaku_menu
,弹幕开关功能绑定的脚本消息为show_danmaku_keyboard
如需配置快捷键,只需在input.conf
中添加如下行即可,快捷键可以改为自己喜欢的按键组合。
Ctrl+d script-message open_search_danmaku_menu
j script-message show_danmaku_keyboard
此功能尚为实验性功能,目前尚未解决弹幕去重等问题。
可添加的弹幕源如哔哩哔哩上任意视频通过video路径加BV号,或者巴哈姆特上的视频地址等。比如说以下地址均可作为有效弹幕源被添加:
https://www.bilibili.com/video/BV1kx411o7Yo
https://ani.gamer.com.tw/animeVideo.php?sn=36843
此功能通过调用弹弹Play的extcomment接口实现获取第三方弹幕站(如A/B/C站)上指定网址对应的弹幕。想要启用此功能,需要参照uosc控件配置,根据uosc版本添加button:danmaku_source
或command:add_box:script-message open_add_source_menu?从源添加弹幕
到uosc.conf
的controls配置项中。
想要通过快捷键使用此功能,请添加类似下面的配置到input.conf
中。从源添加弹幕功能对应的脚本消息为open_add_source_menu
。
Ctrl+j script-message open_add_source_menu
本脚本目前只有一个配置选项load_more_danmaku
,此选项默认关闭。
由于弹弹Play默认对于弹幕较多的番剧加载并且整合弹幕的上限大约每集7000条,而这7000条弹幕也不是均匀分配,例如有时弹幕基本只来自于哔哩哔哩,有时弹幕又只来自于巴哈姆特。这样的话弹幕观看体验就和直接在哔哩哔哩或者巴哈姆特观看没有区别了,失去了弹弹Play整合全平台弹幕的优势。
因此,本人添加了配置选项load_more_danmaku
,用来将从弹弹Play获取弹幕的逻辑更改为逐一搜索所有弹幕源下的全部弹幕,并由本脚本整合加载。开启此选项可以获取到所有可用弹幕源下的所有弹幕。但是对于一些热门番剧来说,弹幕数量可能破万,如果接受不了屏幕上弹幕太多,请不要开启此选项。(嘛,不过本人看视频从来只会觉得弹幕多多益善)
想要开启此选项,请在mpv配置文件夹下的script-opts
中创建uosc_danmaku.conf
文件并添加如下内容:
load_more_danmaku=yes