找回密码
 立即注册
查看: 231665|回复: 751

分享一下自己的mpv配置

  • TA的每日心情
    慵懒
    2020-6-24 01:28
  • 签到天数: 895 天

    [LV.10]以坛为家III

    7

    主题

    556

    回帖

    116

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    163811

    活跃达人崭露头角坚持不懈

    cczzhh 发表于 2017-11-19 21:32:10 | 显示全部楼层 |阅读模式
    本帖最后由 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了。字幕文件要命名成:
    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.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。具体开启方式是
    1. dither=error-diffusion
    复制代码
    前提是已经开了dither,不开error diffusion时默认是fruit算法。
    error diffusion也提供了很多算法,
    默认
    1. error-diffusion=sierra-lite
    复制代码
    觉得显卡太闲可以试试
    1. 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

    1. # 软解
    2. hwdec=no

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

    5. profile=gpu-hq

    6. ### gpu-api的选择?
    7. ## macOS:  只有opengl可选
    8. ## Linux:  vulkan或者opengl,推荐vulkan
    9. ## Windows:vulkan、d3d11及opengl都可选。三者理论上vulkan性能最好,但依然推荐d3d11。
    10. ## 通过d3d11 api,目前mpv已支持windows的10 bit输出和HDR colorspace的设定。
    11. ## HDR metadata pass on正在跟进,独占全屏正在跟进。
    12. #----------------------------------------
    13. ### 使用d3d11 (mpv对于windows的默认。显卡注意开自适应电源模式)
    14. gpu-api=d3d11
    15. # 通过d3d11-adapter可以设定mpv使用哪块显卡。详见文档:https://mpv.io/manual/master/#options-d3d11-adapter

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

    20. # may help with 4K videos
    21. vd-lavc-dr=yes
    22. opengl-pbo=yes

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

    25. # "ReClock" replacement
    26. video-sync=display-resample
    27. #video-sync-max-video-change=5

    28. temporal-dither
    29. dither-size-fruit=7
    30. # 默认6。会稍微延缓mpv启动
    31. # 有兴趣也可以测试下error diffusion算法

    32. # smooth motion
    33. interpolation

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

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

    41. icc-profile-auto  # 启用校色
    42. icc-3dlut-size=256x256x256
    43. # 默认64x64x64。会稍微延缓mpv启动

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

    47. # 播放结束后不退出
    48. keep-open=yes

    49. # 始终处于最前阶段。配合ontop-playback.lua可以使得暂停之后解除保持最前端。
    50. ontop
    51. # 对于vulkan,使用ontop容易让驱动选择进入独占全屏。d3d11需要额外的选项,等https://github.com/mpv-player/mpv/pull/6329实现

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

    60. # WASAPI音频输出(Windows)
    61. # 其他系统请相应更改音频输出方式
    62. ao=wasapi
    63. # 需要独占音频则去掉注释。开启会使得其他程序没声音。
    64. #audio-exclusive=yes

    65. # 如果双声道系统播放多声道影片时有的声道声音没出现,尝试强制设定为双声道
    66. #audio-channels=stereo
    67. # 规格化:
    68. #audio-normalize-downmix=yes
    69. # 多声道音轨downmix成双声道时,如果觉得背景音过响,角色台词声音小,尝试看看这个:https://github.com/mpv-player/mpv/issues/6563

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

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

    87. screenshot-format=png
    88. screenshot-tag-colorspace=yes
    89. screenshot-high-bit-depth=yes
    90. #screenshot-png-compression=0
    91. #screenshot-png-filter=0

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

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

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

    105. # 创建一个基于gpu-hq,用于将一些参数回归到默认的profile:
    106. [high_quality]
    107. profile=gpu-hq
    108. ## !!! 使用  fbo-format=rgba16hf  可能能提高效率
    109. fbo-format=rgba32f
    110. ## !!! 使用  fbo-format=rgba16hf  可能能提高效率
    111. vd-lavc-threads=0

    112. # 1080 * 1.414213 / 4 = 381.8
    113. [low] # 240p 360p,启用两次倍增以达到4倍.
    114. profile-desc=cond:(p["video-params/w"]<=678 and p["video-params/h"]<=381)
    115. profile=high_quality
    116. glsl-shaders-clr
    117. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    118. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
    119. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"

    120. # 1080 / 16 * 9 = 607.5
    121. [SD] # 480p 576p
    122. 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))
    123. profile=high_quality
    124. glsl-shaders-clr
    125. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    126. glsl-shaders-append="~~/shaders/nnedi3-nns64-win8x4.hook"

    127. # 1080 * 1.414213 / 2 = 763.7
    128. [HD30] # 640p 720p 30fps
    129. 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)
    130. profile=high_quality
    131. glsl-shaders-clr
    132. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    133. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"

    134. [HD60] # 640p 720p 60fps
    135. 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)
    136. profile=high_quality
    137. glsl-shaders-clr
    138. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    139. glsl-shaders-append="~~/shaders/SSimSuperRes.glsl"
    140. # SSimSuperRes推荐关闭sigmoid-upscaling。所以在其他不用SSSR的profile中都要重新设为yes(通过重新设定一遍profile=gpu-hq)
    141. sigmoid-upscaling=no

    142. [KrigBilateral] # 另一个profile的例子
    143. profile=high_quality
    144. glsl-shaders-clr
    145. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"

    146. [FHD] # 1080p
    147. 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))
    148. profile=KrigBilateral

    149. [2K30] # 1440p
    150. 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)
    151. profile=KrigBilateral

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

    160. [UHD60] # high fps: use no glsl-shaders
    161. profile-desc=cond:((p["video-params/w"]>1920 or p["video-params/h"]>1080) and p["estimated-vf-fps"]>=31)
    162. glsl-shaders-clr
    163. # 如果是1080p屏幕播放4K,可以使用https://gist.github.com/bjin/15f307e7a1bdb55842bbb663ee1950ed
    164. # glsl-shaders-append="~~/shaders/acme-0.5x.hook"
    165. # 可以绕过chroma upscaling,并且把之后颜色转换的计算量从4K级降到1080p级。
    166. fbo-format=auto
    167. vd-lavc-threads=16
    168. # 4K HEVC HDR 60fps软解压力很大,默认vd-lavc-threads=0自动识别逻辑核数,分配核数+1个线程,但往往不够,不能将CPU性能压榨到极限,强行分配更多线程数以提高软解性能。
    169. # 或者直接开硬解,如果显卡支持的话
    170. hwdec=yes
    复制代码
    注意!使用论坛的“复制代码”按钮复制后,粘贴到记事本里,最后保存时确认如下勾选:

    保存类型选择所有文件,编码选择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/kevinlekiller/mpv_scripts/tree/master/autospeedwin
    10. autospeedwin.lua         # 自动切换刷新率

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

    13. #stats.lua               # 这个不用单独下了,mpv自带此功能了。用来看profile是否正确工作。i短时间显示,shift+i始终显示osd。按数字键1和2切换两个tab

    14. # 新增可选  https://github.com/fbriere/mpv-scripts/blob/master/scripts/tree-profiles.lua
    15. 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里的音频格式注释掉
    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. KrigBilateral.glsl
    4. SSimSuperRes.glsl
    5. 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:
    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的人。


    --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有没有已经能实现你需要的功能的脚本,总有类似的脚本可以参考自己去改,如果没有,别人愿意不愿意帮你实现也纯看兴趣,除非你有付钱。)




    本帖子中包含更多资源

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

    x

    评分

    参与人数 7活跃度 +2720 收起 理由
    mannix + 400
    HuangRuixiao + 800
    2817515173 + 400 很给力!
    johoco + 800
    纸阳 + 200 很给力!
    Love7 + 20 很给力!
    莫卡斯Lifa + 100 Dalao666

    查看全部评分

    回复

    使用道具 举报

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

    [LV.2]偶尔看看I

    19

    主题

    351

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

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

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-6-24 01:28
  • 签到天数: 895 天

    [LV.10]以坛为家III

    7

    主题

    556

    回帖

    116

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    163811

    活跃达人崭露头角坚持不懈

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

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

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

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

    回复 支持 0 反对 1

    使用道具 举报

    该用户从未签到

    9

    主题

    278

    回帖

    4393

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

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

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

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-6-24 01:28
  • 签到天数: 895 天

    [LV.10]以坛为家III

    7

    主题

    556

    回帖

    116

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    163811

    活跃达人崭露头角坚持不懈

    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 输出我认为毫无实际意义……

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

    回复 支持 0 反对 1

    使用道具 举报

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

    [LV.2]偶尔看看I

    5

    主题

    44

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    10452
    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
    复制代码


    回复 支持 0 反对 1

    使用道具 举报

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

    [LV.2]偶尔看看I

    5

    主题

    44

    回帖

    0

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    10452
    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里介绍的那个
    回复 支持 0 反对 1

    使用道具 举报

    该用户从未签到

    9

    主题

    278

    回帖

    4393

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    74037
    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
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-6-24 01:28
  • 签到天数: 895 天

    [LV.10]以坛为家III

    7

    主题

    556

    回帖

    116

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    163811

    活跃达人崭露头角坚持不懈

    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,不知道有多大影响。。

    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-6-24 01:28
  • 签到天数: 895 天

    [LV.10]以坛为家III

    7

    主题

    556

    回帖

    116

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    163811

    活跃达人崭露头角坚持不懈

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

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

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

    回复 支持 0 反对 1

    使用道具 举报

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

    本版积分规则

    快速回复 返回顶部 返回列表