This commit is contained in:
2026-03-27 07:06:16 +01:00
commit 1541961403
340 changed files with 151916 additions and 0 deletions
+434
View File
@@ -0,0 +1,434 @@
# ===== 基础设置 =====
vo=gpu-next # 视频输出驱动
gpu-api=vulkan # 图形绘制接口
input-ime=no # 仅文本输入时激活 IME
autofit-smaller=40%x30% # 窗口最小占屏比例
idle=yes # 播放结束后保持运行
ontop # 窗口置顶
hr-seek=yes # 精确跳转
hr-seek-framedrop=no # 跳转时不丢帧,利于修正音频延迟
save-position-on-quit=yes # 退出时记住播放进度
write-filename-in-watch-later-config # 播放记录中写入文件名
resume-playback-check-mtime=yes # 校验文件修改时间防止误恢复
watch-later-dir="~~/cache/watch_later"
watch-later-options=start,vid,aid,sid
save-watch-history=yes # 保存播放历史(内置 select 脚本可浏览)
watch-history-path=~~/files/watch_history.jsonl
reset-on-next-file=vid,aid,sid,secondary-sid,vf,af,loop-file,deinterlace,contrast,brightness,gamma,saturation,hue,video-zoom,video-rotate,video-pan-x,video-pan-y,panscan,speed,audio-delay,sub-pos,sub-scale,sub-delay,sub-speed,sub-visibility,secondary-sub-visibility
input-ipc-server=/tmp/mpvsocket # IPC 套接字
directory-mode=ignore # 打开目录时忽略子目录
metadata-codepage=auto # 元数据编码自动检测
msg-level=all=info,auto_profiles=warn
title=${?pause==yes:⏸}${?mute==yes:🔇}${?ontop==yes:📌}${?demuxer-via-network==yes:${media-title}}${?demuxer-via-network==no:${filename}}
# ===== OSD =====
no-osd-bar
osd-on-seek=msg-bar
osd-bar-w=100
osd-bar-h=2
osd-bar-align-y=-1
osd-font="Noto Sans CJK SC;Noto Color Emoji"
osd-font-size=24
osd-color="#FFFFFF"
osd-outline-size=1.0
osd-outline-color="#1C1B1F"
osd-shadow-offset=0
osd-back-color="#1C1B1F"
osd-border-style=outline-and-shadow
osd-playlist-entry=filename
osd-status-msg=${playback-time/full} / ${duration/full} (${percent-pos}%)\nframe: ${estimated-frame-number} / ${estimated-frame-count}
osd-fractions=yes
osd-duration=2000
# ===== 色彩管理 =====
icc-profile-auto # 自动检测系统 ICC 配置文件
icc-intent=0 # 感知度映射意图
icc-force-contrast=1000 # 解决校色文件对比度问题
icc-3dlut-size=128x128x128 # 3D LUT 精度
icc-cache-dir="~~/cache/icc_cache"
use-embedded-icc-profile=yes # 使用嵌入式 ICC 配置文件
inverse-tone-mapping=yes # SDR→HDR 反向映射(仅 HDR 显示器有效)
target-colorspace-hint=auto # 自动配置显示器输出色彩空间
hdr-contrast-recovery=0.30 # HDR 对比度恢复强度
hdr-compute-peak=yes # 动态峰值检测
# ===== 音频 =====
audio-device=auto
audio-channels=7.1,5.1,stereo # 按优先级回退,避免多声道下混丢声道
ao=alsa
audio-exclusive=yes # 独占音频通道
audio-samplerate=96000 # 重采样至 96kHz
audio-format=s32 # 32位有符号整数
replaygain=album # 专辑增益优先,无专辑增益时回退到曲目增益
gapless-audio=no # 避免采样率锁定导致音质下降
audio-file-auto=fuzzy # 自动加载同名外部音轨
audio-file-paths=audio;audios;audio 5.1;audios 5.1;audio 7.1;audios 7.1;音轨
alang=japanese,jpn,jap,ja,jp,english,eng,en
# ===== 字幕 =====
sub-codepage=gb18030 # 非 UTF-8 字幕首先尝试 GB18030
sub-auto=fuzzy # 自动加载同名外部字幕
sub-file-paths=sub;subs;subtitles;字幕
slang=chs,sc,zh-Hans,zh-CN,cht,tc,zh-Hant,zh-HK,zh-TW,chi,zho,zh
sub-font="Noto Sans CJK SC;Noto Color Emoji"
sub-font-size=50
sub-bold=yes
sub-color="#FFFFFF"
sub-outline-size=0.5
sub-outline-color="#000000"
sub-shadow-offset=0.5
sub-back-color="#000000"
# ===== 截图 =====
screenshot-format=webp
screenshot-webp-quality=85
screenshot-webp-compression=6
screenshot-tag-colorspace=no
screenshot-template="~~/files/screen/%{media-title}-%P-%n"
# ===== 脚本与着色器 =====
gpu-shader-cache-dir="~~/cache/shaders_cache"
osc=no # 禁用内置 OSC使用 uosc
ytdl=yes
ytdl-format=bestvideo[height<=?2160][vcodec!=?vp9.2][vcodec!=?vp9]+bestaudio/best
ytdl-raw-options-append=cookies-from-browser=Firefox
input-default-bindings=no # 禁用内置键位,在 input.conf 中自定义
# ===== 外部配置 =====
include="~~/profiles.conf" # 场景预设(游戏/电影/动画等,手动激活)
# =========================================
# Profile 激活
# =========================================
# 色彩管理ICC 和 Target 二选一)
#profile=ICC # ICC 色彩管理,使用系统 ICC 配置文件
#profile=ICC+ # ICC 色彩管理,使用自定义 ICC 文件
profile=Target # Target 色彩管理,直接指定目标色彩空间
profile=Dither # 抖动算法fruit
#profile=Dither+ # 抖动算法error-diffusion更耗能
profile=Tscale # 时域插值oversample
#profile=Tscale+ # 时域插值sphinx更平滑但略模糊
profile=HQ # 高质量缩放算法组合
profile=DeBand-low # 去色带(低强度)
#profile=DeBand-medium
#profile=DeBand-high
profile=HDR2SDR # HDR 映射 SDR 参数
#profile=SDR2HDR # SDR 反向映射 HDR仅 HDR 显示器)
#profile=SWscaler # 软件缩放备选方案
# 着色器(选一)
#profile=NNEDI3 # 通用场景NNEDI3-32
profile=NNEDI3+ # 通用场景NNEDI3-64更耗能
#profile=ravu-zoom # 通用场景ravu-zoom
#profile=FSRCNNX # HD 场景
#profile=FSRCNNX+ # SD 场景FSRCNNX 去伪影)
#profile=Ani4K # 动画Ani4K V2高性能开销
#profile=AniSD # SD 动画AniSD高性能开销
#profile=Anime4K # 动画Anime4K 修复 + 去伪影)
#profile=SSIM # 低性能消耗
# =========================================
# Profile 定义:常规
# =========================================
[ICC]
# 使用系统 ICC 配置文件进行色彩管理
icc-profile=""
icc-profile-auto
icc-intent=0
icc-force-contrast=1000
icc-3dlut-size=auto
icc-cache-dir="~~/cache/icc_cache"
[ICC+]
# 使用自定义 ICC 文件(如 color.org 泛 ICC 或专业校色文件)
icc-profile="~~/icc/ITU-RBT709ReferenceDisplay.icc"
icc-intent=0
icc-force-contrast=no
icc-3dlut-size=auto
icc-cache-dir="~~/cache/icc_cache"
[Target]
# 不使用 ICC直接指定目标色彩空间参数
icc-profile=""
icc-profile-auto=no
target-prim=auto
target-contrast=auto
#target-trc=gamma2.2 # 非 OLED 显示器建议启用
#target-peak=203 # SDR 显示器默认 203 nit
[Dither]
dither-depth=auto
dither=fruit
dither-size-fruit=6
[Dither+]
dither-depth=auto
dither=error-diffusion
error-diffusion=floyd-steinberg
[Tscale]
video-sync=display-resample
interpolation
tscale=oversample
[Tscale+]
video-sync=display-resample
interpolation
tscale=sphinx
tscale-blur=0.65
[HQ]
scale=ewa_lanczossharp
cscale=bilinear
dscale=catmull_rom
scale-antiring=0.5
dscale-antiring=0.5
linear-upscaling=no
sigmoid-upscaling=yes
correct-downscaling=yes
linear-downscaling=no
deband=no
[DeBand-low]
deband-iterations=1
deband-threshold=48
deband-range=16
deband-grain=16
[DeBand-medium]
deband-iterations=2
deband-threshold=64
deband-range=16
deband-grain=24
[DeBand-high]
deband-iterations=3
deband-threshold=64
deband-range=16
deband-grain=24
[HDR2SDR]
tone-mapping=auto
gamut-mapping-mode=auto
hdr-contrast-recovery=0.30
hdr-compute-peak=auto
hdr-peak-percentile=99.995
hdr-peak-decay-rate=100
hdr-scene-threshold-low=5.5
hdr-scene-threshold-high=10
allow-delayed-peak-detect=no
[SDR2HDR]
# SDR 反向映射 HDR仅 HDR 显示器有效
icc-profile=""
icc-profile-auto=no
target-prim=auto
target-trc=auto
target-peak=auto
target-colorspace-hint=auto
inverse-tone-mapping=yes
[SWscaler]
sws-allow-zimg=no
sws-scaler=bicublin
zimg-scaler-chroma=bicubic
zimg-scaler=bicubic
zimg-scaler-param-a=1/3
zimg-scaler-param-b=1/3
zimg-fast=no
# --- 着色器 Profile ---
[NNEDI3]
profile-desc=通用场景NNEDI3-32 + 自适应锐化)
glsl-shaders-append="~~/shaders/nnedi3/nnedi3-nns32-win8x4.glsl"
glsl-shaders-append="~~/shaders/igv/adaptive-sharpen_luma.glsl"
[NNEDI3+]
profile-desc=通用场景NNEDI3-64 + 自适应锐化)
glsl-shaders-append="~~/shaders/nnedi3/nnedi3-nns64-win8x4.glsl"
glsl-shaders-append="~~/shaders/igv/adaptive-sharpen_luma.glsl"
[ravu-zoom]
profile-desc=通用场景ravu-zoom + 自适应锐化)
glsl-shaders-append="~~/shaders/ravu/ravu-zoom-ar-r3.glsl"
glsl-shaders-append="~~/shaders/igv/adaptive-sharpen_luma.glsl"
[FSRCNNX]
profile-desc=HD 场景FSRCNNX + 自适应锐化)
glsl-shaders-append="~~/shaders/igv/FSRCNNX_x2_8-0-4-1.glsl"
glsl-shaders-append="~~/shaders/igv/adaptive-sharpen_luma.glsl"
[FSRCNNX+]
profile-desc=SD 场景NNEDI3 + FSRCNNX 去伪影)
glsl-shaders-append="~~/shaders/nnedi3/nnedi3-nns32-win8x4.glsl"
glsl-shaders-append="~~/shaders/igv/FSRCNNX_x1_16-0-4-1_distort.glsl"
[Ani4K]
profile-desc=动画Ani4K V2高性能开销
glsl-shaders-append="~~/shaders/Ani4K/Ani4Kv2_ArtCNN_C4F32_i2.glsl"
[AniSD]
profile-desc=SD 动画AniSD高性能开销
glsl-shaders-append="~~/shaders/Ani4K/AniSD_ArtCNN_C4F32_i4.glsl"
[Anime4K]
profile-desc=动画Anime4K 修复 + 去伪影)
glsl-shaders-append="~~/shaders/igv/KrigBilateral.glsl"
glsl-shaders-append="~~/shaders/Anime4K/glsl/Restore/Anime4K_Restore_CNN_Soft_M.glsl"
glsl-shaders-append="~~/shaders/Anime4K/glsl/Restore/Anime4K_Clamp_Highlights.glsl"
[SSIM]
profile-desc=低性能消耗SSIM 超分 + 缩小)
glsl-shaders-append="~~/shaders/igv/SSimSuperRes.glsl"
glsl-shaders-append="~~/shaders/igv/SSimDownscaler.glsl"
# =========================================
# Profile 定义:条件触发
# =========================================
[SD]
# 低清源≤720p自动启用 FSRCNNX+ 增强
profile-cond=height <= 720 or width <= 720
profile-restore=copy
profile=FSRCNNX+
[Deband]
# YUV420P10 以下自动开启去色带
profile-cond=get("video-params/average-bpp") < 24
profile-restore=copy
deband=yes
[hdr-2390]
profile-cond=p.tone_mapping == "bt.2390" and p.current_vo == "gpu-next"
profile-restore=copy
tone-mapping-param=2.0
[peak-percentile]
profile-cond=get("video-params/avg-pq-y") < 0.21 and p.current_vo == "gpu-next"
profile-restore=copy
hdr-peak-percentile=99.8
[SDR-gamut]
# SDR 非 BT.709 内容的色域映射
profile-cond=get("video-params/primaries") ~= "bt.709" and get("video-params/gamma") == "bt.1886"
profile-restore=copy
gamut-mapping-mode=clip
[SDR-target]
# SDR 显示目标配置
profile-cond=not get("video-params/max-luma") and not get("inverse-tone-mapping") and p.current_vo == "gpu-next"
profile-restore=copy
target-colorspace-hint=no
[HDR]
# HDR 内容自动配置
profile-cond=get("video-params/max-luma") > 203
profile-restore=copy
target-peak=auto
target-colorspace-hint=auto
blend-subtitles=no
deband=no
vf=""
[HDR-PASS]
# HDR 直通(仅 HDR 显示模式下生效)
profile-cond=get("video-params/max-luma") > 203 and get("video-target-params/max-luma") > 203 and p.current_vo == "gpu-next"
profile-restore=copy
icc-profile=""
icc-profile-auto=no
target-colorspace-hint=auto
inverse-tone-mapping=no
target-prim=auto
target-trc=auto
target-peak=auto
target-contrast=auto
[video-sync]
# 音频调速超过阈值时切换同步模式,避免明显音高变化
profile-cond=(speed * audio_speed_correction) > 0 and ((speed * audio_speed_correction) < 0.96 or (speed * audio_speed_correction) > 1.04) and not (get("estimated-vf-fps") > 240 or get("display-fps") > 240)
profile-restore=copy-equal
video-sync=display-tempo
[fps-fix]
# 极高帧率/刷新率时使用 audio 同步避免异常
profile-cond=get("estimated-vf-fps") > 240 or get("display-fps") > 240
profile-restore=copy
video-sync=audio
[pgs-fix]
# 修复宽屏视频 PGS 字幕比例错位
profile-cond=get("video-params/aspect") > 16 / 9
profile-restore=copy
stretch-image-subs-to-screen=yes
[audio-filter]
# 多声道音频自动启用动态范围调节(适用于双声道设备)
profile-cond=get("audio-params/channel-count") > 2
profile-restore=copy-equal
af-pre=@dynaudnorm:lavfi=[dynaudnorm=f=500:g=31:p=0.5:m=5:r=0.9]
[pause]
# 暂停时取消置顶
profile-cond=pause
profile-restore=copy
ontop=no
[maximized]
# 最大化时禁止窗口自动调整大小
profile-cond=window_maximized and vid and not get("current-tracks/video/albumart")
profile-restore=copy-equal
auto-window-resize=no
[minimized]
# 最小化时自动暂停
profile-cond=window_minimized and vid and not get("current-tracks/video/albumart")
profile-restore=copy-equal
pause
[end]
# 播放列表结束后退出全屏
profile-cond=idle_active
no-fullscreen
no-window-maximized
[media-title]
# 网络/磁力链接显示媒体标题
profile-cond=path:find('://') ~= nil or path:find('^magnet:') ~= nil
profile-restore=copy
title=${?pause==yes:⏸}${?mute==yes:🔇}${?ontop==yes:📌}${media-title}
osd-playlist-entry=title
# =========================================
# Profile 定义:网络优化
# =========================================
[network-optimize]
# 网络播放时自动启用
profile-cond=demuxer_via_network
profile-restore=copy
cache=yes
cache-secs=600
demuxer-max-bytes=1GiB
demuxer-readahead-secs=120
network-timeout=60
stream-buffer-size=2MiB
prefetch-playlist=yes
stream-lavf-o-append=reconnect=1
stream-lavf-o-append=reconnect_at_eof=1
stream-lavf-o-append=reconnect_streamed=1
stream-lavf-o-append=multiple_requests=1