PotPlayer + LAV + madVR 配置

PotPlayer + LAV + madVR 配置
狂犬主子PotPlayer 是 Windows 下一款界面简洁、功能齐全的高清影音播放器,与 MPC、MPV 相比更加人性化。但其默认方案可能处于兼容性和功能新考虑,画质、音质十分糟糕,一直饱受诟病。本人已经使用 PotPlayer 数年,将为大家分享一下配置方案,希望对大家有所帮助。
安装
需要注意的是,PotPlayer 原版是具有广告的,只是在国内环境下无法连接广告服务器而已(GFW 最有用的一集)。这里我们可以使用去广告的版本,可以从 423down 下载。但这种绿色版本使用起来与安装版的不一致,容易被当作垃圾清理或出现无法关联的问题。
此处强烈推荐直接安装完美解码,其附带的 PotPlayer 已经进行了相关修改,无广告:
完美解码是一款为高清影视爱好者精心打造的影音解码包,能软硬件解码播放流行的视频和音频格式。集成多媒体播放器 PotPlayer、MPC-HC、MPC-BE,分离器解码器套件 LAV Filters,高画质渲染器 madVR,支持中英语言安装使用。
本人更推荐直接使用完美解码加上 ModernW10 皮肤,以获得一个更加友好的体验。需要注意的是,该皮肤在 deviantart 上仅提供 English 版本,我们使用的是 @断剑留痕 的汉化版本。
本人需要在系统中集成完美解码,因此制作一键静默安装包,只需双击即可安装,同时自动换肤、卸载系统自带的 UWP 播放器。下载地址:
https://url.xrgzs.top/PureCodec
如果您希望手动安装完美解码,可以去完美解码官网下载,需要注意的是,网络上搜到的完美解码官网(完美下载)并非作者发布地址,但应该是有一定的关系,进去下载的时候需要避免点击到假的下载地址。真正的发布地址为 http://diodiy.top/?thread-1.htm 。
完美解码已被 WinGet 收录,可以一行命令安装:
1 winget install --id Dio.PureCodec
原理
默认情况下,PotPlayer 的解码方案简化如下图所示。
flowchart TD A1["MP4文件"] --> B["分离器(Pot)"] A2["MKV文件"] --> B B --> C["视频流(HEVC)"] & D["音频流(TrueHD)"] & E["字幕(PGS)"] C --4k 23.976P 10bit--> C1["视频解码器(FFmpeg)"] C1 --8bit--> C2["视频滤镜(Pot)"] C2 --> C3["视频渲染器(EVR)"] C3 --> C4["视频呈现器(D3D)"] C4 --> C5["显卡"] C5 --4K 60P 8bit limit--> C6["显示器"] D --48k 24bit 8ch--> D1["音频解码器(FFmpeg)"] D1 --16bit PCM--> D2["音频滤镜(Pot)"] D2 --2ch--> D3["音频渲染器(DirectSound)"] D3 --> D4["WASAPI(Vista+)"] D4 --> D5["声卡"] D5 --44.1k 16bit--> D6["扬声器"] E --> E1["字幕插件(Pot)"] E1 --Overlay Mixer/VMR/EVR--> C2
我们简单介绍一下,PotPlayer 为了实现亮度调整、音量规格化等复杂的功能,和传统播放器一样,引入了一些滤镜,但这些滤镜对 10 bit 视频甚至 24 bit 音频都不支持,会将 10 bit / 24 bit 数据砍成 8 bit / 16 bit 然后再给滤镜处理,导致播放效果一坨屎,出现色带、失真等问题。
为了解决这个问题,我们需要修改 PotPlayer 默认糟糕的配置:更换 PotPlayer 的渲染器,并关闭 PotPlayer 的滤镜。
flowchart TD A1["MP4文件"] --> B["分离器(LAV Filter)"] A2["MKV文件"] --> B B --> C["视频流(HEVC)"] & D["音频流(TrueHD)"] & E["字幕(PGS)"] C --4k 23.976P 10bit--> C1["视频解码器(LAV Video Decoder)"] C1 --10bit YUV--> C2["视频滤镜(disabled)"] C2 --10bit--> C3["视频渲染器(madVR)"] C3 --> C4["视频呈现器(D3D)"] C4 --> C5["显卡"] C5 --4k 23.976P 10bit full--> C6["显示器"] D --48k 24bit 8ch--> D1["音频解码器(LAV Audio Decoder)"] D1 --2ch 24bit PCM--> D2["音频滤镜(disabled)"] D2 --> D3["音频渲染器(WASAPI)"] D3 --> D4["WASAPI(Vista+)"] D4 --> D5["声卡"] D5 --48k 24bit--> D6["扬声器"] E --> E1["字幕插件(Pot)"] E1 --Overlay Mixer/VMR/EVR--> C2
madVR 是一种高质量的GPU辅助的视频渲染器。特点:高质量的色度上采样,高质量的缩放(bicubic、mitchell、lanczos、spline等),高质量的YCbCr -> RGB转换,用于显示校准的色域和伽玛校正,完整的16位处理队列,最终的16位处理结果抖动到RGB输出位深,绕过显卡的视频(损伤)算法,所有工作都通过没有捷径,最高质量优先于其他任何事情的GPU着色器完成。
除了播放器这个因素,在使用 HDMI 外接显示器/电视时,由于传统电视的一些限制(可能是考虑对信号进行一些冗余,分辨率和色彩动态返回会进行一些裁切),显卡会将输出动态范围设置为有限(16-235),而不是完全(0-255),导致动态范围缩减,如果您连接的是显示器,此时会出现画面发白的情况,甚至画面都无法显示全屏。
此外,Windows 下默认声卡的采样率和量化位数是 48000 Hz / 24 bit,部分老版本的驱动会将其设置为 44100 Hz / 16 bit,而蓝光的标准是 48000 kHz 以上,错误的音频设置会造成重采样,导致播放声音失真,不如蓝光播放机,这点很少有人提。
从 Windows 95 开始,Windows 在 DirectX 中引入了 DirectSound 作为音频播放接口,但存在高延迟、低动态、不稳定等问题。一些厂家联合发布了 ASIO 音频接口,允许软件如 DAW 独占声卡,以解决 DirectSound 的问题。从 Windows Vista 开启重写了音频堆栈,引入了 WASAPI,支持独占模式,DirectSound、MME 这些传统的接口被模拟为 Windows Audio Session 实例。
graph TD A[Applications] --> B[Sessions] B --> C["WASAPI (Windows Audio Session API)"] C -->|Exclusive Mode| D[Unmixed Audio Streams Rendered Directly to Audio Adapter] D --> E[No Other Application's Audio Plays, Signal Processing Has No Effect] C -->|Shared Mode| F[Application Renders Audio Streams] F --> G["Optional Per-Stream Audio Effects (LFX)"] G --> H[Global Audio Engine Mixes Streams] H --> I["Global Audio Effects (GFX) Applied"] I --> J[Rendered on Audio Device] J --> K["Host-Based Audio Processing (APOs)"] L[Audio Driver] -->|Kernel Mode| M[Operates in Kernel Mode Only] N[DirectSound and MME Emulated as Session Instances] --> B O["Windows Kernel Mixer (KMixer)"] -->|Completely Gone| P[Prevents DirectSound Hardware Acceleration] P --> Q[Removes Support for DirectSound3D and EAX Extensions] R[ASIO and OpenAL APIs Not Affected] --> C
不过 PotPlayer 不支持 ASIO、DSD,目前也只有对音频要求比较高的播放器如 Foobar2000 才能支持。且应该是处于兼容性考虑,默认使用 DirectSound 的方式来播放音频,这可能会导致与其他播放器抢占 Mixer 导致音频动态范围降低。
关于这个 WASAPI 还引入了一个叫做音频处理对象(APO)的东西,在这几年生产的 PC 上特别常见,电脑/主板厂商会增加什么杜比音效、DTS 音效 APO,这些 APO 会通过压缩等方法处理音频,从而使动态范围降低。部分声卡在安装原厂 APO 驱动后,还无法调高采样率。
方法
系统
建议升级到 Windows 10 1903 以上版本系统,避免不兼容的情况。
显卡
我们需要进入显卡的控制面板,将动态范围参数调整至“完全”,并根据设备的情况选择是否使用 10 bit 输出。
已知这种问题在 NVIDIA 的显卡上比较常见(So, fxxk NVIDIA),这边就以 NVIDIA 为例。
首先打开 NVIDIA Control Panel,如果找不到的话,需要您自行去 Microsoft Store 安装。
在显示 -> 更改分辨率,将对应显示器的动态范围参数调整至完全,输出颜色深度调到 10bpc 或者 8bpc(取决于显示器支持)。
(可选)在视频 -> 调整视频颜色设置,强制播放器输出完全动态范围。
Intel 和 AMD 由于不同版本的驱动配置差距较大,且本人无机器,此处暂不演示,以下截图转自 VCB-Studio:
现在三家显卡均可以在控制面板开启此功能。如果仍有无法在上述面板开启此设定的情况,那么请安装完成后请使用 C:\Program Files (x86)\Pure Codec\madVR\madLevelsTweaker.exe
将显示色彩范围调整到 0-255(在 Force PC levels 选项上打勾再点击 Apply 按钮并且重新启动)
另外还有一个比较重要的点,如果您使用的是双显卡混合输出笔记本,需要在显卡控制面板中将 C:\Program Files (x86)\Pure Codec\x64\PotPlayerMini64.exe
设置为高性能(独显),或使用独显直连。对于 Windows 10 以上系统,可以在 Windows 设置中指定显卡。
声卡
如果您对音质没有特殊要求,可以跳过此配置。
如果您是使用板载声卡,请卸载专用驱动,使用公版驱动,并禁用所有音效,并确保声卡的采样率大于或与您的音源匹配。
如果您是 HDMI 或 S/PDIF 连接音响/功放,可以在播放器处配置直通,可播放测试片源,在功放处查看是否能够点亮次世代音频技术。
PotPlayer
这边我们建议使用完美解码,避免过多折腾。
首先我们打开 完美解码设置
,注意这是一个独立的设置程序,并非 PotPlayer 的设置。
默认的配置为 D3D11 渲染,不使用 EVR 渲染,同时开启相关滤镜,方便大众使用。
我们这里为了进一步提高播放体验,调整为下图所示:
如果嫌 madVR 太卡的话,换成 MPCVR 即可,支持 10 bit、HDR、单层杜比视界。
到此就基本配置完了,就是这么简单。这就是用完美解码的理由。
当然,此时音频还是使用 DirectSound,我们需要启动 PotPlayer,进入选项 -> 声音,默认输出设备选择“内置 WASAPI 音频渲染器”,然后输出通道选择 24 位或更高。
madVR
madVR 我们只需简单处理一下即可,配置不难。
我们可以通过完美解码设置唤起 madVR 设置界面。
首先我们需要正确配置设备类型,此处我们使用的是显示器,那么选择 Digital Monitor / TV
即可。
进入 properties
,这里的 RGB output levels
和显卡的保持一致即可,native display bitdepth
根据面板的实际 bit 选择,如 6bit 抖 8bit 的面板,选择 7bit,这里选择 8bit。
calibration
的话,由于我们没有专业校色设备,所以无法设置,如果您的显示器是校准过的,可以选择 this display is already calibrated
,然后选择对应的色域。如果您有显示器的校色文件,可以选择 calibrate this display by using eternal 3DLUT files
,然后加载对应 3DLUT 文件。
display modes
通常无需额外配置。
hdr
的话,如果您的显示器不支持 HDR,那么可以设置 tone map HDR using pixel shaders
,然后输入您显示器的最大亮度尼特,然后观看时将您的显示器亮度调到最大。如果您有显示器的校色文件,可以选择 tone map HDR using eternal 3DLUT
,然后加载对应 3DLUT 文件。
相关参数可在网络上查询,无需自行测量。
接下来我们进行图像处理环节,不会调的保持默认即可。
对于 processing/artifact removal
(去伪影),我们打开去色带功能,强度保持默认的“low/high”即可。色带是最为常见的视频瑕疵之一,默认启用去色带是利远大于弊的。
对于scaling algorithm
(缩放算法),我们提供三套推荐的缩放算法相关配置,按对性能的要求分为低、中、高三档:
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) |
LL =“scale in linear light”
SL =“scale in sigmoidal light”
AR =“activate anti-ringing filter”
NGU Sharp 除了选择“luma doubling”质量以外,其余全部保留默认的“let madVR decide”即可
需要指出的是,这里对性能要求的高低并不绝对等同于画质的高低,“低”档设置的质量其实已经相当好了,而“高”档设置在一些低质量片源上反而有可能放大片源瑕疵。综合来说我们最推荐“中”档设置,是在画质、功耗和泛用性之间较为平衡的选择。
对于rendering/smooth motion
(补帧),我们建议在显示器上启用,因为显示器通常不支持设置如 23.976 Hz 的刷新率,避免出现卡顿感。
测试视频:https://alist.xrgzs.top/d/pxy/Video/%E5%B8%A7%E7%8E%87%E6%B5%8B%E8%AF%95.m2ts
如果您使用的是电视,通常支持这些 HDTV 制式,可以开启全屏独占模式(FSE,rendering/general settings/enable automatic fullscreen exlucsive mode
)使其自动切换匹配刷新率,无需补帧。
当然,如果您使用 madVR 就想实现补帧,可以保持 FSE 为关闭状态(完美解码默认),因为它带来的麻烦远多于好处。
参考
https://en.wikipedia.org/wiki/Technical_features_new_to_Windows_Vista#Audio_stack_architecture