抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

MPV

用了6年的 PotPlayer 有弹窗了, 实在不能忍. 本来打算用 MPC-HC 播放器代替的(现在作为备用播放器了), 它配置madVR渲染器XySubFilter都很方便, 而且默认是使用LAV Filters(这个好评, PotPlayer配置麻烦), 但是播放HDR视频的时候, 出现了色彩不准确的情况, 暂时还找不到原因,而MPV播放器就解决了这问题。

HDR视频色彩问题

MPV is a free, open source, and cross-platform media player for the command line. 一个使用命令行, 免费, 开源, 跨平台的视频播放器。这下 Windows 下的配置文件和 Linux 的配置文件可以共用了. PS: 基于mpv开发的第三方播放器也可以的。

MPV 播放 HDR 视频

Windows配置

安装 mpv

官网

Windows下载地址. 下载解压, 放到适合的位置之后, 进入installer目录进行安装(里面也有升级的ps脚本).

或者使用Scoop安装, 更方便管理. 需要有 extras 这个 bucket 存在. scoop bucket list 查看是否存在. 如果存在, 直接使用scoop install mpv即可, 不存在使用scoop bucket add extras添加。如果使用 scoop 安装的话,配置文件需要放在根目录的portable_config目录下,该目录的配置优先级比%APPDATA%/mpv/的优先级高,这样下面配置滤镜时也要注意下滤镜放的位置。

mpv使用手册

安装 vapoursynth

一款视频处理的插件, 和Avisynth类似. 依赖Python, 注意Python的版本, 最好一致.

python下载, 使用embed版本即可.

vapoursynth下载

两个下载完之后, 把vapoursynth和python目录下的所有文件放在mpv的安装根目录即可.

补帧方案

使用 MvTools

MvTools下载

下载之后把.dll放在\vapoursynth64\plugins目录下面.

脚本, 在配置文件中指定使用.

import vapoursynth as vs
core = vs.core
clip = video_in
vfps = int(container_fps*1e8)
dfps = 60000

def ffps(fps):
    rfps = int('%.0f' % fps)
    if ( abs(fps - (rfps/1.001)) < abs(fps - (rfps/1.000)) ):
        vfps,vden = rfps*1000, 1001
    else:
        vfps,vden = rfps*1000, 1000
    return vfps, vden

if (container_fps <= 30):
    vfps,vden = ffps(container_fps)
    print(container_fps, vfps, vden)
    
    clip = core.std.AssumeFPS(clip, fpsnum=vfps, fpsden=vden)
    _super  = core.mv.Super(clip, pel=2, sharp=1, rfilter=4,hpad=8,vpad=8,levels=0)
    mvbw = core.mv.Analyse(_super,   64, 64,    0, 
                                4,    0,  3, True, 
                             0,
                            lsad=10000,
                           overlap=0,overlapv=18,
                           badrange=0,badsad=10000,
                           dct=0,
                           search_coarse=4,
                          )
    mvfw = core.mv.Analyse(_super,   64, 64,     0, 
                                4,    0,  3, False, 
                             0, 
                            lsad=10000,
                           overlap=0,overlapv=18,
                           badrange=0,badsad=10000,
                           dct=0,
                           search_coarse=4,
                          )

    clip = core.mv.BlockFPS(clip,_super,mvbw,mvfw,num=dfps,den=vden,mode=2,ml=100.0,thscd1=970,thscd2=255,blend=False)

clip.set_output()

使用 SVP4

这个软件的pro版本在windows和mac下是收费的, 在linux是免费的.

在配置文件mpv.conf中加入input-ipc-server=mpvpipe开启SVP4补帧, 后台打开 SVP4 Pro, 测试打开视频, 如果出现 SVP 的OSD信息就配置成功了.

自定义补帧配置,新建一个配置文件, 自定义下配置参数如下:

Anime4K 着色器

看番神器,在4K显示器下开启之后,体验大大提升。

Anime4K下载

下载解压之后, 把解压的所有文件放在shaders文件夹即可, 在配置文件指定使用.

升级 Anime4K v4 之后, 效果增强了不少, 强烈建议升级, 以下是配置

  • Ctrl+1 - 1080p anime
  • Ctrl+2 - 1080p anime that has been downscaled to 720p
  • Ctrl+3 - 1080p anime that has been downscaled to 540p/480p
  • Ctrl+4 - older standard definition (720p/560p/480p) anime

input.conf文件中配置快捷键

CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_VL.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_L.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Modern 1080p->4K +Perceptual (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Restore_CNN_Light_VL.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_L.glsl;~~/shaders/Anime4K_AutoDownscalePre_x4.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Modern 720p->4K +Perceptual (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Modern SD->4K +Perceptual (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Restore_CNN_Light_VL.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_L.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Old SD->4K +Perceptual (HQ)"

CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"

对比图, 第一张没开启, 第二张开启后

常用脚本

mpv脚本使用

放在scripts文件夹, 使用lua语言.

缩略图插件

播放列表

官方插件

完整配置文件

mpv.conf配置文件, 播放器主要设置.

# Video settings
vo=gpu
gpu-api=d3d11 # windows默认使用
hwdec=nvdec-copy # 10系显卡以上建议用这个

# Video quality
scale=ewa_lanczossharp # 放大算法
dscale=mitchell # 缩小算法
dither-depth=10 # 是否开启色深抖动弥补色彩转换损失. 8bit的显示器写8, 10bit写10. auto 是根据 --gpu-api, 这个不一定正确


# Screenshot settings
screenshot-high-bit-depth=yes
screenshot-format=png # 截图格式
screenshot-template=G:\Pictures\screenshot\%f-%n # 截图保存位置
screenshot-tag-colorspace=yes # 使用适当的色彩空间标记屏幕截图
#screenshot-jpeg-quality       = 100  # <0-100> JPEG的最高质量,默认为90
#screenshot-jpeg-source-chroma = yes  # 用与源视频相同的色度半采样写入JPEG, 默认yes
#screenshot-png-compression    = 5    # <0-9> PNG压缩等级, 过高的等级影响性能, 默认为7
#screenshot-png-filter         = 5    # <0-5> PNG的压缩过滤器. 默认5即可实现最佳压缩率
#screenshot-webp-lossless      = yes  # 无损WEBP, 默认no
#screenshot-webp-quality       = 100  # 此项数值仅在 --screenshot-webp-lossless=no 时生效
#screenshot-webp-compression   = 3    # WEBP压缩等级, 使用有损WEBP时进一步降低图片质量, 默认为4 <0-6>


# OSC(On-Screen-Display) settings
osc=no # 屏蔽原OSC界面(内置的"osc.lua"脚本)
# border=no # 无边框
hidpi-window-scale=no # 是否执行hddpi缩放, 默认是yes
keep-open=yes # 播放完不退出
autofit-larger=80%x80% # 窗口模式下最大占屏幕的百分比
autofit-smaller=50%x50%  # 窗口模式下最小占屏幕的百分比
hr-seek-framedrop=no # [SVP补帧时推荐设置为no]跳转时丢帧

osd-on-seek=msg-bar # [no,bar,msg,msg-bar] 在跳转时间轴时显示的信息类型
osd-bar-w=100
osd-bar-h=2
osd-bar-align-y=-1
osd-border-size= 1
osd-fractions # 以秒为单位显示OSD时间(毫秒精度),有助于查看视频帧的确切时间戳
osd-playing-msg="${filename}" # 开始播放时短暂显示的信息:文件名
osd-duration=2000 # 设置OSD文本信息的持续时间(毫秒)(默认值:1000)


# Subtitle settings
sub-auto=fuzzy # 字幕加载
ass-shaper=simple
sub-ass-force-margins=yes # 字幕尽可能输出到黑边上
#sub-font="xxx" # 字幕字体
#sub-ass-vsfilter-aspect-compat=yes   # 播放非常规比例视频时拉伸ASS字幕来模仿传统的vsfilter行为, 默认开启
#sub-ass-vsfilter-blur-compat=yes   # 通过视频分辨率而不是.ass指定的分辨率缩放"\blur"标签, 默认开启

# Audio settings
volume=80 # 默认音量
volume-max=200 # 最大音量, 默认130
audio-file-auto=fuzzy # [默认no|exact|fuzzy|all] 自动加载同名外挂音轨(fuzzy为模糊名, exact为精确名)

# Scripts
load-scripts=yes # 自动挂载 /scripts/ 目录下的所有脚本, 默认是 yes.

# Miscellaneous settings
save-position-on-quit=yes # 记忆播放
priority=normal # 优先级


# Extensions
# Anime4K V3 Start (Deprecated)
# M → L → UL 性能要求越来越高, 处理结果越好
# 降噪 -> 去模糊 -> 加深线条 -> 细化线条 -> 放大(->额外->二次放大) -> 抗重采样伪影
# For 480/720p videos
# glsl-shaders="~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl;~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl;~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"

# glsl-shaders="~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl;~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl;~~/shaders/Anime4K_DarkLines_HQ.glsl;~~/shaders/Anime4K_ThinLines_HQ.glsl;~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"

# glsl-shaders="~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl;~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl;~~/shaders/Anime4K_Deblur_DoG.glsl;~~/shaders/Anime4K_DarkLines_HQ.glsl;~~/shaders/Anime4K_ThinLines_HQ.glsl;~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"

# For 1080p videos
# Remain as faithful to the original while enhancing details 增强细节的同时保留原来的特征
# glsl-shaders="~~/shaders/Anime4K_Denoise_Bilateral_Mode.glsl;~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"
# Improve perceptual quality 增强质量
# glsl-shaders="~~/shaders/Anime4K_Denoise_Bilateral_Mode.glsl;~~/shaders/Anime4K_DarkLines_HQ.glsl;~~/shaders/Anime4K_ThinLines_HQ.glsl;~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"
# Improve perceptual quality + deblur 增强质量和去模糊
# 降噪 Anime4K_Denoise_Bilateral_Mode
# 去模糊 Anime4K_Deblur_DoG
# 加深线条 Anime4K_DarkLines_HQ
# 细化线条 Anime4K_ThinLines_HQ
# 放大 Anime4K_Upscale_CNN_M_x2_Deblur
# 抗重采样伪影 Anime4K_RA_DoG.glsl
# glsl-shaders="~~/shaders/Anime4K_Denoise_Bilateral_Mode.glsl;~~/shaders/Anime4K_Deblur_DoG.glsl;~~/shaders/Anime4K_DarkLines_HQ.glsl;~~/shaders/Anime4K_ThinLines_HQ.glsl;~~/shaders/Anime4K_Upscale_CNN_L_x2_Deblur.glsl;~~/shaders/Anime4K_RA_DoG.glsl;~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl"
 
# Anime4K V3 End

# 开启svp插帧
input-ipc-server=mpvpipe

# shaders 缓存目录
gpu-shader-cache-dir="~~/shaders_cache"

# Filter settings
# vf-append=vapoursynth="~~/mvtools-standard.vpy" # mvtools 补帧插件

input.conf配置文件, 快捷键的设置, 例如加载或关闭某些插件.

# 开启/关闭Anime4K
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_VL.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_L.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Modern 1080p->4K +Perceptual (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Restore_CNN_Light_VL.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_L.glsl;~~/shaders/Anime4K_AutoDownscalePre_x4.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Modern 720p->4K +Perceptual (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Modern SD->4K +Perceptual (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl;~~/shaders/Anime4K_Restore_CNN_Light_VL.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_L.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl;~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl;~~/shaders/Anime4K_Restore_CNN_Moderate_S.glsl"; show-text "Anime4K: Old SD->4K +Perceptual (HQ)"

CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"

# 开启/关闭 mvtools 补帧标准版
CTRL+5 vf toggle vapoursynth="~~/mvtools-standard.vpy"

# 开启/关闭 SVP 插件
# CTRL+3 vf toggle input-ipc-server=mpvpipe

# 清除所有着色器
# CTRL+4 change-list glsl-shaders clr ""

# 替换默认显示的难看osd播放列表为高级列表
F8 script-binding playlistmanager/showplaylist

# 默认快捷键记录, 注意大小写
# 完整的内建快捷键方案见 https://github.com/mpv-player/mpv/blob/master/etc/input.conf 

# 播放操作
>     playlist-next # 切换到列表中的下个文件
#NTER playlist-next # 切换到列表中的下个文件
<     playlist-prev # 切换到列表中的上个文件
[  add speed -0.1 # 降速播放(最小0.01)
]  add speed 0.1  # 增速播放(最大100)
#BS set speed 1.0 # 重置播放速度为1倍
#f cycle fullscreen # 全屏
#T cycle ontop # 置顶

o show-progress # 临时显示时间码/进度条
m cycle mute # 静音
#p cycle pause # 暂停状态
#SPACE cycle pasue # 同p
#. frame-step # 逐帧步进
#, frame-back-step # 逐帧步退

# 字幕操作
#z add sub-delay -0.1         # 延迟字幕100ms
#Z add sub-delay +0.1         # 预载字幕100ms
#x add sub-delay +0.1
#G add sub-scale +0.1         # 增大字幕
#F add sub-scale -0.1         # 减小字幕
#r add sub-pos -1             # 字幕上移
#R add sub-pos +1             # 字幕下移

# 截图操作
#s                         screenshot                 # 截屏(有字幕、有OSD)输出原始分辨率
S                         screenshot video           # 截屏(无字幕、无OSD)输出原始分辨率
#Ctrl+s                    screenshot window          # 截屏(有字幕、有OSD)输出实际分辨率
#Alt+s                     screenshot each-frame

# 外置脚本
# Ctrl/Alt+a 上/下切换音频输出设备
# F8 或 Shift + Enter 打开高级播放列表
# Ctrl + O 打开资源管理器加载文件

测试播放

打开视频, 按i键查看. 红色圈出部分有就说明补帧滤镜加载了.

接着继续按2查看Anime4K着色器是否加载了, 如果加载如下图

Mac配置

在MAC系统下,可以使用官方的MPV,使用基于MPV开发的IINA,功能完善,之后配置可以更省事。

因为使用IINA,所以以上的配置不是所有都适用于MAC。还有一点要注意的是,插帧mvtools插件只能在windows下使用,在mac下,想要补帧的话可以使用SVP4。

官网

基本配置

安装完成之后,打开IINA的偏好设置,打开高级设置,设置好配置文件的位置,之后相关配置文件都会放在该文件夹之下。

打开访达,shift + command + G,输入 ~/.config/mpv 进入mpv配置文件夹。

然后把Anime4K的shaders文件夹复制到这里,而mpv.confinput.conf的配置如下。

mvp.conf配置文件

hwdec-codecs=all
hwdec=auto-copy
opengl-early-flush=no

input.conf配置文件,因为我的是macbook air,显卡配置较低,所以Anime4K的加载配置使用了低配的shader。

# 语法
# [Shift+][Ctrl+][Alt+][Meta+]<key> [{<section>}] <command> ( ; <command> )*
# 开启/关闭Anime4K
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A (Fast)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B (Fast)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C (Fast)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode A+A (Fast)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode B+B (Fast)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_S.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"; show-text "Anime4K: Mode C+A (Fast)"

CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"

# 替换默认显示的难看osd播放列表为高级列表
F8 script-binding playlistmanager/showplaylist

# 默认快捷键记录, 注意大小写
# 完整的内建快捷键方案见 https://github.com/mpv-player/mpv/blob/master/etc/input.conf 

# 播放操作
>     playlist-next # 切换到列表中的下个文件
#NTER playlist-next # 切换到列表中的下个文件
<     playlist-prev # 切换到列表中的上个文件 
[  add speed -0.1 # 降速播放(最小0.01)
]  add speed 0.1  # 增速播放(最大100)
#BS set speed 1.0 # 重置播放速度为1倍
#f cycle fullscreen # 全屏
#T cycle ontop # 置顶

o show-progress # 临时显示时间码/进度条
m cycle mute # 静音
9 add volume -1 # 增加音量
0 add volume 1
#p cycle pause # 暂停状态
#SPACE cycle pasue # 同p
#. frame-step # 逐帧步进
#, frame-back-step # 逐帧步退

使用SVP4补帧

官网下载安装SVP4,然后打开IINA的偏好设置的高级设置,在额外mpv选项中添加以下2个参数

input-ipc-server=/tmp/iinasocket
hr-seek-framedrop=no

视频/音频设置中,硬件解码器选择 自动(拷贝)。

然后重启IINA,后台运行SVP4,ctrl+1 开启Anime4K。

评论