happygamer 发表于 2022-9-8 23:15:12

遇到了一个奇怪的bug,当load_plus.conf 设定 max_entries=150(150这个数字不是固定,有时候60,70也error)或手动拖拽大量(数量不固定)视频文件到mpv时,会无法唤起右键菜单,并出现以下error:
Error during initialization of subprocess (Script: coontextmenu_gui_tk.tcl)
貌似是因为加载大量文件导致菜单中的播放列表过长?但我研究了好久也无法解决…
暂时将main.lua这句删掉,可正常唤起菜单
            {CASCADE, "播放列表", "playlist_menu", "", "", function() return inspectPlaylist() end},
大佬有解决办法吗…

happygamer 发表于 2022-9-9 13:22:08

本帖最后由 happygamer 于 2022-9-9 13:34 编辑

happygamer 发表于 2022-9-8 23:15
遇到了一个奇怪的bug,当load_plus.conf 设定 max_entries=150(150这个数字不是固定,有时候60,70也error ...
总算测出error的规律了,播放列表载入的文件数/文件名长度会导致error出现,main.lua的内容可能也有关系
但具体原因不明…

我修改了main.lua内容(添加了一些无用的options作测试用途,可能跟菜单过长/文件名过长有关),见附件 ,其余均与 mpv-lazy-20220903 相同

测试方法:

0. 使用我修改了的main.lua

1. 把180个视频文件复制到任意文件夹中,用固定规则重命名,连同后缀要至少要有18个字符(如abcdefg0000001.mp4 - abcdefg0000180.mp4)
    (也不一定180个,只不过文件越少,文件名要越长才能测出bug)

2. load_plus.conf中修改max_entries=179
    把第一个文件拖拽到mpv,会自动加载1-180
   (不想修改load_plus.conf可直接手动选取180个文件拖拽到mpv)

3. 尝试唤起右键菜单时,出现 "Error during initialization of subprocess (Script: contextmenu_gui_tk.tcl)"

4. 将所有文件名修改成17个字符(如bcdefg0000001.mp4 - bcdefg0000180.mp4)

5. 重新拖拽到mpv

6. 可正常唤起右键菜单

7. 以不同文件名长度/文件数,重复以上测试

测试结果:

max_entries=100
文件名>=66个字符,error
文件名<=65个字符,正常

max_entries=110
文件名>=57个字符,error
文件名<=56个字符,正常

max_entries=120
文件名>=48个字符,error
文件名<=47个字符,正常

max_entries=130
文件名>=41个字符,error
文件名<=40个字符,正常

max_entries=140
文件名>=35个字符,error
文件名<=34个字符,正常

max_entries=150
文件名>=30个字符,error
文件名<=29个字符,正常

max_entries=160
文件名>=25个字符,error
文件名<=24个字符,正常

max_entries=170
文件名>=21个字符,error
文件名<=20个字符,正常

max_entries=180
文件名>=18个字符,error
文件名<=17个字符,正常

这也就解释了为何我会觉得这bug像是随机出现的,因為不同文件,名字长度不一樣…
我不懂,在main.lua加入几个cascade和command是如何产出这bug的…









苏辰汐 发表于 2022-9-9 14:53:05

本帖最后由 苏辰汐 于 2022-9-9 15:31 编辑

happygamer 发表于 2022-9-9 13:22
总算测出error的规律了,播放列表载入的文件数/文件名长度会导致error出现,main.lua的内容可能也有关系
...
测试了下,用contextmenu_gui原版脚本可以复现。所以和你的修改无关

播放列表子菜单相关代码是由我实现的,但其与Edition、章节和音视频子菜单的代码相比并没有结构上的区别

经过对代码修改测试,可以确定当文件数量大于一定阈值时即使将播放列表标题指定为playlistNum也会触发此bug。所以这和文件数量强相关,猜测是contextmenu_gui_engine.lua或contextmenu_gui_tk.tcl的局限性

解决方案:删除播放列表子菜单相关代码改用playlistmanager.lua脚本管理播放列表。当然更好的方式是解决contextmenu_gui脚本的局限性,不过这超出了我的能力范围(

PS:有条件的话建议测试一下具有上百个以上字幕轨的视频看看字幕子菜单是否也会触发相关bug,其他的子菜单应该很难满足相关条件

Edit:经测试当视频拥有两百个以上字幕轨(测试方式为外挂字幕)时同样会触发此bug,所以可以确定这是contextmenu_gui脚本自身的bug。
据我所知,播放youtube的视频并启用传递自动生成的字幕的参数时可能会拥有数百个字幕轨,一些教育视频可能拥有数百个章节,这些使用场景下都会触发此bug。虽然复现这些使用场景的概率极低,但可能需要考虑修复脚本bug了



happygamer 发表于 2022-9-9 18:25:59

苏辰汐 发表于 2022-9-9 14:53
测试了下,用contextmenu_gui原版脚本可以复现。所以和你的修改无关

播放列表子菜单相关代码是由我实现的 ...

感谢解答,目前也只能是删了相关代码使用了
或许可以回报给mpvcontextmenu原作者看看他有没有办法?


yubanmeiqin 发表于 2022-9-11 11:38:05

本帖最后由 yubanmeiqin 于 2022-9-11 11:46 编辑

HuangRuixiao 发表于 2020-12-16 16:21
了解了,把这个config文件也拷贝到这个目录下就行了。
我也拷贝过去了,但是样式还是没什么变化,是需要用懒人包的osc才可以吗?

paul 发表于 2022-9-18 17:15:19

本帖最后由 paul 于 2022-9-18 17:25 编辑

我把input.conf中的的几个改成
SHIFT+PGUP         add chapter -1               # 章节 -
SHIFT+PGDN         add chapter1               # 章节 +
PGUP               playlist-prev                # 列表中的上个文件
PGDN               playlist-next                # 列表中的下个文件
不知道为什么SHIFT+PGDN和PGDN,这两个快捷键没反应,但是另外两个是可以的,我在potplayer用这套快捷键是没问题,我想问下是bug吗?还是我那里没设置好。
我是用mpv-lazy-20220903的。


四之宫辉夜 发表于 2022-9-18 19:11:47

本帖最后由 四之宫辉夜 于 2022-9-18 19:24 编辑

paul 发表于 2022-9-18 17:15
我把input.conf中的的几个改成
SHIFT+PGUP         add chapter -1               # 章节 -
SHIFT+PGDN ...
这边尝试复现出现的情况是pgdn指令没有读取到,pgup相关快捷键可以使用


------------------------------------
解决了,PGDN -->PGDWN

paul 发表于 2022-9-18 19:35:49

四之宫辉夜 发表于 2022-9-18 19:11
这边尝试复现出现的情况是pgdn指令没有读取到,pgup相关快捷键可以使用




感谢,现在可以了

孤雨独火 发表于 2022-9-19 00:39:34

paul 发表于 2022-9-18 17:15
我把input.conf中的的几个改成
SHIFT+PGUP         add chapter -1               # 章节 -
SHIFT+PGDN ...

手册05

埃弗拉 发表于 2022-9-27 01:09:41

关于emby外置mpv播放闪退的问题,论坛里也看到好几位提到了,在其他地方看到原因在OSD和video-sync=display-resample上,试验后也确实不再闪退了。但注释掉video-sync=display-resample后发现抖动变得严重,想请教下有没有两全其美的方案。
页: 105 106 107 108 109 110 111 112 113 114 [115] 116 117 118 119 120 121 122 123 124
查看完整版本: [MPV+] MPV_lazy 懒人包