请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
查看: 21294|回复: 309

分享一下自己的mpv配置

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 458 天

    [LV.9]以坛为家II

    7

    主题

    426

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    65315
    cczzhh 发表于 2017-11-19 21:32:10 | 显示全部楼层 |阅读模式
    本帖最后由 cczzhh 于 2019-3-14 04:05 编辑

    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.vcb-s.com/forum.php?m ... 743&page=8#pid33497
    (太旧了,不要下)
    2017.12.05:发现2017.12.03更新的nightly版mpv能正确读外挂字幕文件名里的language code了。字幕文件要命名成:
    1. 视频文件名.xxxx-lan.后缀
    复制代码
    或者
    1. 视频文件名.xxxx_lan.后缀
    复制代码
    lan就是language code,只能是2或3字符。比如sc,chs。xxxx用于放字幕组信息。或者直接没有xxxx-部分也行。
    2017.12.09:autoload-sub-in-mka.lua完成了它的使命,现在mpv本身已解决了这个问题。见http://bbs.vcb-s.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的写法。








    ======================以下正文======================
    在发现mpc-be和potplayer的wasapi audio render在我的设备上都会导致A/V desync后,狠了下心准备彻底转mpv了。由于坛子里讲mpv的帖是真的少:
    http://bbs.vcb-s.com/forum.php?mod=viewthread&tid=1009
    http://bbs.vcb-s.com/forum.php?mod=viewthread&tid=1603
    而且VCB教程里也完全没有提及过mpv,所以想分享下对mpv的配置积累的经验,就当抛砖引玉吧。顺便熟练使用mpv的前辈们可以帮忙看一下我这配置里是否有不合理的地方。

    一开始接触mpv是在玩SVP的时候,只有mpv支持10bit输出给SVP,所以当时用着SVP内置的mpv。由于2大原因还是放不下madVR系列,但其中色彩管理部分已经由@boday解惑(http://bbs.vcb-s.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。


    贴出mpv.conf,注释里大概讲讲理由吧,然后再贴出配置中需要使用的额外脚本。
    由于本文的配置需要较高的计算量,所以请在显卡控制面板中添加mpv,将使用mpv时的电源模式设置为“自适应”(默认“最佳功率”发挥不出显卡性能)。双显卡用户请设置让mpv以独立显卡运行。
    该配置只在GTX970以及1080p显示器上测试过,其下的显卡和其上的显示器是否掉帧需自行测试。
    不同分辨率的显示器的配置需要根据自己的情况完全改写。(一个2K屏的例子见:http://bbs.vcb-s.com/forum.php?m ... ptid=2730&pid=42709

    1. # 软解
    2. hwdec=no

    3. # 高优先级
    4. priority=high

    5. profile=gpu-hq
    6. # gpu-hq contains:
    7. #    scale=spline36
    8. #    cscale=spline36
    9. #    dscale=mitchell
    10. #    dither-depth=auto
    11. #    correct-downscaling=yes
    12. #    linear-downscaling=yes
    13. #    sigmoid-upscaling=yes
    14. #    deband=yes

    15. ### gpu-api的选择?
    16. ## macOS:  只有opengl可选
    17. ## Linux:  vulkan或者opengl,推荐vulkan
    18. ## Windows:vulkan、d3d11及opengl都可选。三者理论上vulkan性能最好,实际使用上可能差别不大。
    19. ## 待 https://github.com/mpv-player/mpv/issues/5237 这个feature request以及
    20. ## https://github.com/mpv-player/mpv/pull/5804 这个PR实现后对高位深显示器
    21. ## 的用户d3d11独占全屏是唯一出路。如今还没实现,则使用vulkan也没差。vulkan将来在windows下对高位深
    22. ## 的支持目前也是未知数。
    23. ## https://github.com/mpv-player/mpv/pull/6329 实现d3d11独占全屏。
    24. # 三者无法并存,去掉行首的'#'启用,加上'#'禁用
    25. #----------------------------------------
    26. ### 使用d3d11 (mpv对于windows的默认。显卡一定要开自适应电源模式,否则性能比vulkan差)
    27. gpu-api=d3d11
    28. #----------------------------------------
    29. ### 或使用vulkan
    30. # gpu-api=vulkan
    31. #----------------------------------------
    32. ### 或使用opengl
    33. # gpu-api=opengl
    34. # 对windows,使用angle后端
    35. # gpu-context=angle

    36. # 如果需要记忆上次播放的位置,去掉下面这行的注释。不能与SVP共存,使用SVP必须把此项设为no。
    37. #save-position-on-quit
    38. # 注意,需要mpv.conf所在文件夹有用户写入权限,或者用watch-later-directory=路径来手动指定。
    39. # mpv.conf放APPDATA里是不会有问题的,有问题的是放mpv安装目录但mpv安装目录本身需要管理员权限

    40. # may help with 4K videos
    41. vd-lavc-dr=yes  # 现已成为默认
    42. opengl-pbo=yes

    43. # 如果要插其他视频滤镜,比如deint或者SVP,就要去掉下面这行的注释
    44. #hr-seek-framedrop=no

    45. # "ReClock" replacement
    46. video-sync=display-resample
    47. video-sync-max-video-change=5

    48. temporal-dither
    49. dither-size-fruit=7 # 默认6。会稍微延缓mpv启动

    50. # smooth motion
    51. interpolation

    52. # interpolation使用的算法。详见https://mpv.io/manual/master/#options-tscale
    53. # 一些讨论见 https://github.com/mpv-player/mpv/issues/2685
    54. # 目前的默认为mitchell。总体而言mitchell更平滑(当然不好和SVP插帧比),但会有模糊。oversample没有模糊,但不平滑(基本还原24帧的样子)
    55. # 具体选择哪个请依据自身需求来
    56. tscale=oversample

    57. # 想看log就取消这行的注释。mpv.log会保存到桌面
    58. #log-file="~~desktop/mpv.log"

    59. icc-profile-auto
    60. icc-3dlut-size=256x256x256 # 默认64x64x64。会稍微延缓mpv启动

    61. # hdr-compute-peak     # 此选项已默认自动识别,支持则自动开启。

    62. # 在mpv.conf所在目录下建一个 shaders_cache 空文件夹,以存放编译好的GPU shaders,加速启动。
    63. # 注意!如果不放APPDATA下,确保该文件夹有用户写入权限。
    64. gpu-shader-cache-dir="~~/shaders_cache"

    65. # 播放结束后不退出
    66. keep-open=yes

    67. ontop # combined with fullscreen, likely to enter fullscreen exclusive mode
    68. # 特别对于vulkan,使用ontop容易让驱动选择进入独占全屏。d3d11需要额外的选项,等https://github.com/mpv-player/mpv/pull/6329实现

    69. # 为了应对VFR,禁用刷新率切换
    70. # 下面这个脚本选项主要是个autospeedwin(自动调节显示器的刷新率)用的
    71. #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
    72. # 注意需要自己下载nircmdc,然后在autospeed-nircmdc里给出绝对路径。或者把nircmdc.exe所在位置加到PATH里
    73. # autospeed-monitor=0是主显示器,1、2、3……是其他副显示器
    74. # dwidth dheight bdepth 宽高和位深
    75. # autospeed-rates="23;24;25;29;30;50;59;60",autospeed-exitrate=60 显示器支持的刷新率和退出时应返回的刷新率。23指23.976
    76. # autospeed-spause=4 自动暂停的时间,秒为单位

    77. # WASAPI音频输出(Windows)
    78. # 其他系统请相应更改音频输出方式
    79. ao=wasapi
    80. audio-exclusive=yes
    81. #audio-delay=0.04 # 如需要,可设置音频延迟
    82. # 强制resample成96kHz,24bit(需要音频设备硬件支持)。注意!并非必要!
    83. #audio-samplerate=96000
    84. #audio-format=s32

    85. # 如果双声道系统播放多声道影片时有的声道声音没出现,尝试强制设定为双声道
    86. #audio-channels=stereo
    87. # 规格化:
    88. #audio-normalize-downmix=yes

    89. sub-auto=fuzzy
    90. sub-file-paths=subs
    91. slang=chi,zh-CN,sc,chs
    92. #sid=1
    93. # 字幕显示出来和xy-subfilter不一样?尝试启用下面的设置
    94. #sub-ass-vsfilter-aspect-compat=no   # 关乎字幕是否随视频拉伸
    95. #sub-ass-vsfilter-blur-compat=no   # 关乎字幕模糊的设定
    96. # 即使都用上了也不一致?那不是这两个选项的问题,重新注释掉这两行,回帖问吧。(多半是vsfilter/libass其中一个的bug)

    97. audio-file-auto=fuzzy
    98. #audio-file-paths=audio
    99. alang=jpn,ja,eng,en
    100. #aid=1
    101. # 暂时无法根据其他的metadata选择轨道,mpv又默认偏好外挂轨道,常常选到我不想要的音轨
    102. # 有类似情况的话就用aid=1始终选择第一条音轨再自己手动调吧
    103. # 设计者也是这么推荐的:https://github.com/mpv-player/mpv/issues/967#issuecomment-94744964

    104. screenshot-format=png
    105. screenshot-tag-colorspace=yes
    106. screenshot-high-bit-depth=yes
    107. #screenshot-png-compression=0
    108. #screenshot-png-filter=0

    109. # 根据视频是否是HDR以及视频aspect ratio决定是否启用blend-subtitles的profile
    110. # 目前HDR->SDR建议关闭blend-subtitles,见https://github.com/mpv-player/mpv/issues/6368
    111. # 如果hdr-compute-peak将来继续改进可能可以兼容blend-subtitles
    112. [HDR_or_21:9]
    113. profile-desc=cond:(p["video-params/primaries"]=="bt.2020" or p["video-params/aspect"]>=2.0)
    114. blend-subtitles=no
    115. sub-ass-force-margins=yes # 使字幕输出在黑边上

    116. [SDR_and_16:9]
    117. profile-desc=cond:(p["video-params/primaries"]~="bt.2020" and p["video-params/aspect"]<2.0)
    118. blend-subtitles=yes
    119. sub-ass-force-margins=no

    120. # 以下根据分辨率和视频帧率设置不同的升/降阶算法,以期获得在能不掉帧的情况下达到最好的效果

    121. # 创建一个基于gpu-hq,用于将一些参数回归到默认的profile:
    122. [high_quality]
    123. profile=gpu-hq
    124. fbo-format=rgba32f  # 32位浮点数高精度处理
    125. vd-lavc-threads=0   # 默认自动判断解码用线程数

    126. # 1080 * 1.414213 / 4 = 381.8
    127. [low] # 240p 360p,启用两次倍增以达到4倍.
    128. profile-desc=cond:(p["video-params/w"]<=678 and p["video-params/h"]<=381)
    129. profile=high_quality  # 调用之前定义的profile,相当于把那三行直接写在这里。可以用 profile=profile_A,profile_B 来调用多个profile,但要注意后者可能有覆盖前者的地方。此处作用为重新将gpu-hq会影响的几个参数设定为gpu-hq的默认值
    130. glsl-shaders-clr
    131. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    132. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
    133. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"

    134. # 1080 / 16 * 9 = 607.5
    135. [SD] # 480p 576p
    136. 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))
    137. profile=high_quality
    138. glsl-shaders-clr
    139. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    140. glsl-shaders-append="~~/shaders/nnedi3-nns64-win8x4.hook"

    141. # 1080 * 1.414213 / 2 = 763.7
    142. [HD30] # 640p 720p 30fps
    143. 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)
    144. profile=high_quality
    145. glsl-shaders-clr
    146. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    147. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"

    148. [HD60] # 640p 720p 60fps
    149. 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)
    150. profile=high_quality
    151. glsl-shaders-clr
    152. glsl-shaders-append="~~/shaders/ravu-r4-ar1-chroma-left.hook"
    153. scale=ewa_lanczossharp
    154. glsl-shaders-append="~~/shaders/SSimSuperRes.glsl" # 起antiring的作用,效果比之前的antiring shader好很多
    155. sigmoid-upscaling=no # SSimSuperRes推荐关闭sigmoid-upscaling。所以在其他不用SSSR的profile中都要重新设为yes(通过重新设定一遍profile=gpu-hq)。

    156. [RAVU] # 另一个profile的例子
    157. profile=high_quality
    158. glsl-shaders-clr
    159. glsl-shaders-append="~~/shaders/ravu-r4-ar1-chroma-left.hook"

    160. [FHD] # 1080p
    161. 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))
    162. profile=RAVU  # 调用之前定义的profile,减少代码重复

    163. [2K30] # 1440p
    164. 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)
    165. profile=RAVU

    166. # 4K videos
    167. [4K30] # low fps: use SSIM to downscale
    168. profile-desc=cond:((p["video-params/w"]>2560 or p["video-params/h"]>1440) and p["estimated-vf-fps"]<31)
    169. profile=high_quality
    170. glsl-shaders-clr
    171. glsl-shaders-append="~~/shaders/SSimDownscaler.glsl"
    172. linear-downscaling=no # SSimDownscaler要求。需要在其他profile中重新设为yes(通过重新设定一遍profile=gpu-hq)。

    173. [UHD60] # high fps: use no glsl-shaders
    174. profile-desc=cond:((p["video-params/w"]>1920 or p["video-params/h"]>1080) and p["estimated-vf-fps"]>=31)
    175. glsl-shaders-clr
    176. # 如果是1080p屏幕播放4K,可以使用https://gist.github.com/bjin/15f307e7a1bdb55842bbb663ee1950ed
    177. # glsl-shaders-append="~~/shaders/acme-0.5x.hook"
    178. # 可以绕过chroma upscaling,并且把之后颜色转换的计算量从4K级降到1080p级。
    179. cscale=bilinear
    180. scale=bilinear
    181. dscale=bilinear
    182. deband=no  # 关闭deband,降低计算量
    183. correct-downscaling=no  # 降低计算量
    184. fbo-format=auto # auto一般等于rgba16hf(d3d11,vulkan),或者rgba16f(opengl)。使用16位半精度浮点数,可能会比32位浮点数更快。
    185. vd-lavc-threads=16
    186. # 4K HEVC HDR 60fps软解压力很大,默认vd-lavc-threads=0自动识别逻辑核数,分配核数+1个线程,但往往不够,不能将CPU性能压榨到极限,强行分配更多线程数以提高软解性能。
    复制代码
    注意!使用论坛的“复制代码”按钮复制后,粘贴到记事本里,最后保存时确认如下勾选:

    保存类型选择所有文件,编码选择UTF-8。对input.conf也一样需要这么设置。


    使用到的额外脚本有:
    1. # https://github.com/mpv-player/mpv/blob/master/TOOLS/lua
    2. autocrop.lua             # Shift+c自动切黑边,再按Shift+c复原
    3. autodeint.lua            # Ctrl+d 让脚本自动判断需不需要反交错
    4. autoload.lua             # 自动加载同目录中的文件
    5. ontop-playback.lua       # 暂停播放后窗口不再保持最前
    6. pause-when-minimize.lua  # 最小化时暂停

    7. # https://github.com/VideoPlayerCode/mpv-tools/
    8. cycle-video-rotate.lua   # 使用快捷键旋转视频

    9. # https://github.com/wiiaboo/mpv-scripts/blob/master/auto-profiles.lua
    10. auto-profiles.lua        # 装了这个才能使用上面这个mpv.conf,用于区分播放的文件所需要的配置

    11. # https://github.com/kevinlekiller/mpv_scripts/tree/master/autospeedwin
    12. autospeedwin.lua         # 自动切换刷新率

    13. # https://github.com/rossy/mpv-open-file-dialog
    14. open-file-dialog.lua     # Ctrl+o 选择要播放的文件,再也不用手动拖文件进来或者从命令行启动了

    15. #stats.lua               # 这个不用单独下了,mpv自带此功能了。用来看profile是否正确工作。i短时间显示,shift+i始终显示osd。按数字键1和2切换两个tab
    复制代码
    强调一下,其他的脚本可以自行选择,但auto-profiles.lua是必需的!
    在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)的话,现在的应该对了。如果暂停不行就用附件里的吧,都不行?那我也不知道为啥了。

    autoload如果不想自动加载裸音频文件的话,把extensions里的音频格式注释掉
    1. EXTENSIONS = Set {
    2.     'mkv', 'avi', 'mp4', 'ogv', 'webm', 'rmvb', 'flv', 'wmv', 'mpeg', 'mpg', 'm4v', '3gp',
    3.     -- Add some other video formats
    4.     'mts', 'mov', 'ts', 'rm',
    5.     -- Do not load audio files into playlist
    6.     --'mp3', 'wav', 'ogv', 'flac', 'm4a', 'wma', 'ogg', 'opus',
    7. }
    复制代码
    懒的话也直接下附件里的吧。

    input.conf是用于控制mpv快捷键的配置文件,具体解释见官方文档:https://mpv.io/manual/master/#input-conf
    主要语法是:
    1. 按键 命令 [命令参数]
    复制代码
    此配置文件放置于和mpv.conf同级目录下。
    https://github.com/mpv-player/mpv/blob/master/etc/input.conf
    这个链接是input.conf的默认值(注意这个文件全被注释掉了),据此可以对默认按键进行更改(如果有需要的话)。
    一般而言如果对默认操作方式比较满意的话不需要创建这个文件。如果对旋转视频有需求,使用cycle-video-rotate.lua的话,那需要在input.conf中配套加入:
    1. # cycle-video-rotate.lua
    2. Alt+LEFT script-message Cycle_Video_Rotate -90
    3. Alt+RIGHT script-message Cycle_Video_Rotate 90
    复制代码
    然后即可用Alt+方向键左右旋转视频。

    使用到的shaders有(上面的wiki页面里也多少都提到了):
    1. 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  
    2. nnedi3-nns32-win8x4.hook                # neuron数从16到256都有。高neuron数要较长的编译时间,渲染开销也会较大,提升也有限
    3. ravu-r4-ar1-chroma-left.hook            # https://github.com/bjin/mpv-prescalers/tree/master/antiring/vulkan/compute  适用于vulkan或d3d11的版本。同样有compute、gather和主目录三个版本。ar2 antiring的强度更高,但也会损失细节
    4.                                         # 无AR的原版:https://github.com/bjin/mpv-prescalers/tree/master/vulkan/compute
    5. KrigBilateral.glsl
    6. SSimSuperRes.glsl
    7. SSimDownscaler.glsl                     # Bilateral,SSSR和SSimDownscaler都在 https://gist.github.com/igv 大陆可能需要爬梯子
    复制代码
    在mpv.conf所在目录下建shaders目录放进去。

    288楼给出了一个链接:https://artoriuz.github.io/mpv_upscaling.html
    就各种算法给出了详细的评测(速度,效果),请结合这篇以及自己的截图对比,根据自己机器的机能和使用情况来选择。

    注意!下载任何脚本/shader文件都不推荐复制粘贴到空文本里,尤其是shader文件,文末换行符缺失会导致编译失败。强烈推荐点github的raw按钮,然后右键另存为,这样文件内容和扩展名本身就是对的。



    如果想要4倍增画面(比如在2K或以上分辨率的显示器上看480p),则需要调用两次NNEDI3。比如第一次倍增使用64 neurons,第二次倍增用32 neurons:
    1. glsl-shaders-append="~~/shaders/nnedi3-nns64-win8x4.hook"
    2. 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的人。



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-24 23:16
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    17

    主题

    322

    帖子

    0

    真·积分

    中级会员

    Rank: 3Rank: 3

    积分
    7062
    cylx 发表于 2017-11-19 23:12:15 | 显示全部楼层
    autospeed不能在退出mpv后把刷新率再改回去吧,还是有点麻烦的。

    配置文件除了%APPDATA%/mpv,也可以放到mpv.exe所在目录的portable_config子目录。

    stats.lua现在合并到主干了,不用单独下载了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 458 天

    [LV.9]以坛为家II

    7

    主题

    426

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    65315
    cczzhh  楼主| 发表于 2017-11-20 07:28:52 | 显示全部楼层
    cylx 发表于 2017-11-19 23:12
    autospeed不能在退出mpv后把刷新率再改回去吧,还是有点麻烦的。

    配置文件除了%APPDATA%/mpv,也可以放到m ...

    可以呀,试试我改过的autospeedwin。

    stats确实集成进去了,那我删了它

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    178

    帖子

    4379

    真·积分

    中级会员

    Rank: 3Rank: 3

    积分
    10209
    boday 发表于 2017-11-20 07:49:22 | 显示全部楼层
    profile=gpu-hq 已经包括了 deband,不用单独再写了。

    既然用了 interpolation,额外根据片源去改动屏幕刷新率的意义何在?

    tscale=oversample 并不客观上比其他的“好”,只是唯一能在消除 pulldown judder 同时能维持原帧率观感的算法,其他的比 oversample 更顺滑的同时也更模糊,两者之间的平衡点是个很主观的事情。

    另外,音频强制 96 khz 输出我认为毫无实际意义……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 458 天

    [LV.9]以坛为家II

    7

    主题

    426

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    65315
    cczzhh  楼主| 发表于 2017-11-20 08:36:06 | 显示全部楼层
    本帖最后由 cczzhh 于 2017-11-20 08:44 编辑
    boday 发表于 2017-11-20 07:49
    profile=gpu-hq 已经包括了 deband,不用单独再写了。

    既然用了 interpolation,额外根据片源去改动屏幕刷 ...
    profile=gpu-hq 已经包括了 deband,不用单独再写了。

    是,只是预留一个位置以防会想关闭deband(已修改正文)

    既然用了 interpolation,额外根据片源去改动屏幕刷新率的意义何在?

    关于这点不用担心,mpv官方文档里写
    1. --interpolation-threshold=<0..1,-1>

    2.     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.)

    3.     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.

    4.     Set this to -1 to disable this logic.
    复制代码
    所以只要不是刷新率低于23.9736或高于23.9784对23.976的视频都不会启用interpolation(我实际播放的时候23.976的设备上stats里没有出现interpolation),所以这个设置在当显示器有指定刷新率的时候,自动不会启用,当没有指定刷新率只能以默认刷新率运行的时候,会启用。

    tscale=oversample 并不客观上比其他的“好”,只是唯一能在消除 pulldown judder 同时能维持原帧率观感的算法,其他的比 oversample 更顺滑的同时也更模糊,两者之间的平衡点是个很主观的事情。

    这点我没有研究,纯粹根据官方文档的说明
    1. oversample
    2.     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 输出我认为毫无实际意义……

    确实,我只是弄着玩的(已修改正文

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-29 17:14
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    22

    帖子

    0

    真·积分

    中级会员

    Rank: 3Rank: 3

    积分
    2584
    KC猫 发表于 2017-11-20 09:35:28 | 显示全部楼层
    在linux下可以用jack音频服务有类似win上asio的效果,jack也有win版本,有兴趣可以鼓捣下.需要自己启动守护进程.
    1. ao=jack
    复制代码
    1. $ jackd -d alsa -d hw:Audio -r 96000 -p 512 -n4 -P -z
    复制代码

    然后在linux下使用N卡闭源驱动,会出现几个CUVID解码器,这些解码器似乎就是hwdec+copyback.但是负载会比普通硬解来得低
    1. $ mpv --vd=help
    复制代码
    1. vd=hevc_cuvid,h264_cuvid,mjpeg_cuvid,mpeg1_cuvid,mpeg2_cuvid,mpeg4_cuvid,vc1_cuvid,vp8_cuvid,vp9_cuvid
    复制代码


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-29 17:14
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    22

    帖子

    0

    真·积分

    中级会员

    Rank: 3Rank: 3

    积分
    2584
    KC猫 发表于 2017-11-20 10:01:34 | 显示全部楼层
    1. https://github.com/mpv-player/mpv/blob/master/video/out/filter_kernels.c#L338
    复制代码

    根据源码显示很多算法只是内置了不同的参数.
    1. scale=ewa_lanczossoft
    2. cscale=ewa_lanczossoft
    3. opengl-shaders-append="~~/shaders/antiring.hook"
    复制代码

    我目前就是用这个了,内部精度也是rgba16f,破本本更本带不动更高设置.
    antiring.hook就是mpv的wiki里介绍的那个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    178

    帖子

    4379

    真·积分

    中级会员

    Rank: 3Rank: 3

    积分
    10209
    boday 发表于 2017-11-20 10:08:47 | 显示全部楼层
    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/mp ... uecomment-234704191
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 458 天

    [LV.9]以坛为家II

    7

    主题

    426

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    65315
    cczzhh  楼主| 发表于 2017-11-20 10:16:27 | 显示全部楼层
    KC猫 发表于 2017-11-20 10:01
    根据源码显示很多算法只是内置了不同的参数.

    我目前就是用这个了,内部精度也是rgba16f,破本本更本带不动 ...

    这个antiring代码其实包含了两个filter pass,注释里写道,作者知道chroma antiring的代码其实有问题,但他没有好的办法解决。想了想我还是没用这代码。

    但是我用的那个antiring其实也只有rgb的antiring,就相当于你在用的那个的前半部分。我用到ewa的chroma upscaling的设置里就naive地忽略了chroma的antiring,不知道有多大影响。。

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 458 天

    [LV.9]以坛为家II

    7

    主题

    426

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    65315
    cczzhh  楼主| 发表于 2017-11-20 10:21:00 | 显示全部楼层
    boday 发表于 2017-11-20 10:08
    >所以只要不是刷新率低于23.9736或高于23.9784对23.976的视频都不会启用interpolation(我实际播放的时候 ...

    好吧,我本来的想法是因为我有一投影一显示器,投影各种刷新率都有然而显示器没有。静下心来坐着看的话会用投影,想随便点开看看的话会用显示器,所以我想的是兼容两种都可行。

    您的意思是说,即使播放设备支持各种刷新率,也是保持最高刷新率,启用interpolation比较好?

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    VCB-Studio分享论坛X

    VCB-S微信公众号上线了,欢迎关注!

    欢迎关注VCB-S微信公众号,公众号将不定期推送有关本组最新资源的消息。...

    点击查看详情 
    快速回复 返回顶部 返回列表