分享一下自己的mpv配置
本帖最后由 cczzhh 于 2021-1-13 05:17 编辑2017.11.20更新:
禁用了刷新率切换,主使用interpolation。如要启用刷新率切换请手动去掉注释。
理清了nnedi3和ravu的shaders作者提供的主目录、gather文件夹和compute文件夹三个版本的关系
2017.11.21更新:
参照 https://github.com/haasn/gentoo- ... me/nand/.mpv/config 新增了几项设置。
2017.11.27更新:
autospeedwin的作者merge了我的pull request,我把round计算的帧率改成了floor计算。但暂停的部分仍为原来的部分,如果能work的话可以试试github上的,不行再用老方法,都不行。。我也没办法了。
2017.11.28更新:
给940M级显卡的常见笔记本电脑用户做了个懒人包,见http://bbs.acgrip.com/forum.php?m ... 743&page=8#pid33497
(太旧了,不要下)
2017.12.05:发现2017.12.03更新的nightly版mpv能正确读外挂字幕文件名里的language code了。字幕文件要命名成:
视频文件名.xxxx-lan.后缀或者
视频文件名.xxxx_lan.后缀lan就是language code,只能是2或3字符。比如sc,chs。xxxx用于放字幕组信息。或者直接没有xxxx-部分也行。
2017.12.09:autoload-sub-in-mka.lua完成了它的使命,现在mpv本身已解决了这个问题。见http://bbs.acgrip.com/thread-2769-1-1.html
2017.12.10:因为NNEDI3的启用分辨率由0.8倍以内变为1/根号2以内,所以少许修改了下auto-profile的4倍的分辨率判断。
2017.12.14:使用glsl-shaders-clr后,现在auto-profiles选择不同的profile时能正确取消掉之前其他profile带来的影响。
2017.12.20:还是让dither-depth自己判断
2017.12.31:加入KrigBilateral,在用NNEDI3没法用RAVU的时候使用
2018.03.16:重新说明RAVU-chroma无法和NNEDI3一起使用
2018.12.10:说明blend-subtitles=yes和HDR视频的冲突
2018.12.11:建议在4K视频上采用较高的线程数(vd-lavc-threads)
2019.01.06:不再推荐adaptive-antiring,转而推荐SSimSuperRes作为antiring的手段。(igv自己删除了adaptive-antiring,只建议使用SSimSuperRes。)
2019.01.13:1. 在auto-profile的条件判断中弃用container-fps,只用estimated-vf-fps;2. 加入save-position-on-quit,并说明mpv配置文件夹需要写入权限。
2019.01.14:更新autoload.lua(上游修正了一个bug,相应地把改过的版本更新了)
2019.02.24:更新两项关于libass对vsfilter兼容性的设置
2019.02.25:根据视频是否是HDR/是否是21:9自动开关blend-subtitles,以及使21:9视频的字幕输出到黑边上
2019.03.08:ravu smoothtest更名为ravu ar
2019.03.10:自mpv https://github.com/mpv-player/mp ... f15be9f267f9cb2230e 和 RAVU https://github.com/bjin/mpv-pres ... 7320451cb32c0d50162 之后,RAVU chroma已经能和luma prescaler一起工作
2019.03.13:SSimDownscaler需要linear-downscaling=no;移除seek-show-position.js(一直以来都理解错了,这个脚本完全不需要);引入acme-0.5x;简化profile的写法。
2019.06.17:mpv的一些更新:
1. 自mpv ae1c489后,以及KrigBilateral.glsl随后的更新(OFFSET ALIGN),KrigBilateral就能自动处理offset了(之前是在脚本里写死了0.5的偏移,2018.10.21前的版本是没有考虑偏移)。
2. mpv c9e7473起可以使用error diffusion dithering。具体开启方式是
dither=error-diffusion前提是已经开了dither,不开error diffusion时默认是fruit算法。
error diffusion也提供了很多算法,
默认
error-diffusion=sierra-lite觉得显卡太闲可以试试
error-diffusion=burkes 3. bjin不再推荐RAVU的antiring版本。本帖也只是拿来做做chroma upscaling,目前仍有ravu-zoom-r4-chroma这个chroma upscaler,但简单起见都改用KrigBilateral得了。
2019.08.22:已知error-diffusion在特定条件下会使得d3d11蓝屏,见 https://github.com/mpv-player/mpv/issues/6814所以待这个issue解决前要么d3d11不启用error-diffusion,要么换vulkan后端。
2019.09.16:autospeedwin有bug用不了,见427楼修改过的版本。
2019.10.31:mpv已支持windows下的10 bit输出和HDR colorspace的设定,但尚未完全支持HDR。
2019.11.03:模板配置文件中不再写vulkan或者opengl。
2019.12.11:去除行内注释,否则直接复制粘贴的conf有参数有多余尾部空格的问题。
2020.01.08:自build-20200105之后,shinchiro的build默认使用fontconfig,而且默认不读取系统字体,需要更改fonts.conf
2020.01.15:build-20200112起已同时支持directwrite和fontconfig,0105版存在的问题已解决。
2021.01.12:好久没上论坛,才看到有人说auto-profiles内建了。用法也不一样了,暂时懒得研究,看官方文档吧
https://mpv.io/manual/master/#conditional-auto-profiles
有无好心大佬做个教程,我这帖抛砖引玉的砖可以退役了
======================以下正文======================
在发现mpc-be和potplayer的wasapi audio render在我的设备上都会导致A/V desync后,狠了下心准备彻底转mpv了。由于坛子里讲mpv的帖是真的少:
http://bbs.acgrip.com/forum.php?mod=viewthread&tid=1009
http://bbs.acgrip.com/forum.php?mod=viewthread&tid=1603
而且VCB教程里也完全没有提及过mpv,所以想分享下对mpv的配置积累的经验,就当抛砖引玉吧。顺便熟练使用mpv的前辈们可以帮忙看一下我这配置里是否有不合理的地方。
一开始接触mpv是在玩SVP的时候,只有mpv支持10bit输出给SVP,所以当时用着SVP内置的mpv。由于2大原因还是放不下madVR系列,但其中色彩管理部分已经由@boday解惑(http://bbs.acgrip.com/forum.php?m ... pid=33157&ptid=2721),剩下的就只有image quality部分了。但又详细检索下发现,至少NNEDI3作为luma upscaler还是能用的,chroma也有RAVU,就不再那么惦记NGU啦。
我这篇只讲windows下的使用,Linux和macOS的设置可能会有差异(比如d3d11和wasapi只在windows上有)。
首先是安装:https://sourceforge.net/projects/mpv-player-windows/files/64bit/
解包到有用户写入权限的位置,比如C:\。管理员权限运行installer/mpv-install.bat,设置默认程序。
一般只要下一次,因为解包后里面自带一个更新用脚本updater.bat。想要更新只需右键管理员权限运行这个bat文件即可。只是要注意的是这个脚本要高版本powershell的支持,win7自带的powershell 2是不行的。我装了5,见:https://www.microsoft.com/en-us/download/details.aspx?id=54616
Win10自带的版本够高,不需要再自己更新powershell。
如果用的是build-20200105,那么请更新,只有那一个版本存在加载字体的问题。
贴出mpv.conf,注释里大概讲讲理由吧,然后再贴出配置中需要使用的额外脚本。
由于本文的配置需要较高的计算量,所以请在显卡控制面板中添加mpv,将使用mpv时的电源模式设置为“自适应”(默认“最佳功率”发挥不出显卡性能)。双显卡用户请设置让mpv以独立显卡运行。
该配置只在GTX970以及1080p显示器上测试过,其下的显卡和其上的显示器是否掉帧需自行测试。
不同分辨率的显示器的配置需要根据自己的情况完全改写。(一个2K屏的例子见:http://bbs.acgrip.com/forum.php?m ... ptid=2730&pid=42709)
# 软解
hwdec=no
# 高优先级
priority=high
profile=gpu-hq
### gpu-api的选择?
## macOS:只有opengl可选
## Linux:vulkan或者opengl,推荐vulkan
## Windows:vulkan、d3d11及opengl都可选。三者理论上vulkan性能最好,但依然推荐d3d11。
## 通过d3d11 api,目前mpv已支持windows的10 bit输出和HDR colorspace的设定。
## HDR metadata pass on正在跟进,独占全屏正在跟进。
#----------------------------------------
### 使用d3d11 (mpv对于windows的默认。显卡注意开自适应电源模式)
gpu-api=d3d11
# 通过d3d11-adapter可以设定mpv使用哪块显卡。详见文档:https://mpv.io/manual/master/#options-d3d11-adapter
# 如果需要记忆上次播放的位置,去掉下面这行的注释。不能与SVP共存,使用SVP必须把此项设为no。
#save-position-on-quit
# 注意,需要mpv.conf所在文件夹有用户写入权限,或者用watch-later-directory=路径来手动指定。
# mpv.conf放APPDATA里是不会有问题的,有问题的是放mpv安装目录但mpv安装目录本身需要管理员权限
# may help with 4K videos
vd-lavc-dr=yes
opengl-pbo=yes
# 如果要插其他视频滤镜,比如deint或者SVP,就要去掉下面这行的注释
#hr-seek-framedrop=no
# "ReClock" replacement
video-sync=display-resample
#video-sync-max-video-change=5
temporal-dither
dither-size-fruit=7
# 默认6。会稍微延缓mpv启动
# 有兴趣也可以测试下error diffusion算法
# smooth motion
interpolation
# interpolation使用的算法。详见https://mpv.io/manual/master/#options-tscale
# 一些讨论见 https://github.com/mpv-player/mpv/issues/2685
# 目前的默认为mitchell。总体而言mitchell更平滑(当然不好和SVP插帧比),但会有模糊。oversample没有模糊,但不平滑(基本还原24帧的样子)
# 具体选择哪个请依据自身需求来
tscale=oversample
# 想看log就取消这行的注释。mpv.log会保存到桌面
#log-file="~~desktop/mpv.log"
icc-profile-auto# 启用校色
icc-3dlut-size=256x256x256
# 默认64x64x64。会稍微延缓mpv启动
# 在mpv.conf所在目录下建一个 shaders_cache 空文件夹,以存放编译好的GPU shaders,加速启动。
# 注意!如果不放APPDATA下,确保该文件夹有用户写入权限。
gpu-shader-cache-dir="~~/shaders_cache"
# 播放结束后不退出
keep-open=yes
# 始终处于最前阶段。配合ontop-playback.lua可以使得暂停之后解除保持最前端。
ontop
# 对于vulkan,使用ontop容易让驱动选择进入独占全屏。d3d11需要额外的选项,等https://github.com/mpv-player/mpv/pull/6329实现
# 为了应对VFR,禁用刷新率切换
# 下面这个脚本选项主要是个autospeedwin(自动调节显示器的刷新率)用的
#script-opts=autospeed-nircmd=true,autospeed-speed=false,autospeed-nircmdc="C:\nircmd-x64\nircmdc.exe",autospeed-monitor=0,autospeed-dwidth=1920,autospeed-dheight=1080,autospeed-bdepth=32,autospeed-rates="23;24;25;29;30;50;59;60",autospeed-exitrate=60,autospeed-minspeed=0.9,autospeed-maxspeed=1.1,autospeed-osd=true,autospeed-osdtime=10,autospeed-osdkey=y,autospeed-estfps=false,autospeed-spause=4
# 注意需要自己下载nircmdc,然后在autospeed-nircmdc里给出绝对路径。或者把nircmdc.exe所在位置加到PATH里
# autospeed-monitor=0是主显示器,1、2、3……是其他副显示器
# dwidth dheight bdepth 宽高和位深
# autospeed-rates="23;24;25;29;30;50;59;60",autospeed-exitrate=60 显示器支持的刷新率和退出时应返回的刷新率。23指23.976
# autospeed-spause=4 自动暂停的时间,秒为单位
# WASAPI音频输出(Windows)
# 其他系统请相应更改音频输出方式
ao=wasapi
# 需要独占音频则去掉注释。开启会使得其他程序没声音。
#audio-exclusive=yes
# 如果双声道系统播放多声道影片时有的声道声音没出现,尝试强制设定为双声道
#audio-channels=stereo
# 规格化:
#audio-normalize-downmix=yes
# 多声道音轨downmix成双声道时,如果觉得背景音过响,角色台词声音小,尝试看看这个:https://github.com/mpv-player/mpv/issues/6563
sub-auto=fuzzy
sub-file-paths=subs
slang=chi,zh-CN,sc,chs
#sid=1
# 字幕显示出来和xy-subfilter不一样?尝试启用下面的设置
# 关乎字幕是否随视频拉伸
#sub-ass-vsfilter-aspect-compat=no
# 关乎字幕模糊的设定
#sub-ass-vsfilter-blur-compat=no
# 即使都用上了也不一致?那不是这两个选项的问题,重新注释掉这两行,回帖问吧。(多半是vsfilter/libass其中一个的bug)
audio-file-auto=fuzzy
#audio-file-paths=audio
alang=jpn,ja,eng,en
#aid=1
# 暂时无法根据其他的metadata选择轨道,mpv又默认偏好外挂轨道,常常选到我不想要的音轨
# 有类似情况的话就用aid=1始终选择第一条音轨再自己手动调吧
# 设计者也是这么推荐的:https://github.com/mpv-player/mpv/issues/967#issuecomment-94744964
screenshot-format=png
screenshot-tag-colorspace=yes
screenshot-high-bit-depth=yes
#screenshot-png-compression=0
#screenshot-png-filter=0
# 根据视频是否是HDR以及视频aspect ratio决定是否启用blend-subtitles的profile
# 目前HDR->SDR建议关闭blend-subtitles,见https://github.com/mpv-player/mpv/issues/6368
# 如果hdr-compute-peak将来继续改进可能可以兼容blend-subtitles
profile-desc=cond:(p["video-params/primaries"]=="bt.2020" or p["video-params/aspect"]>=2.0)
blend-subtitles=no
# 使字幕输出在黑边上
sub-ass-force-margins=yes
profile-desc=cond:(p["video-params/primaries"]~="bt.2020" and p["video-params/aspect"]<2.0)
blend-subtitles=yes
sub-ass-force-margins=no
# 以下根据分辨率和视频帧率设置不同的升/降阶算法,以期获得在能不掉帧的情况下达到最好的效果
# 创建一个基于gpu-hq,用于将一些参数回归到默认的profile:
profile=gpu-hq
## !!! 使用fbo-format=rgba16hf可能能提高效率
fbo-format=rgba32f
## !!! 使用fbo-format=rgba16hf可能能提高效率
vd-lavc-threads=0
# 1080 * 1.414213 / 4 = 381.8
# 240p 360p,启用两次倍增以达到4倍.
profile-desc=cond:(p["video-params/w"]<=678 and p["video-params/h"]<=381)
profile=high_quality
glsl-shaders-clr
glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
# 1080 / 16 * 9 = 607.5
# 480p 576p
profile-desc=cond:((p["video-params/w"]<1080 and p["video-params/h"]<608) and (p["video-params/w"]>678 or p["video-params/h"]>381))
profile=high_quality
glsl-shaders-clr
glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
glsl-shaders-append="~~/shaders/nnedi3-nns64-win8x4.hook"
# 1080 * 1.414213 / 2 = 763.7
# 640p 720p 30fps
profile-desc=cond:((p["video-params/w"]<1358 and p["video-params/h"]<764) and (p["video-params/w"]>=1080 or p["video-params/h"]>=608) and p["estimated-vf-fps"]<31)
profile=high_quality
glsl-shaders-clr
glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
# 640p 720p 60fps
profile-desc=cond:((p["video-params/w"]<1358 and p["video-params/h"]<764) and (p["video-params/w"]>=1080 or p["video-params/h"]>=608) and p["estimated-vf-fps"]>=31)
profile=high_quality
glsl-shaders-clr
glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
glsl-shaders-append="~~/shaders/SSimSuperRes.glsl"
# SSimSuperRes推荐关闭sigmoid-upscaling。所以在其他不用SSSR的profile中都要重新设为yes(通过重新设定一遍profile=gpu-hq)
sigmoid-upscaling=no
# 另一个profile的例子
profile=high_quality
glsl-shaders-clr
glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
# 1080p
profile-desc=cond:((p["video-params/w"]<=1920 and p["video-params/h"]<=1080) and (p["video-params/w"]>=1358 or p["video-params/h"]>=764))
profile=KrigBilateral
# 1440p
profile-desc=cond:((p["video-params/w"]<=2560 and p["video-params/h"]<=1440) and (p["video-params/w"]>1920 or p["video-params/h"]>1080) and p["estimated-vf-fps"]<31)
profile=KrigBilateral
# 4K videos
# low fps: use SSIM to downscale
profile-desc=cond:((p["video-params/w"]>2560 or p["video-params/h"]>1440) and p["estimated-vf-fps"]<31)
profile=high_quality
glsl-shaders-clr
glsl-shaders-append="~~/shaders/SSimDownscaler.glsl"
# SSimDownscaler要求。需要在其他profile中重新设为yes(通过重新设定一遍profile=gpu-hq)
linear-downscaling=no
# high fps: use no glsl-shaders
profile-desc=cond:((p["video-params/w"]>1920 or p["video-params/h"]>1080) and p["estimated-vf-fps"]>=31)
glsl-shaders-clr
# 如果是1080p屏幕播放4K,可以使用https://gist.github.com/bjin/15f307e7a1bdb55842bbb663ee1950ed
# glsl-shaders-append="~~/shaders/acme-0.5x.hook"
# 可以绕过chroma upscaling,并且把之后颜色转换的计算量从4K级降到1080p级。
fbo-format=auto
vd-lavc-threads=16
# 4K HEVC HDR 60fps软解压力很大,默认vd-lavc-threads=0自动识别逻辑核数,分配核数+1个线程,但往往不够,不能将CPU性能压榨到极限,强行分配更多线程数以提高软解性能。
# 或者直接开硬解,如果显卡支持的话
hwdec=yes
注意!使用论坛的“复制代码”按钮复制后,粘贴到记事本里,最后保存时确认如下勾选:
保存类型选择所有文件,编码选择UTF-8。对input.conf也一样需要这么设置。
另外注意,删除行内以#开头的注释时,要同时删除掉多余的空格,行末不要有多余的空格。
使用到的额外脚本有:
# https://github.com/mpv-player/mpv/blob/master/TOOLS/lua
autocrop.lua # Shift+c自动切黑边,再按Shift+c复原
autodeint.lua # Ctrl+d 让脚本自动判断需不需要反交错
autoload.lua # 自动加载同目录中的文件
ontop-playback.lua # 暂停播放后窗口不再保持最前
pause-when-minimize.lua# 最小化时暂停
# https://github.com/VideoPlayerCode/mpv-tools/
cycle-video-rotate.lua # 使用快捷键旋转视频
# https://github.com/kevinlekiller/mpv_scripts/tree/master/autospeedwin
autospeedwin.lua # 自动切换刷新率
# https://github.com/rossy/mpv-open-file-dialog
open-file-dialog.lua # Ctrl+o 选择要播放的文件,再也不用手动拖文件进来或者从命令行启动了
#stats.lua # 这个不用单独下了,mpv自带此功能了。用来看profile是否正确工作。i短时间显示,shift+i始终显示osd。按数字键1和2切换两个tab
# 新增可选https://github.com/fbriere/mpv-scripts/blob/master/scripts/tree-profiles.lua
tree-profiles.lua # 可依据文件路径设置profile
在mpv.conf所在目录(%APPDATA%/mpv或mpv安装目录下的portable_config子目录 )下建scripts目录放进去。由于已知的lua的限制,如果你的%APPDATA%路径里存在非英文字符,可能导致lua脚本加载失败。建议将mpv放在纯英文路径下(同时也要有用户写入权限,比如C:\mpv\),并使用portable_config目录存放脚本和配置。
这些脚本都能在mpv的github页面的wiki里找到
https://github.com/mpv-player/mpv/wiki/User-Scripts
autospeedwin小修改了下,见附件。暂停在我这不能正常工作的原因未知,只好改成会有小黑框弹出来的旧方法。
作者merge了我的pull request,如果github上下的脚本的暂停能正常工作,只是帧率切换有误差(23.976切成24)的话,现在的应该对了。如果暂停不行就用附件里的吧,都不行?那我也不知道为啥了。
2019.09.17: 我传的autospeedwin有bug用不了,见427楼修改过的版本。
autoload如果不想自动加载裸音频文件的话,把extensions里的音频格式注释掉
EXTENSIONS = Set {
'mkv', 'avi', 'mp4', 'ogv', 'webm', 'rmvb', 'flv', 'wmv', 'mpeg', 'mpg', 'm4v', '3gp',
-- Add some other video formats
'mts', 'mov', 'ts', 'rm',
-- Do not load audio files into playlist
--'mp3', 'wav', 'ogv', 'flac', 'm4a', 'wma', 'ogg', 'opus',
}懒的话也直接下附件里的吧。
input.conf是用于控制mpv快捷键的配置文件,具体解释见官方文档:https://mpv.io/manual/master/#input-conf
主要语法是:
按键 命令 [命令参数]此配置文件放置于和mpv.conf同级目录下。
https://github.com/mpv-player/mpv/blob/master/etc/input.conf
这个链接是input.conf的默认值(注意这个文件全被注释掉了),据此可以对默认按键进行更改(如果有需要的话)。
一般而言如果对默认操作方式比较满意的话不需要创建这个文件。如果对旋转视频有需求,使用cycle-video-rotate.lua的话,那需要在input.conf中配套加入:
# cycle-video-rotate.lua
Alt+LEFT script-message Cycle_Video_Rotate -90
Alt+RIGHT script-message Cycle_Video_Rotate 90然后即可用Alt+方向键左右旋转视频。
使用到的shaders有(上面的wiki页面里也多少都提到了):
nnedi3-nns64-win8x4.hook # https://github.com/bjin/mpv-prescalers/tree/master/compute注意主目录下有一份,然后compute和gather下也各有一份。按作者说法,compute和gather需要更高版本的opengl支持,建议试过不会蓝屏或画面扭曲再使用。compute可能比gather更快一些,但需要以自己实测为准。参考https://github.com/bjin/mpv-prescalers/wiki/Performance
nnedi3-nns32-win8x4.hook # neuron数从16到256都有。高neuron数要较长的编译时间,渲染开销也会较大,提升也有限
KrigBilateral.glsl
SSimSuperRes.glsl
SSimDownscaler.glsl # Bilateral,SSSR和SSimDownscaler都在 https://gist.github.com/igv 大陆可能需要爬梯子在mpv.conf所在目录下建shaders目录放进去。
288楼给出了一个链接:https://artoriuz.github.io/mpv_upscaling.html
就各种算法给出了详细的评测(速度,效果),请结合这篇以及自己的截图对比,根据自己机器的机能和使用情况来选择。(据此数据FSRCNNX_x2_8-0-4-1.glsl有比NNEDI3更好的性能和更好的表现,具体情况如何还请各位自行测试。)
注意!下载任何脚本/shader文件都不推荐复制粘贴到空文本里,尤其是shader文件,文末换行符缺失会导致编译失败。强烈推荐点github的raw按钮,然后右键另存为,这样文件内容和扩展名本身就是对的。
如果想要4倍增画面(比如在2K或以上分辨率的显示器上看480p),则需要调用两次NNEDI3。比如第一次倍增使用64 neurons,第二次倍增用32 neurons:
glsl-shaders-append="~~/shaders/nnedi3-nns64-win8x4.hook"
glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
NOTE: RAVU-chroma存在一个限制:无法和luma prescaler一起用。所以NNEDI3无法和RAVU-chroma一起用。所以如果想luma和chroma都使用外部shaders,大致有如下的组合方式:
1,NNEDI3 + Bilateral (先NNEDI3升频luma,再用bilateral以升过的luma为参考升频chroma)
2,RAVU-chroma + RAVU-rgb或RAVU-yuv (RAVU-chroma倍频chroma后,yuv合并/转化为rgb,再一起升频)
孰优孰劣自己判断吧,个人倾向于第一种,毕竟luma的升频更为重要。
在显卡性能不是很够时,完全可以降低chroma升频计算量的分配,直接使用NNEDI3+内置ewa系chroma upscaler(甚至用默认的spline36也成)。
见更新记录2019.03.10,如果你用的版本够新,此限制已经不存在。
主要参考:
1,官方文档:https://mpv.io/manual/master/
2,https://iamscum.wordpress.com/videoplayback-guide/mpv-conf/
3,https://github.com/haasn/gentoo- ... me/nand/.mpv/config
差不多就是这些,希望能帮到近期可能想试试mpv的人。{:5_201:}
--2019.04.05:
(看一遍主站的科普:https://vcb-s.com/archives/category/kb 尤其是2,3,5)
(提任何问题请勿以别人可以靠想象力帮你解决为前提。附件附上完整的配置文件和log文件是基本。)
(如果是关于mpv有没有什么功能,先去官方文档仔细搜索:https://mpv.io/manual/master/,确实没有再去https://github.com/mpv-player/mpv/issues搜索,确保你知道怎么用英文描述,很可能是个没有的功能而且有人提过request,给点个赞就行了。比如打开新的文件在原来的播放器里打开而不是打开第二个mpv,这个是single instance mode:https://github.com/mpv-player/mpv/issues/4954)
(如果是脚本相关的,再仔细看看https://github.com/mpv-player/mpv/wiki/User-Scripts有没有已经能实现你需要的功能的脚本,总有类似的脚本可以参考自己去改,如果没有,别人愿意不愿意帮你实现也纯看兴趣,除非你有付钱。)
autospeed不能在退出mpv后把刷新率再改回去吧,还是有点麻烦的。
配置文件除了%APPDATA%/mpv,也可以放到mpv.exe所在目录的portable_config子目录。
stats.lua现在合并到主干了,不用单独下载了。 cylx 发表于 2017-11-19 23:12
autospeed不能在退出mpv后把刷新率再改回去吧,还是有点麻烦的。
配置文件除了%APPDATA%/mpv,也可以放到m ...
可以呀,试试我改过的autospeedwin。
stats确实集成进去了,那我删了它
profile=gpu-hq 已经包括了 deband,不用单独再写了。
既然用了 interpolation,额外根据片源去改动屏幕刷新率的意义何在?
tscale=oversample 并不客观上比其他的“好”,只是唯一能在消除 pulldown judder 同时能维持原帧率观感的算法,其他的比 oversample 更顺滑的同时也更模糊,两者之间的平衡点是个很主观的事情。
另外,音频强制 96 khz 输出我认为毫无实际意义…… 本帖最后由 cczzhh 于 2017-11-20 08:44 编辑
boday 发表于 2017-11-20 07:49
profile=gpu-hq 已经包括了 deband,不用单独再写了。
既然用了 interpolation,额外根据片源去改动屏幕刷 ...
profile=gpu-hq 已经包括了 deband,不用单独再写了。
是,只是预留一个位置以防会想关闭deband(已修改正文)
既然用了 interpolation,额外根据片源去改动屏幕刷新率的意义何在?
关于这点不用担心,mpv官方文档里写
--interpolation-threshold=<0..1,-1>
Threshold below which frame ratio interpolation gets disabled (default: 0.0001). This is calculated as abs(disphz/vfps - 1) < threshold, where vfps is the speed-adjusted video FPS, and disphz the display refresh rate. (The speed-adjusted video FPS is roughly equal to the normal video FPS, but with slowdown and speedup applied. This matters if you use --video-sync=display-resample to make video run synchronously to the display FPS, or if you change the speed property.)
The default is intended to almost always enable interpolation if the playback rate is even slightly different from the display refresh rate. But note that if you use e.g. --video-sync=display-vdrop, small deviations in the rate can disable interpolation and introduce a discontinuity every other minute.
Set this to -1 to disable this logic.
所以只要不是刷新率低于23.9736或高于23.9784对23.976的视频都不会启用interpolation(我实际播放的时候23.976的设备上stats里没有出现interpolation),所以这个设置在当显示器有指定刷新率的时候,自动不会启用,当没有指定刷新率只能以默认刷新率运行的时候,会启用。
tscale=oversample 并不客观上比其他的“好”,只是唯一能在消除 pulldown judder 同时能维持原帧率观感的算法,其他的比 oversample 更顺滑的同时也更模糊,两者之间的平衡点是个很主观的事情。
这点我没有研究,纯粹根据官方文档的说明
oversample
A version of nearest neighbour that (naively) oversamples pixels, so that pixels overlapping edges get linearly interpolated instead of rounded. This essentially removes the small imperfections and judder artifacts caused by nearest-neighbour interpolation, in exchange for adding some blur. This filter is good at temporal interpolation, and also known as "smoothmotion" (see --tscale).
另外,音频强制 96 khz 输出我认为毫无实际意义……
确实,我只是弄着玩的(已修改正文
在linux下可以用jack音频服务有类似win上asio的效果,jack也有win版本,有兴趣可以鼓捣下.需要自己启动守护进程.
ao=jack$ jackd -d alsa -d hw:Audio -r 96000 -p 512 -n4 -P -z
然后在linux下使用N卡闭源驱动,会出现几个CUVID解码器,这些解码器似乎就是hwdec+copyback.但是负载会比普通硬解来得低
$ mpv --vd=helpvd=hevc_cuvid,h264_cuvid,mjpeg_cuvid,mpeg1_cuvid,mpeg2_cuvid,mpeg4_cuvid,vc1_cuvid,vp8_cuvid,vp9_cuvid
https://github.com/mpv-player/mpv/blob/master/video/out/filter_kernels.c#L338
根据源码显示很多算法只是内置了不同的参数.
scale=ewa_lanczossoft
cscale=ewa_lanczossoft
opengl-shaders-append="~~/shaders/antiring.hook"
我目前就是用这个了,内部精度也是rgba16f,破本本更本带不动更高设置.
antiring.hook就是mpv的wiki里介绍的那个 cczzhh 发表于 2017-11-20 08:36
是,只是预留一个位置以防会想关闭deband(已修改正文)
>所以只要不是刷新率低于23.9736或高于23.9784对23.976的视频都不会启用interpolation(我实际播放的时候23.976的设备上stats里没有出现interpolation),所以这个设置在当显示器有指定刷新率的时候,自动不会启用,当没有指定刷新率只能以默认刷新率运行的时候,会启用。
你说的我都知道。但是修改显示器刷新率的主要目的不就是在于避免 pulldown judder 么?interpolation 一样可以帮你做到这点,效果甚至更“好”。如果你是想要完全“纯净”原生 24 fps(或者其他帧率)的播放效果(我不认为追求这个有实际意义),那本来就不该用任何 interpolation。
>这点我没有研究,纯粹根据官方文档的说明
你可以参考:
https://github.com/mpv-player/mpv/wiki/Interpolation
https://github.com/mpv-player/mpv/issues/2685#issuecomment-234704191 KC猫 发表于 2017-11-20 10:01
根据源码显示很多算法只是内置了不同的参数.
我目前就是用这个了,内部精度也是rgba16f,破本本更本带不动 ...
这个antiring代码其实包含了两个filter pass,注释里写道,作者知道chroma antiring的代码其实有问题,但他没有好的办法解决。想了想我还是没用这代码。
但是我用的那个antiring其实也只有rgb的antiring,就相当于你在用的那个的前半部分。我用到ewa的chroma upscaling的设置里就naive地忽略了chroma的antiring,不知道有多大影响。。
boday 发表于 2017-11-20 10:08
>所以只要不是刷新率低于23.9736或高于23.9784对23.976的视频都不会启用interpolation(我实际播放的时候 ...
好吧,我本来的想法是因为我有一投影一显示器,投影各种刷新率都有然而显示器没有。静下心来坐着看的话会用投影,想随便点开看看的话会用显示器,所以我想的是兼容两种都可行。
您的意思是说,即使播放设备支持各种刷新率,也是保持最高刷新率,启用interpolation比较好?