Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

控制多个弹幕源弹幕延迟的功能 #120

Closed
thouser8 opened this issue Jan 25, 2025 · 48 comments · Fixed by #137
Closed

控制多个弹幕源弹幕延迟的功能 #120

thouser8 opened this issue Jan 25, 2025 · 48 comments · Fixed by #137
Assignees
Labels
enhancement New feature or request

Comments

@thouser8
Copy link

目前已经实现直接复制视频链接来导入弹幕,但是B站的搬运动画经常为了过审会拆分成上下两个视频甚至更多分段视频,

Image那么这种情况下导入(下)的弹幕,就会出现时间轴错位的问题。不知道是否有办法能够把多个弹幕源逐个导入形成一个顺序,然后让弹幕时间能和动画时间大致对得上?

@wan0ge
Copy link

wan0ge commented Jan 25, 2025

基本上是重新打一遍轴了,应该大概现在没有工具实现了这一需求吧,不过我有能实现的方法?一个视频如果分p1p2,理论上是不是p2的时间轴+p1最后的时间就能得到p2正确的的时间轴了,但是刚打开一个弹幕文件发现不太可能,文件都只记录了弹幕发送的时间而不是完整时间轴,上面方法建立在每一p末尾时间都有用户发送了弹幕的情况下,但这不现实。不然就是脚本层面支持在视频任意时间下加载弹幕了(弹幕不对视频轴,从什么时候加载就从什么时候显示)

@wan0ge
Copy link

wan0ge commented Jan 25, 2025

想到了,读取视频链接的时候判断是否有分p,如果有就读取每一p视频时长用来2+1,3+1+2合弹幕轴,不过能不能实现有没有必要做就不是我能判断的了hhh

@Tony15246
Copy link
Owner

想到了,读取视频链接的时候判断是否有分p,如果有就读取每一p视频时长用来2+1,3+1+2合弹幕轴,不过能不能实现有没有必要做就不是我能判断的了hhh

这个思路理论上其实也不可行,b站很多分段视频为了过审,会分p末尾添加5~10分钟左右的无意义视频内容,按照分p时间来计算算出来的时间还是不对的

@Tony15246
Copy link
Owner

那么这种情况下导入(下)的弹幕,就会出现时间轴错位的问题。不知道是否有办法能够把多个弹幕源逐个导入形成一个顺序,然后让弹幕时间能和动画时间大致对得上?

把多个弹幕源逐个导入形成一个顺序这么实现感觉不太现实,没有条件来判断判断用户导入弹幕源的时候是想要导入互相独立的弹幕源,还是想导入按顺序的弹幕源

@thouser8 我做一个可以独立控制每一个弹幕源的弹幕延迟的功能如何?这样就可以自己把分p视频的弹幕时间调对了。

@thouser8
Copy link
Author

那么这种情况下导入(下)的弹幕,就会出现时间轴错位的问题。不知道是否有办法能够把多个弹幕源逐个导入形成一个顺序,然后让弹幕时间能和动画时间大致对得上?

把多个弹幕源逐个导入形成一个顺序这么实现感觉不太现实,没有条件来判断判断用户导入弹幕源的时候是想要导入互相独立的弹幕源,还是想导入按顺序的弹幕源

@thouser8 我做一个可以独立控制每一个弹幕源的弹幕延迟的功能如何?这样就可以自己把分 p 视频的弹幕时间调对了。

感觉这个最可行,但是实现起来会不会有点难度?毕竟实际操作起来如果太繁琐难懂,那就鸡肋了

@Tony15246
Copy link
Owner

Tony15246 commented Jan 26, 2025

感觉这个最可行,但是实现起来会不会有点难度?毕竟实际操作起来如果太繁琐难懂,那就鸡肋了

我的想法就是再做一个跟从源添加弹幕菜单一样的菜单,会显示所有的弹幕源。上方有一个输入框,选中对应的弹幕源,输入要设置的延迟的秒数,就能调整该弹幕源的弹幕延迟。这个操作应该不算太繁琐,代码上怎么实现我有已经有大概的思路了。

@thouser8
Copy link
Author

感觉这个最可行,但是实现起来会不会有点难度?毕竟实际操作起来如果太繁琐难懂,那就鸡肋了

我的想法就是再做一个跟从源添加弹幕菜单一样的菜单,会显示所有的弹幕源。上方有一个输入框,选中对应的弹幕源,输入要设置的延迟的秒数,就能调整该弹幕源的弹幕延迟。代码上怎么实现我有已经有大概的思路了。

好好好,那就拭目以待了

@MiKoto-Railgun
Copy link
Contributor

我的想法就是再做一个跟从源添加弹幕菜单一样的菜单,会显示所有的弹幕源。上方有一个输入框,选中对应的弹幕源,输入要设置的延迟的秒数,就能调整该弹幕源的弹幕延迟。这个操作应该不算太繁琐,代码上怎么实现我有已经有大概的思路了。

我昨天刚刚把延迟弄进了样式调整菜单,结果现在只能放弃了

@Tony15246
Copy link
Owner

我昨天刚刚把延迟弄进了样式调整菜单,结果现在只能放弃了

这倒是不影响,目前的弹幕延迟是加载并且整合完之后的弹幕的延迟,是所有弹幕的整体延迟。我这个延迟调整是在加载弹幕之前,调整弹幕文件里记录的弹幕的时间轴,达到控制来自不同弹幕源的弹幕各自的延迟。所以这两种延迟并不冲突。

@Tony15246 Tony15246 self-assigned this Jan 26, 2025
@Tony15246 Tony15246 added the enhancement New feature or request label Jan 26, 2025
@Tony15246 Tony15246 changed the title 能否优化从多个弹幕源向当前弹幕添加新弹幕内容的功能 控制多个弹幕源弹幕延迟的功能 Jan 26, 2025
@MiKoto-Railgun
Copy link
Contributor

我昨天刚刚把延迟弄进了样式调整菜单,结果现在只能放弃了

这倒是不影响,目前的弹幕延迟是加载并且整合完之后的弹幕的延迟,是所有弹幕的整体延迟。我这个延迟调整是在加载弹幕之前,调整弹幕文件里记录的弹幕的时间轴,达到控制来自不同弹幕源的弹幕各自的延迟。所以这两种延迟并不冲突。

OK,按这么说的话,等 #123 合并后我就想在 #122 新的提交中把这个功能加回去

@Tony15246
Copy link
Owner

Tony15246 commented Jan 31, 2025

@dyphire mp.format_json()函数对于lua表转json的嵌套支持似乎有问题

print(utils.to_string(history))
print(utils.format_json(history))

以上两行代码打印相同的对象,但结果如下(indent是为了方便阅读由我手动添加)

/run/media/tony/ADATA SD810/北海道辣妹贼拉可爱/Nekomoe_kissatenDosanko_Gal_wa_Namara_Menkoi01 1080pJPSC.mp4这一项中,所有嵌套的table全部在转换为json时消失了

{
  "show_danmaku" = true,
  "/run/media/tony/ADATA SD810/北海道辣妹贼拉可爱/" = {
    "animeTitle" = "北海道辣妹贼拉可爱",
    "episodeTitle" = "第1话",
    "fname" = "Nekomoe_kissatenDosanko_Gal_wa_Namara_Menkoi01 1080pJPSC",
    "episodeId" = 176820001,
    "source" = "dandanplay",
    "episodeNumber" = 1
  },
  "/run/media/tony/ADATA SD810/北海道辣妹贼拉可爱/Nekomoe_kissatenDosanko_Gal_wa_Namara_Menkoi01 1080pJPSC.mp4" = {
    "https://www.bilibili.com/video/BV12NceehEFn" = {
      "from" = "user_custom",
      "delay"= "3.0"
    }
  }
}



{
    "show_danmaku": true, 
    "/run/media/tony/ADATA SD810/北海道辣妹贼拉可爱/": {
        "animeTitle": "北海道辣妹贼拉可爱", 
        "episodeTitle": "第1话", 
        "fname": "Nekomoe_kissatenDosanko_Gal_wa_Namara_Menkoi01 1080pJPSC", 
        "episodeId": 176820001, 
        "source": "dandanplay", 
        "episodeNumber": 1
    }, 
    "/run/media/tony/ADATA SD810/北海道辣妹贼拉可爱/Nekomoe_kissatenDosanko_Gal_wa_Namara_Menkoi01 1080pJPSC.mp4": [ ]
}

@Tony15246
Copy link
Owner

Tony15246 commented Jan 31, 2025

多级嵌套时,被嵌套的table会直接消失,请问大佬了解这个问题有什么好的解决方法吗?

之前因为只需要存储弹幕源的url,所以没遇到这个问题,现在需要针对每个弹幕源存储更详细的信息,比如说弹幕延迟,就遇到了嵌套不支持的问题。

我目前想到的就是放弃多级嵌套,用特殊占位的方式存储信息,比如说把

"https://www.bilibili.com/video/BV12NceehEFn" = {
  "from" = "user_custom",
  "delay"= "3.0"
}

用一个这样的字符串代替进行存储,从而避免产生嵌套

”<user_custom>{{0.3}}https://www.bilibili.com/video/BV12NceehEFn“

@dyphire
Copy link
Collaborator

dyphire commented Jan 31, 2025

@dyphire mp.format_json()函数对于lua表转json的嵌套支持似乎有问题

print(utils.to_string(history))
print(utils.format_json(history))

以上两行代码打印相同的对象,但结果如下(indent是为了方便阅读由我手动添加)

实际上,在 #123 中已经在使用嵌套了,感觉是 table 写法上有点问题
可以参考 extra.lua 中嵌套的写法:

uosc_danmaku/extra.lua

Lines 25 to 33 in a70a0fe

danmaku.extra = {}
danmaku.extra.id = id
danmaku.extra.site = site
danmaku.extra.year = year
danmaku.extra.class = class
danmaku.extra.title = title
danmaku.extra.number = number
danmaku.extra.episodenum = episode
write_history()

@Tony15246
Copy link
Owner

实际上,在 #123 中已经在使用嵌套了,感觉是 table 写法上有点问题 可以参考 extra.lua 中嵌套的写法:

奇怪,类似的写法我也尝试过,但是无法奏效。合成的lua table本身可以正确地存取遍历打印,也不像是结构上有什么问题,就是format_json的时候出问题

这个问题断断续续困扰了我三天了,始终无法正确地存取json

我现在基本完成了使用特殊占位的实现,测试也没什么问题,准备就按照特殊占位的写法来了。

@dyphire
Copy link
Collaborator

dyphire commented Jan 31, 2025

实际上,在 #123 中已经在使用嵌套了,感觉是 table 写法上有点问题 可以参考 extra.lua 中嵌套的写法:

奇怪,类似的写法我也尝试过,但是无法奏效。合成的lua table本身可以正确地存取遍历打印,也不像是结构上有什么问题,就是format_json的时候出问题

这个问题断断续续困扰了我三天了,始终无法正确地存取json

我现在基本完成了使用特殊占位的实现,测试也没什么问题,准备就按照特殊占位的写法来了。

特殊占位也不是不行,可以先这么实现,以后有时间再研究

dyphire pushed a commit that referenced this issue Feb 1, 2025
* feat: add danmaku source delay menu #120

* feat: add unit hint and no_osd param
@wan0ge
Copy link

wan0ge commented Feb 1, 2025

大佬们太强了,其实这个需求是少数的,但还是花心思实现出来了👍这个项目现在功能上简直完美

@thouser8
Copy link
Author

thouser8 commented Feb 1, 2025

大佬们太强了,其实这个需求是少数的,但还是花心思实现出来了👍这个项目现在功能上简直完美

有一说一,确实👍

@Tony15246
Copy link
Owner

大佬们太强了,其实这个需求是少数的,但还是花心思实现出来了👍这个项目现在功能上简直完美

过奖了

其实过年玩的挺嗨的😂,前天晚上从亲戚家回来,如果没沉迷追ave mujica和刷二创跟假药,可能能更早一点完成

@Tony15246
Copy link
Owner

新功能可以直接在总菜单里选择弹幕源延迟设置进行使用,也可以在uosc控件中单独添加。单独添加时,在uosc.conf中controls配置项里添加button:danmaku_delay或者command:more_time:script-message open_source_delay_menu?弹幕源延迟设置

更具体的说明会更新在readme当中

@thouser8
Copy link
Author

thouser8 commented Feb 1, 2025

新功能可以直接在总菜单里选择弹幕源延迟设置进行使用,也可以在 uosc 控件中单独添加。单独添加时,在 uosc.conf 中 controls 配置项里添加 button:danmaku_delay 或者 command:more_time:script-message open_source_delay_menu?弹幕源延迟设置

更具体的说明会更新在 readme 当中

刚刚试用了一下最新的功能,感觉有可以优化的地方:

Image以这半集为例,可以看到原片已经有人通过第三方插件标注出真实时长为11分5秒,刚好能配合到本插件对于下半集弹幕延迟的调整;Image但是目前插件只能设置具体秒数的延迟,这样十几分钟带秒数还要自己计算一下再填写进来就显得有点啰嗦了。我目前能想到两种方法:1增加能填入分钟数值,但是感觉不是很优雅;2弹幕延迟能够和进度条进行某种互动(读取?),直接从指定的进度条时间开始算作这个弹幕源的起始位置。

还有就是最好能自动移除手动添加的弹幕源,或者改进一下匹配网络弹幕?我刚才看完药屋ep3后去看精灵小姐ep4,不仅匹配网络弹幕匹配到了药屋ep3,而且手动输入的视频链接源也乱入进来了😂😂Image
(顺便能在“弹幕延迟调节”这个菜单里自动隐藏已经屏蔽的弹幕源)

Image

@Tony15246
Copy link
Owner

(顺便能在“弹幕延迟调节”这个菜单里自动隐藏已经屏蔽的弹幕源)

这个可以很轻松做到,那我就改成自动隐藏已经屏蔽的弹幕源好了。我以为用户会喜欢能控制更多的东西😂,设计的时候就没隐藏

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

2 弹幕延迟能够和进度条进行某种互动(读取?),直接从指定的进度条时间开始算作这个弹幕源的起始位置。

弹幕源本身都是默认把进度条的零分零秒算作这个弹幕源的起始位置的,现在的延迟设置就是相当于从指定的进度条时间开始算作这个弹幕源的起始位置

但是目前插件只能设置具体秒数的延迟,这样十几分钟带秒数还要自己计算一下再填写进来就显得有点啰嗦了。我目前能想到两种方法:1 增加能填入分钟数值

可以提供一个允许输入分钟加秒数的输入方式,如果你需要,我可以把输入方式改成同时兼容两种输入,一种是原本的输入延迟秒数;另一种是类似 14m34s 的这种分钟加秒数的输入方式

你觉得这种方式可以解决你的需求吗?

完全可以的👍那很有私人订制了哈哈

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

(顺便能在 “弹幕延迟调节” 这个菜单里自动隐藏已经屏蔽的弹幕源)

这个可以很轻松做到,那我就改成自动隐藏已经屏蔽的弹幕源好了。我以为用户会喜欢能控制更多的东西😂,设计的时候就没隐藏

主要是三四个弹幕源排列在一起就很难分辨了,我觉得还是隐藏比较好🤔

@Tony15246
Copy link
Owner

Tony15246 commented Feb 2, 2025

还有就是最好能自动移除手动添加的弹幕源,或者改进一下匹配网络弹幕?我刚才看完药屋ep3后去看精灵小姐ep4,不仅匹配网络弹幕匹配到了药屋ep3,而且手动输入的视频链接源也乱入进来了

这个听起来感觉像是弹幕自动关联功能的bug。能具体描述一下这个问题出现的步骤和情况吗?

我刚才看完药屋ep3后去看精灵小姐ep4

这个是播放本地视频的情况,还是使用类似play with mpv这样的插件在线播放的网络视频?

如果确定这是一个bug的话需要新开一个issue处理这个bug。

@Tony15246
Copy link
Owner

(顺便能在 “弹幕延迟调节” 这个菜单里自动隐藏已经屏蔽的弹幕源)

这个可以很轻松做到,那我就改成自动隐藏已经屏蔽的弹幕源好了。我以为用户会喜欢能控制更多的东西😂,设计的时候就没隐藏

主要是三四个弹幕源排列在一起就很难分辨了,我觉得还是隐藏比较好🤔

ok,那就改成自动隐藏

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

还有就是最好能自动移除手动添加的弹幕源,或者改进一下匹配网络弹幕?我刚才看完药屋 ep3 后去看精灵小姐 ep4,不仅匹配网络弹幕匹配到了药屋 ep3,而且手动输入的视频链接源也乱入进来了

这个听起来感觉像是弹幕自动关联功能的 bug。能具体描述一下这个问题出现的步骤和情况吗?

我刚才看完药屋 ep3 后去看精灵小姐 ep4

这个是播放本地视频的情况,还是使用类似 play with mpv 这样的插件在线播放的网络视频?

如果确定这是一个 bug 的话需要新开一个 issue 处理这个 bug。

我完整复述一遍整个过程吧,你看看能不能复现出来。
我是先打开了本地的药屋ep3,这时候没有自动搜索到任何弹幕,我就手动搜索了弹幕服务器,然后再手动加载了B站链接的弹幕源,正常看完。之后,使用了emby外挂mpv播放服务器里的精灵小姐ep4,就发现搜索弹幕里显示“已关联药屋少女的呢喃 第二季 第3话”,并且之前手动加载的B站视频源也还保留着

@Tony15246
Copy link
Owner

我完整复述一遍整个过程吧,你看看能不能复现出来。
我是先打开了本地的药屋ep3,这时候没有自动搜索到任何弹幕,我就手动搜索了弹幕服务器,然后再手动加载了B站链接的弹幕源,正常看完。之后,使用了emby外挂mpv播放服务器里的精灵小姐ep4,就发现搜索弹幕里显示“已关联药屋少女的呢喃 第二季 第3话”,并且之前手动加载的B站视频源也还保留着

OK,我吃完饭下午排查一下

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

我完整复述一遍整个过程吧,你看看能不能复现出来。
我是先打开了本地的药屋 ep3,这时候没有自动搜索到任何弹幕,我就手动搜索了弹幕服务器,然后再手动加载了 B 站链接的弹幕源,正常看完。之后,使用了 emby 外挂 mpv 播放服务器里的精灵小姐 ep4,就发现搜索弹幕里显示 “已关联药屋少女的呢喃 第二季 第 3 话”,并且之前手动加载的 B 站视频源也还保留着

OK,我吃完饭下午排查一下

貌似是手动搜索了一次之后,就会让下一次播放也关联到上次手动搜到的弹幕

Image我这里刚打开冲绳妹ep5,结果就书接上文自动关联到了精灵小姐ep4😂可能确实是一个需要处理的bug。

@Tony15246
Copy link
Owner

貌似是手动搜索了一次之后,就会让下一次播放也关联到上次手动搜到的弹幕

Image我这里刚打开冲绳妹ep5,结果就书接上文自动关联到了精灵小姐ep4😂可能确实是一个需要处理的bug。

坏了,那肯定是哪次pr不小心引入的bug

@dyphire
Copy link
Collaborator

dyphire commented Feb 2, 2025

貌似是手动搜索了一次之后,就会让下一次播放也关联到上次手动搜到的弹幕
我这里刚打开冲绳妹ep5,结果就书接上文自动关联到了精灵小姐ep4😂可能确实是一个需要处理的bug。

坏了,那肯定是哪次pr不小心引入的bug

从脚本代码逻辑上来说,这是不太可能出现的。弹幕关联记录对于本地文件以目录和文件名的方式进行记录,即使位于同一目录但文件命名规则不一致都不会继承关联;对于串流文件则是以媒体名(可能的番剧名)进行弹幕关联记录

本地文件和串流文件之间在代码逻辑上是不可能出现弹幕关联错乱继承的,至于串流文件之间的弹幕关联错乱继承则可能发生在媒体命名不规范的场景下,但这依然不能算作脚本的 bug

@MiKoto-Railgun
Copy link
Contributor

试了一下新功能,我个人比较喜欢添加新弹幕后就可以直接调延迟,是否需要将弹幕延迟菜单整合进添加弹幕源菜单,如果需要的话我可以提个pr,如果不需要的话是否可以考虑在后面的优化中,为添加弹幕源菜单添加item按钮跳转至弹幕延迟菜单

@Tony15246
Copy link
Owner

Tony15246 commented Feb 2, 2025

从脚本代码逻辑上来说,这是不太可能出现的。弹幕关联记录对于本地文件以目录和文件名的方式进行记录,即使位于同一目录但文件命名规则不一致都不会继承关联;对于串流文件则是以媒体名(可能的番剧名)进行弹幕关联记录

本地文件和串流文件之间在代码逻辑上是不可能出现弹幕关联错乱继承的,至于串流文件之间的弹幕关联错乱继承则可能发生在媒体命名不规范的场景下,但这依然不能算作脚本的 bug

我也觉得很奇怪,从理论上来说不太可能出现这种bug,不太能想象到问题处在哪里。但如果说是单纯的媒体命名不规范导致的弹幕关联错乱继承,每次都正好错乱继承到上一次关联的弹幕也很没道理,解释不通

@thouser8 我没有成功复现此问题,需要出现该问题时的mpv的运行日志来进行进一步的排查

@dyphire @MiKoto-Railgun 请问可以麻烦测试一下在你们的环境下会不会复现同样的在上一个视频里搜索完弹幕后,网络播放下一个视频时关联到上一个视频弹幕的问题吗?

@MiKoto-Railgun
Copy link
Contributor

@dyphire @MiKoto-Railgun 请问可以麻烦测试一下在你们的环境下会不会复现同样的在上一个视频里搜索完弹幕后,网络播放下一个视频时关联到上一个视频弹幕的问题吗?

我试试看

@MiKoto-Railgun
Copy link
Contributor

正常加载,没有复现, @thouser8 你发一下你danmaku-history.json文件里的有关这两个视频匹配文件名的json数据,看看写入数据有没有出错

@MiKoto-Railgun
Copy link
Contributor

我完整复述一遍整个过程吧,你看看能不能复现出来。
我是先打开了本地的药屋ep3,这时候没有自动搜索到任何弹幕,我就手动搜索了弹幕服务器,然后再手动加载了B站链接的弹幕源,正常看完。之后,使用了emby外挂mpv播放服务器里的精灵小姐ep4,就发现搜索弹幕里显示“已关联药屋少女的呢喃 第二季 第3话”,并且之前手动加载的B站视频源也还保留着

@thouser8 你移动danmaku-history.json到别的位置,再按以上操作重新试试看能不能复现

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

我完整复述一遍整个过程吧,你看看能不能复现出来。
我是先打开了本地的药屋 ep3,这时候没有自动搜索到任何弹幕,我就手动搜索了弹幕服务器,然后再手动加载了 B 站链接的弹幕源,正常看完。之后,使用了 emby 外挂 mpv 播放服务器里的精灵小姐 ep4,就发现搜索弹幕里显示 “已关联药屋少女的呢喃 第二季 第 3 话”,并且之前手动加载的 B 站视频源也还保留着

@thouser8 你移动 danmaku-history.json 到别的位置,再按以上操作重新试试看能不能复现

Image复现出来了,先精灵小姐ep4,这时候能正确匹配。接着打开冲绳妹ep5,就自动匹配到了精灵小姐ep4的弹幕。

danmaku-history.json这里面_5. 勘違いでかりゆしウェア!_是冲绳妹ep5的标题,但是前面的匹配信息又是精灵小姐ep4。
另外从本地文件的我独自升级第16话的文件名会自动匹配到了17话,不知道啥原因

Image并且在我手动改正为16话弹幕后,依然会有17话对应的弹幕存留,和16话弹幕混在一起。

@Tony15246
Copy link
Owner

并且在我手动改正为16话弹幕后,依然会有17话对应的弹幕存留,和16话弹幕混在一起。

这个是分文件弹幕加载重构的时候引入的一个bug,我今天才发现还没来得及处理,我一会儿会推一个pr修复一下这个bug

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

并且在我手动改正为 16 话弹幕后,依然会有 17 话对应的弹幕存留,和 16 话弹幕混在一起。

这个是分文件弹幕加载重构的时候引入的一个 bug,我今天才发现还没来得及处理,我一会儿会推一个 pr 修复一下这个 bug

顺便能请问下网络文件的mpv.log保存在哪吗?我在根目录和portable_config下都没找到🤔本地播放后倒是会把日志生成在本地视频文件旁边。

@MiKoto-Railgun
Copy link
Contributor

顺便能请问下网络文件的mpv.log保存在哪吗?我在根目录和portable_config下都没找到🤔本地播放后倒是会把日志生成在本地视频文件旁边。

portable_config\files\ 文件夹下吧,你看看

@dyphire
Copy link
Collaborator

dyphire commented Feb 2, 2025

Image复现出来了,先精灵小姐ep4,这时候能正确匹配。接着打开冲绳妹ep5,就自动匹配到了精灵小姐ep4的弹幕。

danmaku-history.json这里面_5.勘違いでかりゆしウェア!_是冲绳妹ep5的标题,但是前面的匹配信息又是精灵小姐ep4。

这就是我上面说的串流文件媒体命名不规范导致的
Image
你这种命名方式所有的文件都会以相同的名称被识别记录,脚本无能为力
解决方法只有规范化命名方式,使用约定俗成的命名方式,最好是遵守刮削或压制组的命名格式

另外从本地文件的我独自升级第16话的文件名会自动匹配到了17话,不知道啥原因

未搜索关联时的自动匹配是哈希匹配,会出错很正常,这是弹弹play 服务器上的记录不正确导致的

@Tony15246
Copy link
Owner

Image复现出来了,先精灵小姐ep4,这时候能正确匹配。接着打开冲绳妹ep5,就自动匹配到了精灵小姐ep4的弹幕。

danmaku-history.json这里面_5. 勘違いでかりゆしウェア!_是冲绳妹ep5的标题,但是前面的匹配信息又是精灵小姐ep4。

我看了一下danmaku-history.json,大概知道是怎么回事了。这个不是插件的bug,是你使用的外挂mpv的emby播放器传给mpv的media-title的格式和插件不兼容,插件从中读不到正确的动画信息,你看danmaku-history.json里,从media-title里读出来的动画名称是〔 Season1,插件就会以为你一直在看同一部叫〔 Season1的动画,所以你在上一个视频里搜索了什么动画的弹幕,下一个视频里还是出现上次搜索的动画的弹幕。

至于串流文件之间的弹幕关联错乱继承则可能发生在媒体命名不规范的场景下,但这依然不能算作脚本的 bug

归根结底确实是dyphire大佬说的,emby播放器媒体命名不规范的问题

@thouser8
Copy link
Author

thouser8 commented Feb 2, 2025

Image复现出来了,先精灵小姐 ep4,这时候能正确匹配。接着打开冲绳妹 ep5,就自动匹配到了精灵小姐 ep4 的弹幕。
danmaku-history.json 这里面_5. 勘違いでかりゆしウェア!_是冲绳妹 ep5 的标题,但是前面的匹配信息又是精灵小姐 ep4。

我看了一下 danmaku-history.json,大概知道是怎么回事了。这个不是插件的 bug,是你使用的外挂 mpv 的 emby 播放器传给 mpv 的 media-title 的格式和插件不兼容,插件从中读不到正确的动画信息,你看 danmaku-history.json 里,从 media-title 里读出来的动画名称是〔 Season1,插件就会以为你一直在看同一部叫〔 Season1 的动画,所以你在上一个视频里搜索了什么动画的弹幕,下一个视频里还是出现上次搜索的动画的弹幕。

至于串流文件之间的弹幕关联错乱继承则可能发生在媒体命名不规范的场景下,但这依然不能算作脚本的 bug

归根结底确实是 dyphire 大佬说的,emby 播放器媒体命名不规范的问题

好的,麻烦三位大佬耐心解答了😂这个服的媒体名使用的都是英文,可能也和这个有关

@MiKoto-Railgun
Copy link
Contributor

试了一下新功能,我个人比较喜欢添加新弹幕后就可以直接调延迟,是否需要将弹幕延迟菜单整合进添加弹幕源菜单,如果需要的话我可以提个pr,如果不需要的话是否可以考虑在后面的优化中,为添加弹幕源菜单添加item按钮跳转至弹幕延迟菜单

大佬看一下这个可以不,可以的话我就优化一下提个pr,不行就算了
https://github.com/MiKoto-Railgun/uosc_danmaku/tree/dev

https://easylink.cc/uqu8yk

@Tony15246
Copy link
Owner

试了一下新功能,我个人比较喜欢添加新弹幕后就可以直接调延迟,是否需要将弹幕延迟菜单整合进添加弹幕源菜单,如果需要的话我可以提个pr,如果不需要的话是否可以考虑在后面的优化中,为添加弹幕源菜单添加item按钮跳转至弹幕延迟菜单

大佬看一下这个可以不,可以的话我就优化一下提个pr,不行就算了 https://github.com/MiKoto-Railgun/uosc_danmaku/tree/dev

https://easylink.cc/uqu8yk

ok,等我洗完衣服来看一下

@Tony15246
Copy link
Owner

大佬看一下这个可以不,可以的话我就优化一下提个pr,不行就算了
https://github.com/MiKoto-Railgun/uosc_danmaku/tree/dev

https://easylink.cc/uqu8yk

比起这种实现方式,我还是更喜欢为添加弹幕源菜单添加item按钮跳转至弹幕延迟菜单 这种实现方式。

从软件设计的角度来说,我个人觉得如果一个图形界面不能让人在看到它的时候就理解它的操作方法,而需要额外的说明,那么这个界面就有点过于复杂了。点击切换界面功能的话,可能会让百分之三四十的人在第一次见到的时候不知道怎么在两种模式之间切换。这种设计很精巧但可能不够简单。另外,也会增加用户误操作的可能性,比如说在添加源的界面不小心输入延迟秒数,或者在延迟设置界面不小心输入url链接,也增加了代码上校验用户输入的负担。

当然从技术上来讲这个实现写的很精彩,巧妙地糅合了两个菜单,同时增加了代码复用。代码写的真的很好👍

我本来想等这个issue里的问题解决完以后,单独开一个issue和你讨论一下这个的。没想到你能力这么强,效率这么高😂,都已经实现好了。抱歉让你浪费了时间精力,我应该早点和你讨论一下的。

@MiKoto-Railgun
Copy link
Contributor

ok,没问题的,刚刚出去吃饭没来得及回复

从软件设计的角度来说,我个人觉得如果一个图形界面不能让人在看到它的时候就理解它的操作方法,而需要额外的说明,那么这个界面就有点过于复杂了。点击切换界面功能的话,可能会让百分之三四十的人在第一次见到的时候不知道怎么在两种模式之间切换。这种设计很精巧但可能不够简单。另外,也会增加用户误操作的可能性,比如说在添加源的界面不小心输入延迟秒数,或者在延迟设置界面不小心输入url链接,也增加了代码上校验用户输入的负担。

大佬说的有理,本质上还是得简单使用为宜,为添加弹幕源菜单添加item按钮跳转至弹幕延迟菜单 这种实现方式也行的,大佬能实现这个功能才是真的强👍

就是延迟这个一位小数是不是有点多余?弹幕延迟不至于精确到毫秒吧

@Tony15246
Copy link
Owner

Tony15246 commented Feb 2, 2025

就是延迟这个一位小数是不是有点多余?弹幕延迟不至于精确到毫秒吧

弹幕文件里的时间轴是精确到小数点后两位的,所以理论上还能更精确一点🤣,而且实际上无论精确到小数点后多少位都是合法的

当然用户肯定是用不到这么精确的,所以我在提示语里说要输入一位小数,实际上不管是输入整数还是更多位小数都是合法且可以生效的。确实也可以把提示语改成输入整数秒数,在readme里提醒有更精确需求的用户,可以精确到自己想要的任意精度。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants