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

分享一下自己的mpv配置

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

    [LV.9]以坛为家II

    7

    主题

    357

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    57809
    cczzhh 发表于 2017-11-19 21:32:10 | 显示全部楼层 |阅读模式
    本帖最后由 cczzhh 于 2019-1-16 18:31 编辑

    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,相应地把改过的版本更新了)





    ======================以下正文======================
    在发现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/
    一般只要下一次,因为解包后里面自带一个update用脚本。只是要注意的是这个脚本要高版本powershell的支持,win7自带的powershell 2是不行的。我装了5,见:https://www.microsoft.com/en-us/download/details.aspx?id=54616

    贴出mpv.conf,注释里大概讲讲理由吧,然后再贴出配置中需要使用的额外脚本。
    由于本文的配置需要较高的计算量,所以请在显卡控制面板中将电源模式设置为“自适应”(默认“最佳功率”发挥不出显卡性能)。双显卡用户请设置让mpv以独立显卡运行。
    该配置只在GTX970以及1080p显示器上测试过,其下的显卡和其上的显示器是否掉帧需自行测试。
    不同分辨率的显示器的配置需要根据自己的情况完全改写。

    1. # 软解
    2. hwdec=no

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

    5. profile=gpu-hq
    6. # gpu-hq contains:
    7. #     dscale=mitchell
    8. #     dither-depth=auto
    9. #     correct-downscaling=yes
    10. #     sigmoid-upscaling=yes
    11. #     deband=yes

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

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

    37. # may help with 4K videos
    38. vd-lavc-dr=yes  # 现已成为默认
    39. opengl-pbo=yes

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

    42. # "ReClock" replacement
    43. video-sync=display-resample
    44. video-sync-max-video-change=5

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

    47. # smooth motion
    48. interpolation
    49. blend-subtitles=yes
    50. # 根据https://github.com/mpv-player/mpv/issues/6368,在播放HDR视频时请将blend-subtitles设为no

    51. # interpolation使用的算法。官方文档目前推荐的是oversample。但mitchell也曾作为过默认选项。catmull_rom也有人支持。
    52. # 总体而言mitchell更smooth,但会有blur。oversample没有blur,还原24帧播放效果。
    53. # 讨论见 https://github.com/mpv-player/mpv/issues/2685
    54. tscale=oversample

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

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

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

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

    63. # 播放结束后不退出
    64. keep-open=yes

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

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

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

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

    87. sub-auto=fuzzy
    88. sub-file-paths=subs
    89. slang=chi,zh-CN,sc,chs
    90. #sid=1

    91. audio-file-auto=fuzzy
    92. #audio-file-paths=audio
    93. alang=jpn,ja,eng,en
    94. #aid=1
    95. # alang貌似不能指定音频为stereo,常常选到我不想要的音轨
    96. # 有类似情况的话就用aid=1始终选择第一条音轨再自己手动调吧。这个我没找到好的解决办法
    97. # 已提交feature request,见
    98. # https://github.com/mpv-player/mpv/issues/5133
    99. # https://github.com/mpv-player/mpv/issues/5433

    100. screenshot-format=png
    101. screenshot-tag-colorspace=yes
    102. screenshot-high-bit-depth=yes
    103. #screenshot-png-compression=0
    104. #screenshot-png-filter=0

    105. # 32位浮点数高精度处理
    106. fbo-format=rgba32f

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

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

    119. # 1080 / 16 * 9 = 607.5
    120. [SD] # 480p 576p
    121. 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))
    122. glsl-shaders-clr
    123. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    124. glsl-shaders-append="~~/shaders/nnedi3-nns64-win8x4.hook"
    125. scale=haasnsoft
    126. sigmoid-upscaling=yes
    127. vd-lavc-threads=0

    128. # 1080 * 1.414213 / 2 = 763.7
    129. [HD30] # 640p 720p 30fps
    130. 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)
    131. glsl-shaders-clr
    132. glsl-shaders-append="~~/shaders/KrigBilateral.glsl"
    133. glsl-shaders-append="~~/shaders/nnedi3-nns32-win8x4.hook"
    134. sigmoid-upscaling=yes
    135. vd-lavc-threads=0

    136. [HD60] # 640p 720p 60fps
    137. 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)
    138. glsl-shaders-clr
    139. glsl-shaders-append="~~/shaders/ravu-r4-chroma-left-smoothtest1.hook"
    140. scale=ewa_lanczossharp
    141. glsl-shaders-append="~~/shaders/SSimSuperRes.glsl" # 起antiring的作用,效果比之前的antiring shader好很多
    142. sigmoid-upscaling=no # SSimSuperRes推荐关闭sigmoid-upscaling。所以在其他不用SSSR的profile中都要重新设为yes。
    143. vd-lavc-threads=0

    144. [RAVU] # 一个profile的例子
    145. glsl-shaders-clr
    146. glsl-shaders-append="~~/shaders/ravu-r4-chroma-left-smoothtest1.hook"
    147. sigmoid-upscaling=yes

    148. [FHD] # 1080p
    149. 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))
    150. profile=RAVU # 调用之前定义的profile,相当于把那三行直接写在这里。可以用 profile=profile_A,profile_B 来调用多个profile,但要注意后者可能有覆盖前者的地方
    151. vd-lavc-threads=0

    152. [2K30] # 1440p
    153. 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)
    154. profile=RAVU # 同样调用之前定义的profile,减少代码重复
    155. vd-lavc-threads=0

    156. # 4K videos
    157. [4K30] # low fps: use SSIM to downscale
    158. profile-desc=cond:((p["video-params/w"]>2560 or p["video-params/h"]>1440) and p["estimated-vf-fps"]<31)
    159. glsl-shaders-clr
    160. glsl-shaders-append="~~/shaders/SSimDownscaler.glsl"
    161. sigmoid-upscaling=yes
    162. vd-lavc-threads=0

    163. [UHD60] # high fps: use no glsl-shaders
    164. profile-desc=cond:((p["video-params/w"]>1920 or p["video-params/h"]>1080) and p["estimated-vf-fps"]>=31)
    165. glsl-shaders-clr
    166. sigmoid-upscaling=yes
    167. vd-lavc-threads=16
    168. # 4K HEVC HDR 60fps软解压力很大,默认vd-lavc-threads=0自动识别逻辑核数,分配核数+1个线程,但往往不够,不能将CPU性能压榨到极限,强行分配更多线程数以提高软解性能。
    169. # 但往往这种视频渲染压力也会大,profile=gpu-hq就可能导致卡顿。遇到此类视频播放卡顿则建议其余设置都用默认。
    复制代码

    使用到的额外脚本有:
    1. autocrop.lua             # Shift+c自动切黑边,再按Shift+c复原
    2. autodeint.lua            # Ctrl+d 让脚本自动判断需不需要反交错
    3. auto-profiles.lua        # 装了这个才能使用上面这个mpv.conf,用于区分播放的文件所需要的配置
    4. autospeedwin.lua         # 自动切换刷新率
    5. ontop-playback.lua       # 暂停播放后窗口不再保持最前
    6. open-file-dialog.lua     # Ctrl+o 选择要播放的文件,再也不用手动拖文件进来或者从命令行启动了
    7. seek-show-position.js    # 鼠标在进度条上显示时间
    8. #stats.lua               # 这个不用单独下了,mpv自带此功能了。用来看profile是否正确工作。i短时间显示,shift+i始终显示osd。按数字键1和2切换两个tab
    9. pause-when-minimize.lua  # 最小化时暂停
    10. autoload.lua             # 自动加载同目录中的文件
    11. cycle-video-rotate.lua   # 使用快捷键旋转视频
    复制代码
    在mpv.conf所在目录(%APPDATA%/mpv或mpv安装目录下的portable_config子目录 )下建scripts目录放进去。
    这些脚本都能在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. }
    复制代码
    懒的话也直接下附件里的吧。

    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和gather下也各有一份。按作者说法,compute和gather需要更高版本的opengl支持,建议试过不会蓝屏or画面扭曲再使用。compute的比gather的更快一些,见https://github.com/bjin/mpv-prescalers/wiki/Performance
    2.                                         # compute和gather的区别见https://github.com/bjin/mpv-prescalers/issues/16#issuecomment-320850393
    3. nnedi3-nns32-win8x4.hook                # neuron数从16到256都有。高neuron数要较长的编译时间
    4. ravu-r4-chroma-left-smoothtest1.hook    # https://github.com/bjin/mpv-prescalers/tree/master/test/vulkan  适用于vulkan或d3d11的版本。同样有compute、gather和主目录三个版本
    5.                                         # 无smooth的原版:https://github.com/bjin/mpv-prescalers/tree/master/vulkan
    6. KrigBilateral.glsl
    7. SSimSuperRes.glsl
    8. SSimDownscaler.glsl                     # Bilateral,SSSR和SSIM都在 https://gist.github.com/igv  这里还有其他一些shaders,有兴趣的可以试试
    复制代码
    在mpv.conf所在目录下建shaders目录放进去。
    如果想要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-rgbRAVU-yuv RAVU-chroma倍频chroma后,yuv合并/转化为rgb,再一起升频)
    孰优孰劣自己判断吧,个人倾向于第一种,毕竟luma的升频更为重要。
    在显卡性能不是很够时,完全可以降低chroma升频计算量的分配,直接使用NNEDI3+内置ewa系chroma upscaler(甚至用默认的spline36也成)。

    主要参考:
    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

    主题

    316

    帖子

    0

    真·积分

    中级会员

    Rank: 3Rank: 3

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

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

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

    使用道具 举报

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

    [LV.9]以坛为家II

    7

    主题

    357

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

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

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

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

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

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    177

    帖子

    4379

    真·积分

    中级会员

    Rank: 3Rank: 3

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

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

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

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

    使用道具 举报

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

    [LV.9]以坛为家II

    7

    主题

    357

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    57809
    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

    积分
    2498
    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

    积分
    2498
    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

    主题

    177

    帖子

    4379

    真·积分

    中级会员

    Rank: 3Rank: 3

    积分
    10200
    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的每日心情
    慵懒
    13 小时前
  • 签到天数: 401 天

    [LV.9]以坛为家II

    7

    主题

    357

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    57809
    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的每日心情
    慵懒
    13 小时前
  • 签到天数: 401 天

    [LV.9]以坛为家II

    7

    主题

    357

    帖子

    0

    真·积分

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    57809
    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微信公众号,公众号将不定期推送有关本组最新资源的消息。...

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