安利一下自己写的基于 mpv 的弹幕加载插件

2016-05-05 22:51:15 +08:00
 fish47

MPVDanmakuLoader

ScreenShot

Features

Requirements

Installation

下载源码并安装脚本

_PROJECT_PATH=/tmp/MPVDanmakuLoader
git clone https://github.com/fish47/MPVDanmakuLoader.git "$_PROJECT_PATH"

pushd "$_PROJECT_PATH"
mkdir -p  ~/.config/mpv/scripts/
lua tool/mergefiles.lua > ~/.config/mpv/scripts/mpvdanmakuloader.lua
popd

建议通过~/.config/mpv/input.conf来修改快捷键,例如

Ctrl+d script-binding mpvdanmakuloader/load

SearchSyntax

Configuration

配置文件是视频目录下的.mpvdanmakuloader/cfg.lua,如果没有需要自行创建,下面是例子

local cfg = ...

-- 其他字段详见 MPVDanmakuLoaderApp._initConfiguration()@src/shell/application.lua
cfg.danmakuReservedBottomHeight = 30
cfg.subtitleReservedBottomHeight = 10

-- 修改或过滤弹幕,参数类型是 DanmakuData@src/core/danmaku.lua ,返回 true 过滤此弹幕
cfg.modifyDanmakuDataHook = function(danmakuData)
    if danmakuData.text:match("小埋色")
    then
        return true
    end
end

-- 修改弹幕样式,样式定义详见 _ASS_PAIRS_STYLE_DEFINITIONS@src/base/_ass.lua
cfg.modifyDanmakuStyleHook = function(styleData)
    styleData["Underline"] = true
end

-- 比较弹幕来源是否相同,参数类型是 DanmakuSourceID@src/core/danmaku.lua
cfg.compareSourceIDHook = function(sourceID1, sourceID2)
    -- 例如某个目录下,保存了不同时期的弹幕 xml 文件,为了去除重复弹幕,可以认为弹幕来源是相同的
    local dir1, fileName1 = mp.utils.split_path(sourceID1.filePath)
    local dir2, fileName2 = mp.utils.split_path(sourceID2.filePath)
    if dir1 == dir2 and fileName1 and fileName2
    then
        return fileName1:match(".*%.xml") and fileName2:match(".*%.xml")
    end
end

KnownIssues

5533 次点击
所在节点    编程
3 条回复
yicun
2016-05-11 13:46:03 +08:00
会开发 win 可用的吗?
fish47
2016-05-11 17:14:01 +08:00
@yicun 如果要移植,我会用 python 重写那些外部命令,然而我懒囧。其实在 win 下有同类型的软件叫 弹弹 Play 。
yuhangch
2022-06-27 19:15:01 +08:00
2022 年也有了做个类似东西的想法。。先看看楼主的还能不能用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/276648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX