5-06 63,233
之前的 MPC 系教程和 madVR 教程都有些过时了。老教程直接通过注册表来设置虽然简单直接,但不利于维护,索性重新写一篇。
和 mpv 的教程 类似,本教程只提及最具普适性的选项,不为播放“高清病毒”,也不追求“极限画质”而故意榨取 CPU 和显卡性能。
本教程基于 K-Lite Codec Pack Full,其中已经包含了 MPC-HC 和 madVR。MPC-HC 现在已由 clsid2(原 MPC 6.4.9.1 开发者)接手继续开发,而 madVR 应该已经不需要再多做介绍。
madVR 其实并不需要很高的硬件性能就可以达到相当好的效果,所以默认建议使用。如果你不想使用 madVR,也可以选择 K-Lite Codec Pack Standard 或者 MPC-BE。我们不推荐使用 PotPlayer。
安装
直接从前文给出的 K-Lite Codec Pack 官网链接下载安装包,运行即可。安装过程中的大部分选项都可以保留默认,除了下面这两处:
– 因为我们要默认使用 madVR 作为视频渲染器,所以这里要选择“Video renderer: madVR”
(当然,如果你不用 madVR,这里保留默认的“MPC Video Renderer”就好)
– 为了保证播放稳定可靠,我们一般建议只使用软件解码(见后文补充说明)
友情提示,K-Lite Codec Pack 安装包可能捆绑有赞助推广软件,不需要的话记得留意把它取消安装。
简单配置
K-Lite Codec Pack 默认使用 MPC-HC 作为播放器,对于大部分常见的视频文件格式和编码都默认使用 LAV 分离器和解码器,设置都没有什么需要特别修改的地方。你只需要看看播放器的其他行为设置,让它更符合你的操作习惯即可,例如启动时默认进入全屏模式、快捷键等等。
如果你不用 madVR,默认会使用 MPC Video Renderer 作为渲染器,默认设置也不需要改动。
madVR 配置
如果你使用 madVR,接下来我们还有一些关于 madVR 的配置建议。
– 如果你正在使用显示器自带的出厂色彩校正模式,或者是已通过硬件校色校准的显示器,可以在这里选择“this display is already calibrated”,并在下方选择对应的色域,例如 sRGB 则选择“BT.709”(sRGB 和 BT.709 的色域是完全相同的),DCI-P3 则选择“DCI-P3”,gamma 一般保留默认的“pure power curve 2.20”即可:
当然,如果你通过软件对屏幕进行了校色,这里应该选择“calibrate this display by using eternal 3DLUT files”,详见后文补充说明。
– 打开 madVR 自带的去色带功能,强度保持默认的“low/high”即可。色带是最为常见的视频瑕疵之一,默认启用去色带是利远大于弊的:
– 很多时候,我们的显示器刷新率不是片源帧率的整数倍(例如显示器刷新率通常为 60 Hz 而动画通常为 23.976 fps),此时会因每一帧实际在屏幕上的呈现时间不均等而造成卡顿感(俗称 3:2 pull down judder)。madVR 的 smooth motion 功能正是为此设计,建议默认打开:
– madVR 自带的各种缩放算法(scaling algorithms)是其最大特色之一。这里我们提供三套推荐的缩放算法相关配置,按对性能的要求分为低、中、高三档:
chroma upscaling | image downscaling | image upscaling | |
低 | Cubic (Bicubic50) | Cubic (Bicubic50) + LL | Lanczos (3 taps) + SL |
中 | Cubic (Bicubic50) + AR | Cubic (Bicubic50) + LL + AR (relaxed) | Jinc + AR + SL |
高 | super-xbr (100) + AR | SSIM (1D – 100%) + LL + AR (relaxed) | NGU Sharp (medium) |
需要指出的是,这里对性能要求的高低并不绝对等同于画质的高低,“低”档设置的质量其实已经相当好了,而“高”档设置在一些低质量片源上反而有可能放大片源瑕疵。综合来说我们最推荐“中”档设置,是在画质、功耗和泛用性之间较为平衡的选择。
以“中”档为例,设置完成后应该是如下图的状态:
在完成本文的配置后,你可以打开一个码率较高的视频,按下 Ctrl + j 观察显示的 dropped frames、delayed frames 和 presentation glitches 这几项计数,如果播放一段时间后这几个数字都保持稳定没有增加,则基本可以确定视频播放没有什么问题了:
madVR 功能很丰富,这里不打算一一详解。再次推荐有意了解的同学阅读暮星(万年冷冻库)的这篇文章。
使用 XySubFilter with libass 字幕渲染器
对 Windows 平台上字幕渲染器的历史有些了解的朋友大概都知道 VSFilter (DirectVobSub) 到 xy-VSFilter/XySubFilter 的演化过程。原版 VSFilter 早已作古,其改版 xy-VSFilter/XySubFilter 开发也基本停滞,留有不少陈年 bug,在 4K 分辨率开始普及后性能问题也开始凸显。另外,VSFilter 系只支持 Windows 平台上基于 DirectShow 的播放器(如 MPC 系、PotPlayer),无法跨平台使用。libass 则是一个另起炉灶的跨平台字幕渲染器,性能也更佳,诸如 mpv、VLC 和很多移动平台上的播放器都使用 libass 来渲染字幕,近年来越来越普及。
由于 VSFilter 系长期的垄断地位而成为事实标准,绝大部分字幕组只能以 VSFilter 的渲染结果为准来制作和调整字幕显示效果(例如额外增大部分 OTF 字体竖排时的字号来弥补字体显示会变小的 bug)。libass 最近做出了一些妥协性修改,显示效果绝大部分时候都已经与 VSFilter 一致。因此,现在是摆脱 VSFilter 的历史包袱,迁移到 libass 的一个好时机。
XySubFilter with libass 就是在 XySubFilter 基础上修改以 libass 作为后端的字幕渲染器,让 DirectShow 播放器也能享受到 libass 高性能而不牺牲兼容性,推荐大家使用。
安装过程非常简单,只需要到项目的 GitHub 发布页面下载最新版本,解压到一个合适的位置,以管理员身份运行 Install_XySubFilter.bat,然后在 MPC-HC 的选项中启用即可:
补充说明
使用 HDMI 连接显示器时注意设置输出范围
Intel 集成显卡和 NVIDIA 显卡有时会在使用 HDMI 输出时,默认使用有限范围(limited range),严重影响显示对比度。所以在使用 HDMI 连接显示器时,要注意检查输出范围,在显示控制面板中将输出范围设置为全范围(full range),如果控制面板中没有提供选项,可以借助 madVR 附带的 madLevelsTweaker.exe 工具来调整。
DVI、DisplayPort 默认应该就是全范围,笔记本电脑的自带屏幕一般也不需要专门设置。
是否应该开启硬解(硬件解码)?
近几年的主流 PC 对最常见的视频编码(H.264 和 H.265)硬解的支持已经有了一些提高,但出现各种问题的几率仍不算低。为了保证播放稳定可靠,我们一般建议只使用软件解码。如果你有其他需求,例如希望降低笔记本电脑功耗、提高电池续航,可以尝试开启硬解。
首先打开 K-Lite Codec Pack 的 Codec Tweak Tool,选择 Configuration – DirectShow Filters – LAV Video Decoder (MPC-HC) 打开 LAV 解码器设置界面,然后在右上角选择“D3D11”:
如果在硬解开启时播放遇到奇怪问题,应该首先尝试禁用硬解来排查。
关于双显卡笔记本的设置
如果你使用的是集成显卡 + NVIDIA 独立显卡的笔记本,默认设置下 MPC-HC 只会调用集成显卡来进行渲染计算,性能有限。如果你发现播放时显卡性能成为瓶颈,可以尝试改用更高性能的独立显卡。
NVIDIA 控制面板屏蔽了 MPC-HC 默认的主程序文件名 mpc-hc64.exe,本来是无法直接设置使用独立显卡的。K-Lite Codec Pack 在安装时如果检测系统环境中有双显卡(NVIDIA Optimus)存在,会自动将 MPC-HC 主程序文件名改为 mpc-hc64_nvo.exe。如果你的 MPC-HC 主程序仍然是 mpc-hc64.exe,需要先改个名字,或者用 NVIDIA Profile Inspector 解锁。详情可以参考这里。
然后在 NVIDIA 控制面板 – 3D 设置 – 管理 3D 设置 – 程序设置下,添加 MPC-HC 主程序,将首选图形处理器改为“高性能 NVIDIA 处理器”,并将电源管理模式改为“自适应”。
使用 ICC profile 为 madVR 生成 3DLUT 文件实现色彩管理
我们需要用到校色软件 DisplayCAL 配套的一个小程序 3DLUT Maker。首先从 DisplayCAL 官网下载安装(如果你还没有的话),然后运行 3DLUT Maker,“Destination profile”选择你显示器的 ICC profile 文件,确保“Apply calibration (vcgt)”不勾选,文件格式当然是“madVR (.3dlut)”,其余保持默认即可:
点击右下角按钮,选择保存位置,完成后,把得到的 .3dlut 文件放在一个合适的位置,然后打开 madVR 设置,按下图设置,确保“disable GPU gamma ramps”不勾选:
然后保存设置即可。
- VCB-Studio 视频播放器推荐及教程索引 - 2023年5月8日
- 基于 MPC-HC 和 madVR 的播放器配置入门 - 2023年5月6日
- 跨平台播放器 mpv 配置入门 - 2023年2月15日
“按下 Ctrl + j 观察显示的 dropped frames、delayed frames 和 presentation glitches 这几项计数,如果播放一段时间后这几个数字都保持稳定没有增加,则基本可以确定视频播放没有什么问题了”
我是台式机,没集显,只有nvidia独显,双屏。用1080P@60hz显示器这3个参数很稳定;用2K@144hz显示器,presentation glitches数值就一直增加,每次增加八九十吧,这样正常么?
回复给小鸡配齐: 那肯定就不正常,需要调低参数
回复给Yune Neko: 请问该如何调整呢,我是3080笔记本禁用了核显,也是presentation glitches和dropped frames也会增加,把madvr的缩放算法改成了低还是会增加
回复给小鸡配齐: 请问你是如何调整的呢,我是3080笔记本禁用了核显,也是presentation glitches会增加到七八十左右,dropped frames也会缓慢增加
回复给信: 我也不会 😯 。。。反正肉眼凡胎,看视频倒是没觉得目测没啥影响。。。头一回鼓捣madVR,不敢瞎改配置。。
使用 DisplayCAL 3.8.9.3附带的3DLUT maker导出3dlut文件,总是提示“…已中止”,怎么办?
之前教程里是用注册表配置madVR的,按新教程设置的话会有冲突吗
感谢更新,之前的PotPlayer教程会在播放时产生撕裂,但开启反撕裂又会黑屏,时隔几年又有新教程了,真的很感谢!
请问xySubFilter没法自动加载外挂字幕文件怎么破?试了下内建字幕渲染器可以自动加载,字幕和视频文件名一致
回复给火樱: 试了下楼里说的管理员重装字幕插件,外部滤镜也添加插件,又能自动加载了
请问mpchc的播放列表除了手动另存为和看历史记录以外,没法自动保存吗?看番看到一半关了或者去看别的视频的话,播放列表就没有原记录了。
回复给月映纸: 本来就是实时自动保存的,“去看别的视频”这个行为覆盖了原播放列表
回复给孤雨独火: 不太明白,同一个视频关闭再开也不会记录历史位置是什么原因呢,设置里打勾了
回复给WenSprakle: 你问的是历史记录,它问的是播放列表,你两问的不是一个问题。我这里一切正常
回复给孤雨独火: 就是说我新看的视频,能不能加在原播放列表的下面保存下来?而不是替换我之前的播放列表
回复给月映纸: 那你就把文件加进播放列表(“打开文件”时勾选“添加到播放列表但不要打开”)而不是用“快速打开文件”(这就是替换播放列表)。
或者更简单的办法直接拖到列表上不就完了(“查看——播放列表”把文件拖到列表上)。
回复给孤雨独火: 好吧。看来还是没法和以前一样直接双击打开视频了,这点mpc不太人性。 😥
回复给月映纸: 不怕麻烦的话,可以用emby/jellyfin这类媒体库工具将动画入库,可以分集记录播放历史。电脑端可以考虑用embyToLocalPlayer这个项目(github,配合对应的浏览器插件)来关联自己习惯的第三方播放器(个人环境下调用mpc-be是可以成功记录播放历史的,不转码需要自己填写下配置文件)。移动端配合kodi等播放器可以实现多端播放记录同步。
已经在使用校色软件加载校色文件的话,还需要给MadVR设置3DLUT文件吗?
需要。
“加载校色文件”只是载入了 VCGT 而已,再配合 madVR 的 3DLUT 才是完整的色彩管理。
参考:https://bbs.acgrip.com/forum.php?mod=redirect&goto=findpost&ptid=10175&pid=96208&fromuid=2220
关于分离器,我发现有两个,一个splitter,一个splilter source,两者有大的区别吗。
我在使用source时,播放emby的HLS流式传输时,会发生卡顿或者不能正常渲染,或者切换轨道闪退之类的。
开了smooth motion看(23.976fps,屏幕60hz)动画垂直方向运动还是卡卡的,核显hd630
回复给wannaCry: 往前翻评论,这个解释过了,不是补帧,该“卡”还是”卡”
回复给孤雨独火: 我明白了,谢谢
一个问题,我使用mpc-be搭配madvr,两者都是最新版本。显示器是8抖10bit,在显卡输出和系统设置里都是被识别成10bit,但在madvr的设置里,我看到是只能被识别成8bit,这个有什么说法或者解决办法吗?
关于双显卡笔记本这个,我最近又看到一个解决方法,使用windows 11 系统的话,在系统设置里找到:
**设置–屏幕–显示卡–MPC-HC软件–高性能**
不知是否具有普适性
Windows 10 1803 或更新都可以这样,而且这个据说是可以 override NVIDIA 控制面板设置的。
但是我不确定只这样设置能否发挥独显最大性能(对应 NVIDIA 控制面板里的“电源管理模式”,默认是“节能”,需要改为“自适应”或更高),我手边不方便测试,而且 K-Lite 已经会自动给 MPC-HC64.exe 改名了,就还是只写了老办法。
回复给boday: 只在Windows图形设置里改使用的GPU会降频,还是得在驱动改电源管理。不过图形设置适应性更广,某些程序比如OBS在显卡驱动里改无效,而Windows图形设置就可以。
回复给keadovs: 通过任务管理器查看mpc使用的GPU,可以看到在使用独显,这样做没有问题
笔记本开启独显直连是不是就没有问题了?就不需要去更改英伟达的设置
关于CrystalDiskInfo跟XySubFilter共存的问题
安装XySubFilter后,只要CrystalDiskInfo发出警报声音就会闪退
之前打不开的原因就是因为我有一块硬盘已经超过警报温度了,尝试发出声音就直接闪退了
过一天发现可以打开CrystalDiskInfo了是因为硬盘温度还没起来.
现在仍然只要发出声音就会闪退
但奇怪的是,俺在新的win11虚拟机内测试,并没有出现闪退问题
看来是解决不了了,只能把警报声音关掉了
回复给 Yune Neko: 我也遇到了这个问题,点击CrystalDiskInfo的小人就会crash,拉了源码下来debug断点发现CrystalDiskInfo使用了MCI的接口并指定了lpstrDeviceType=MPEGVideo的方式来播放wav音频,进而会调用到mciqtz32.dll里的方法(在HKLM\Software\Microsoft\Windows NT\CurrentVersion\MCI32里指定),mciqtz32.dll似乎又会去使用系统上安装的DirectShow滤镜,然后可能是某一步的兼容性出了问题就导致了崩溃。
目前的一种解决方法是自己改CrystalDiskInfo的源码然后编译,把lpstrDeviceType=_T("MPEGVideo")改成lpstrDeviceType = _T("WaveAudio")。不知道滤镜这块有没有什么方法能解决问题
回复给 Yune Neko: 好吧,用XySubFilter_with_libass的脚本卸载后再重新安装后一切都正常了,很奇妙
回复给 .torrent: 今天又复现了,才发觉之前用脚本卸载后再重新安装其实并没有解决问题,只是32位的dll会让32位的cdi崩溃,64位dll会让64位的cdi崩溃,之前重装后正常只是因为我重装了32位的dll,然后开了64位的cdi…
如果打开特别大的文件(4k8k),视频卡卡的,presentation glitches就不增加,dropped frames增加,这应该是正常的。但是放一般码率的片子,presentation glitches 一直缓慢增加,是madvr设置问题吗?应该怎么解决
求解,hevc解码的mkv格式视频无法显示内嵌字幕,mp4格式没问题,还有,MPC-HC只能手动载入外挂字幕吗?
回复给需要勇气: 这里一切正常无法复现。
回复给孤雨独火: 我的电脑系统win11,中日双语字幕的mkv格式视频不显示内嵌字幕,怎么做才能让mpc-hc自动载入外挂字幕?
回复给需要勇气: 自动载入外挂字幕只需要同路径下同名而已,不需要任何额外操作
回复给孤雨独火: 视频文件和字幕文件已经放同一个文件夹同名了,还是不能自动载入外挂字幕,请问可以怎么解决?
回复给需要勇气: 这种玄学问题我是真不知道了,因为我真的无法通过任何文件复现
回复给孤雨独火:解决了,以 管理员身份运行 Install_XySubFilter.bat的操作重新进行一遍,字幕可以正常显示了
回复给需要勇气: 我遇到了相同的问题,不显示字幕轨。请问你已经正确显示字幕轨了吗?
回复给孤雨独火: win10今天刚安装mpchc,魔法使的新娘 10-bit 1080p HEVC BDRip [TV + OADs Fin]的字幕无法加载,显示没有字幕轨,其他我的电影视频啥的的mkv.mp4格式字幕都可以正常显示,感觉跟咱们的字幕或者解码格式有冲突
回复给哈密小瓜: vcb的魔法使的新娘也没内封字幕啊
回复给孤雨独火: 不管使用libass,内部渲染器;以及更改madVR还是MPC视频渲染器,旧视频渲染器,内嵌字幕都无法显示
2.0音箱,5.1或7.1的电影播放的时候,有时爆炸声等音量过高,有办法调整吗?
回复给jcyxxx: https://github.com/hooke007/MPV_lazy/wiki/0_FAQ#多声道音频的下混
回复给孤雨独火: 看错了,你用的如果是lav,去改lav audio里的downmix设置
好多年前用wmp搭配K-Lite用,后面用QQ播放器,再到potplay,没想到转了一圈,多年以后又用回了 K-Lite
请问,出现无法显示内嵌字幕的问题怎么解决?还有,mpc-hc是无法自动加载外挂字幕吗?
日了
安装XySubFilter后crystaldiskinfo就会打不开
不知道这两到底哪冲突了
我这里没问题
回复给はかせ:
你系统是win11吗
我在另一台win10的电脑上试了下没出现打不开的问题
确实,我这里也是 win10
回复给はかせ:
过了一天又试了下,莫名其妙又可以共存了
昨天重启几回了都没用,这操作系统也能有玄学的吗
回复给Yune Neko: 我一直都有装这2个。从没出现过不能共存的问题,WIN10
mpc-be使用了XySubFilter做字幕渲染后无法手动挂载外置字幕
只有目录下有同名的字幕文件才会显示字幕
回复给Yune Neko: 解决了
不仅要在字幕的字母渲染器里选中XySubFilter,还要在”扩展滤镜”里面添加XySubFilter和XySubFilterAutoLoader
回复给Yune Neko: 这是hc的bug,至于有没有反馈过我忘了,be版对xysublibass的兼容性要更好