最近给 PotPlayer 重装并补了 LAV Filters + madVR 之后,发现新装的 PotPlayer 每次启动都明显变慢,主窗口要等大约 9 秒才出现;而本地备份的旧安装几乎是秒开。
这篇帖子记录一下问题本身、排错过程、最后定位到的根因,以及实际可行的修复办法。
现象
- 当前新装的 PotPlayer x64:冷启动到主窗口可见大约
9.2s到9.6s - 本地备份的旧安装:冷启动大约
0.65s到0.85s - 直觉上最先怀疑的是
LAV / madVR / 播放列表 / 联网检查 / 代理,但最后这些都不是主因
先排除的方向
我先把常见外部因素都做了一遍隔离测试:
- 清空或移除 PotPlayer 用户配置
- 清空默认播放列表
- 关闭自动更新和浏览器相关选项
- 临时阻断 PotPlayer 对外联网
- 检查代理连接
- 验证
LAV Splitter / LAV Video / LAV Audio / madVR是否只是播放链路问题
这些操作对启动时间几乎没有实质改善,说明慢点不在这些配置层。
关键发现
后面把新安装和本地备份逐项对比,发现真正不同的并不是 PotPlayerMini64.exe,而是核心 DLL:
- 当前安装:
PotPlayer64.dll 1.7.22777.0 - 备份安装:
PotPlayer64.dll 1.7.22775.0 PotPlayerMini64.exe两边哈希一致PotPlayer64.dll两边哈希不同- 两个 DLL 都带 Kakao 官方签名
也就是说,备份并不是奇怪的第三方改包,依然是官方文件,只是核心 DLL 小版本不同。
最关键的隔离测试
我做了一个非常直接的 A/B 测试:
- 保持同一套安装目录、同一套配置不动
- 先测当前
22777的启动 - 只替换
PotPlayer64.dll - 再测一次
- 最后把
22777换回去再测一次
结果非常干净:
- 基线
22777:9510 ms - 仅替换成
22775:771 ms - 再换回
22777:9626 ms
这基本把问题钉死到了 PotPlayer64.dll 1.7.22777.0 本身,而不是别的环境因素。
更细一点的定位
为了弄清楚“慢在 DLL 里哪里”,我又做了启动期的线程采样和时序对比。
观察到的现象是:
- 旧版大约
0.65s就把主窗口拉起来了,之后才开始去连本地代理 - 新版大约
9.17s才出现主窗口,而且联网发生在窗口出来之后 - 所以它不是“先卡网络”,而是“窗口出现之前就在自己进程里耗掉了大约 8 秒”
再看热线程采样:
- 慢版启动期间,主耗时线程长时间停在
PotPlayer64.dll + 0x1C1F2AE - 这个偏移位于 PE 里的
.themida区段 - 快版只是在受保护区很快掠过,随后就进入正常 GUI 初始化
从证据上看,更像是 1.7.22777 的 x64 核心 DLL 在早期保护/初始化阶段发生了启动性能回归,而不是播放器功能配置本身的问题。
这里强调一下:这是基于实测和采样得出的工程判断,不是拿到源码后的“绝对确定结论”。但证据已经足够强,至少可以确定不是 LAV、madVR、播放列表或联网设置的锅。
实际修复办法
对本机来说,最稳的办法不是硬改闭源 DLL,而是直接把当前安装里的 PotPlayer64.dll 固定回官方签名的 1.7.22775.0。
这样做之后,当前机器上的启动复测大约是:
851 ms814 ms815 ms
也就是基本恢复到“秒开”的状态。
对外反馈
顺手把这次排查整理成了公开材料,并且已经用韩英双语邮件发给 Kakao 的多个公开联系地址,希望能转到 PotPlayer x64 开发或发布链路去看。
公开材料:
- GitHub 仓库:https://github.com/constansino/potplayer-x64-22777-startup-regression
- PR 链接:https://github.com/constansino/potplayer-x64-22777-startup-regression/pull/1
结论
这次问题的核心不是“我把 PotPlayer 配坏了”,而是:
PotPlayer64.dll 1.7.22777.0本身存在启动回归- 回退到
1.7.22775.0可以稳定恢复启动速度 LAV Filters + madVR不是主因
如果后面 Kakao 真的修掉了这个回归,我会再补一次更新。