kjtsune / embyToLocalPlayer

etlp - Emby/Jellyfin 调用外部本地播放器,并回传播放记录。适配 Plex。
Apache License 2.0
648 stars 42 forks source link

Potplayer 提示无法播放 #71

Open zjjxwhh opened 2 months ago

zjjxwhh commented 2 months ago

媒体服务器: nyanmisaka/jellyfin 10.8.13 (Docker) 本地播放器: Potplayer 240827 (1.7.22319) x64 油猴插件: 2024.08.26,开启读取硬盘模式 本地配置: 播放器选择 pot,开启路径转换,开启播放列表,mix_s0=yes,pot_conf=emby(Potplayer 中已创建相应的配置)

问题描述: jellyfin 点击播放《妈妈朋友的儿子 - S01E08》,Potplayer 自动打开,播放列表中有《妈妈朋友的儿子 - S01E08》,但提示无法播放,截图及详细信息如下: image

\\xxxxx\media1\link\tv\日韩剧\妈妈朋友的儿子 (2024)\Season 1\妈妈朋友的儿子 - S01E08 - 第8集.mkv /title=妈妈朋友的儿子 S1:E8 - 第 8 集  |  妈妈朋友的儿子 - S01E08 - 第8集.mkv

本地确认有这个文件,在资源管理器中直接点击也能播放 之前一直能正常调用 PotPlayer 播放,猜测这个播放失败可能和我这两天更新了下 PotPlayer 的版本有关🤔 麻烦大佬有空看下,非常感谢~

本地日志:

[09/08/24 23:28:11.4] ['Python path: C:\\Users\\_hide_user_\\AppData\\Local\\Programs\\Python\\Python310\\python.exe']
[09/08/24 23:28:11.4] ['ini path: D:\\Projects\\kjtsune-embyToLocalPlayer\\embyToLocalPlayer_config.ini']
[09/08/24 23:28:11.4] Windows-10-10.0.26120-SP0 Python-3.10.11
system proxy: http://127.0.0.1:7890
system proxy: http://127.0.0.1:7890
[09/08/24 23:28:13.0] D:\Projects\kjtsune-embyToLocalPlayer\embyToLocalPlayer.py
[09/08/24 23:28:13.0] serving at http://127.0.0.1:58000
127.0.0.1 - - [08/Sep/2024 23:28:15] "POST /embyToLocalPlayer/ HTTP/1.1" 200 -
system proxy: http://127.0.0.1:7890
[09/08/24 23:28:15.0] PyScript/2024.09.03 UserScript/2024.08.26 Tampermonkey/5.1.1
[09/08/24 23:28:15.0] Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
[09/08/24 23:28:15.0] server=jellyfin/10.8.13 data['mount_disk_mode']=True
[09/08/24 23:28:15.0] command line: ['C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini64.exe', '\\\\_hide_user_-NAS\\media1\\link\\tv\\日韩剧\\妈妈朋友的儿子 (2024)\\Season 1\\妈妈朋友的儿子 - S01E08 - 第8集.mkv']
[09/08/24 23:28:15.0] ["xxx._mix_host_:8920 match: playlist[enable_host] ['local', '127.0', '192.168', '192-168-', 'example.com:8096', '.']"]
[09/08/24 23:28:15.0] ['C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini64.exe', '\\\\_hide_user_-NAS\\media1\\link\\tv\\日韩剧\\妈妈朋友的儿子 (2024)\\Season 1\\妈妈朋友的儿子 - S01E08 - 第8集.mkv', '/seek=00:00:00', '/title=妈妈朋友的儿子 S1:E8 - 第 8 集  |  妈妈朋友的儿子 - S01E08 - 第8集.mkv', 'config=emby']
[09/08/24 23:28:21.0] skip update progress: key='在开始播放时发生了问题。' _stop_sec=1397424 not in playlist_data
kjtsune commented 2 months ago

你这个文件地址怎么没有盘符的。 FAQ里有写:出错可尝试设置:dev > path_check = yes 会检查文件是否存在。兼容性更高,日志更清楚。(但会慢一点)

地址确定没问题的话,就看FAQ降级pot测试。

zjjxwhh commented 2 months ago

你这个文件地址怎么没有盘符的。 FAQ里有写:出错可尝试设置:dev > path_check = yes 会检查文件是否存在。兼容性更高,日志更清楚。(但会慢一点)

地址确定没问题的话,就看FAQ降级pot测试。

没盘符是因为视频文件在局域网的 NAS 上,所以文件路径会变成 \\主机名\media1\...\xxxx.mkv 这样的 配置 path_check = yes 之后拉起 PotPlayer 播放还是报同样的错,日志如下:

[09/09/24 17:06:27.7] ['Python path: C:\\Users\\_hide_user_\\AppData\\Local\\Programs\\Python\\Python310\\python.exe']
[09/09/24 17:06:27.7] ['ini path: D:\\Projects\\kjtsune-embyToLocalPlayer\\embyToLocalPlayer_config.ini']
[09/09/24 17:06:27.7] Windows-10-10.0.26120-SP0 Python-3.10.11
[09/09/24 17:06:29.3] D:\Projects\kjtsune-embyToLocalPlayer\embyToLocalPlayer.py
[09/09/24 17:06:29.3] serving at http://127.0.0.1:58000
127.0.0.1 - - [09/Sep/2024 17:06:37] "POST /embyToLocalPlayer/ HTTP/1.1" 200 -
[09/09/24 17:06:37.0] PyScript/2024.09.03 UserScript/2024.08.26 Tampermonkey/5.1.1
[09/09/24 17:06:37.0] Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
[09/09/24 17:06:37.0] server=jellyfin/10.8.13 data['mount_disk_mode']=True
[09/09/24 17:06:37.0] command line: ['C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini64.exe', '\\\\_hide_user_-NAS\\media1\\link\\tv\\日韩剧\\妈妈朋友的儿子 (2024)\\Season 1\\妈妈朋友的儿子 - S01E08 - 第8集.mkv']
[09/09/24 17:06:37.0] ["xxx._mix_host_:8920 match: playlist[enable_host] ['local', '127.0', '192.168', '192-168-', 'example.com:8096', '.']"]
[09/09/24 17:06:37.0] ['C:\\Program Files\\DAUM\\PotPlayer\\PotPlayerMini64.exe', '\\\\_hide_user_-NAS\\media1\\link\\tv\\日韩剧\\妈妈朋友的儿子 (2024)\\Season 1\\妈妈朋友的儿子 - S01E08 - 第8集.mkv', '/seek=00:00:00', '/title=妈妈朋友的儿子 S1:E8 - 第 8 集  |  妈妈朋友的儿子 - S01E08 - 第8集.mkv', 'config=emby']
[09/09/24 17:06:43.0] skip update progress: key='在开始播放时发生了问题。' _stop_sec=1397424 not in playlist_data

尝试降级到 PotPlayer 240618 (1.7.22260) x64 后播放正常,把鼠标放在播放列表上可以看到文件的路径,对比了下应该是 /title=... 那一段导致的问题🤔最新版本估计是把 /title=.... 那一段也当成文件路径了(最新版本 title 传送方式改了??

旧版本: image

最新版本: image


cmd 里直接执行指令试了下,上面一条指令报错,下面一条指令能播放,区别在于 " 的位置,PotPlayer 应该是要求 /title= 后接字符串,但是 subprocess.Popen() 处理的时候是把整个 /title=... 当字符串传进去了

image

carlosxu312 commented 2 months ago

我也遇到这个情况,测试了各种方法都不行,最后我找到代码把传入的标题中的空格都删除后,就成功打开了。应该就是 PotPlayer 新版本代码改动造成的,如果坚持用 PotPlayer 240827 的话,把配置中的 pretty_title 设置成 no 就可以了。

kjtsune commented 1 month ago

cmd 里直接执行指令试了下,上面一条指令报错,下面一条指令能播放,区别在于 " 的位置,PotPlayer 应该是要求 /title= 后接字符串,但是 subprocess.Popen() 处理的时候是把整个 /title=... 当字符串传进去了

@zjjxwhh 测试了几个办法,暂无法实现。等待别人解决或降级 Pot 使用了。

retaw commented 1 month ago

问题出在potplayer用title参数指定的内容不能有空格

retaw commented 1 month ago

昨天看了上面的方案,pretty_title 设置成 no ,一天使用,发现碰到文件名本身就有空格的情况,还是会出一样的问题。 因为问题还是出在 /title 参数指定的内容不能有空格。

研究了一下,目前最佳解决方案,就是不要使用 /title参数。找到players.py文件,注释掉如图的两行代码就行了: image

ps: 去掉这两行后,用读取硬盘模式,还有个额外收获。 使用读取硬盘模式,potplayer会自动添加同一文件夹下的文件到播放列表,连续看多集也能正确回传播放进度。 只要jellyfin的文件组织还算规整,看电视剧和动漫,就基本就完美规避播放列表传入的问题了。

kjtsune commented 1 month ago

建议换240618版本,文件 sha256 与 ScoopInstaller 一致。
potplayer-1-7-22286.exe (v240618)
sha256sum 66d03fc13f4949948890675cf62b839b704b542a34a13a180466f93be20d5bc6 github.com/ScoopInstaller/Extras -> potplayer.json github.com/microsoft/winget-pkgs -> Daum.PotPlayer.installer.yaml

kjtsune commented 1 month ago

可能相关的情况。 Plex: Pot 网络外挂字幕支持 @zhengsun2020 https://github.com/kjtsune/embyToLocalPlayer/issues/64#issuecomment-2286689547

发现这个subprocess.Popen执行不给字幕文件名自动加"" 所以POT不认,如果代码加 "" 自动就转成了 \" POT也不认,所以弄一个空格他就自动加 "

https://github.com/kjtsune/embyToLocalPlayer/blob/4f58f3c09773fe5595a343b6d5b9a6fd0679bc56/utils/players.py#L763-L764

seanlin5651 commented 1 month ago

[retaw]的回答很有用,要注释的文件路径(etlp-mpv-py-embed-win32\utils\players.py)

kjtsune commented 1 month ago

如果注释掉添加标题,在未能开启读盘模式(视频文件在本地资源管理器不能看到)时,会因为缺失标题回传失败。 https://github.com/kjtsune/embyToLocalPlayer/blob/4ca99498e1282ea3df4a59572550d0e026365a08/utils/players.py#L843-L844