MacBook Air 11" Late 2010运行mpv

MacBook Air 11" Late 2010 硬件配置较弱:

  • Intel Core 2 Duo 处理器

  • NVIDIA GeForce 320M 集成显卡

古早的硬件需要优化才能流畅播放 1024x768 x264/AC3 视频: 最大化利用 NVIDIA 的 VDPAU 硬件解码,并把渲染负担降到最低

硬件解码与渲染核心参数说明

  • 硬件解码 ( hwdec=vdpau ): GeForce 320M 支持 NVIDIA 的 VDPAU 硬件解码( PureVideo HD Gen4 ),能完美硬解 x264/H.264 1024x768 视频,将 CPU 占用率从 80%+ 降至 10% 左右。

  • Wayland 图形输出 ( vo=gpu + gpu-context=wayland ): Sway 是纯 wayland显示服务器协议 窗口管理器,必须让 mpv 直接接入 Wayland 合成器,避免 Xwayland 带来的额外开销。

  • 音频输出 ( ao=pipewireao=alsa ):取决于系统使用的是 PipeWire 还是原生 ALSA。

  • ~/.config/mpv/mpv.conf :

针对 MacBook Air 11" Late 2010 优化的 mpv.conf
# --- 视频渲染与硬件加速 ---
# 开启 GPU 渲染模式
vo=gpu
# 指定 Wayland 原生上下文(适配 Sway)
gpu-context=wayland
# 强制使用 NVIDIA VDPAU 硬件解码(降低 Core 2 Duo CPU 负载)
hwdec=vdpau
# 硬件解码回退策略
hwdec-codecs=all

# --- 性能与采样调优 (针对弱 GPU 优化) ---
# 使用快速缩放算法,避免高负荷 bilinear/bilinear 过滤拖慢 320M 显卡
profile=fast
# 禁用过度的重采样与平滑处理
interpolation=no

# --- 音频与字幕配置 ---
# 音频输出(若使用 PipeWire 设为 pipewire,若仅有 ALSA 设为 alsa)
ao=alsa
# 自动加载双语字幕,优化字幕渲染
sub-auto=fuzzy
# 优先选择中文字幕
slang=zh,chi,chs,sc

# --- 界面与缓存 ---
# 保持播放器长宽比
keep-open=yes
# 针对本地文件增大预读缓存,防止磁盘 I/O 导致卡顿
cache=yes
demuxer-max-bytes=100MiB
demuxer-max-back-bytes=50MiB
  • 要让 VDPAU 硬件解码在 Alpine / Sway 下正常工作,确保宿主机安装了 NVIDIA 驱动对应的 VDPAU 库:

安装VDPAU库
sudo apk add libva mesa-va-gallium libvdpau libva-vdpau-driver

在开源 Nouveau 驱动下,

注意早期是安装 libvdpaumesa-vdpau-gallium 才能让VDPAU硬件解码正常工作。这是因为Nouveau驱动本身是Linux内核级的DRM模块,具体的VDPAU硬件解码接口实现是由Mesa项目中Gallium3D VDPAU状态跟踪器( mesa-vdpau-gallium )提供的。

不过,现在已经替换成 mesa-va-gallium : Mesa提供给Nouveau开源驱动的VA-API硬件加速实现

libva-vdpau-driver 是 VA-API 与 VDPAU 之间的桥梁转换库(使得支持VDAPU的应用可以通过VA-API调用Nouveau硬件解码器)

  • 安装 vainfo 工具来检测 Nouveau的硬件解码器支持情况:

安装 libva-utils 来获得 vainfo
sudo apk add libva-utils
  • 运行 vainfo 输出显示:

vainfo 输出状态
Trying display: wayland
libva info: VA-API version 1.23.0
libva info: Trying to open /usr/lib/dri/nouveau_drv_video.so
libva info: Found init function __vaDriverInit_1_23
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.23 (libva 2.23.0)
vainfo: Driver version: Mesa Gallium driver 26.1.6 for NVAF
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc

注意,这里输出信息:

  • Driver version: Mesa Gallium driver 26.1.6 for NVAF 表示Mesa的 mesa-va-gallium 驱动已经认出了 NVAF (GeForce 320M)芯片组

  • VAProfileNone 行缺少了 VAEntrypointVLD : 这意味着Mesa驱动现在只暴露了视频后处理(Video Processing)接口,但没有将硬件解码器(VP4 Engine)挂载上。

这个现象主要有2个原因:

  • 缺少固件(Firmware): Nouveau的VP4解码器需要外部的芯片固件才能初始化硬解引擎

  • Mesa编译策略或环境设置: 在较新的Mesa 26.1+下,Nouveau开源驱动默认关闭了老旧的NV50/NVAF硬件的纯硬件视频解码功能

我检查了我的系统,发现已经安装了 linux-firmware-nvidia 这个固件,这说明实际上是Nouveau驱动已经不再支持老旧NVAF硬件解码功能。

所以 mpv.conf 配置文件应该设置成 hwdec=auto-safe 这样在无法硬解时平滑切换至CPU解码。

修订为软解的优化配置
# ====================================================================
# mpv Configuration for Legacy Mac (GeForce 320M + Core 2 Duo)
# OS: Alpine Linux / Window Manager: Sway (Wayland)
# ====================================================================

# 1. 基础输出与渲染器设置
vo=gpu
gpu-context=wayland
hwdec=no                      # 显式关闭硬件解码,走 CPU 软件解码,避免 Nouveau 报错

# 2. 针对老旧 GPU 的性能配置 (Profile Optimization)
profile=fast                  # 使用轻量级画质预设,极大降低 320M 显卡的着色器负担
# interpolation=no            # 当显式设置 profile=fast , mpv默认就全局禁用了补帧功能 
dither-depth=no               # 禁用抖动算法以节省 GPU 资源
scale=bilinear                # 使用简单的双线性插值,降低 GPU 采样开销
cscale=bilinear
dscale=bilinear

# 3. CPU 软解多线程优化 (针对 Core 2 Duo 2 核)
vd-lavc-threads=2             # 充分利用双核 CPU 进行 FFmpeg 并行软解

# 4. 音视频同步与缓存 (防止 MKV 丢帧/卡顿)
video-sync=audio              # 以音频为基准同步,防止老硬件上出现画音不同步
demuxer-max-bytes=50M         # 限制解复用器缓存大小,节省系统 RAM
demuxer-max-back-bytes=25M
# --- 音频与字幕配置 ---
# 音频输出(若使用 PipeWire 设为 pipewire,若仅有 ALSA 设为 alsa)如不配置则自动协商
# ao=alsa
# 自动加载双语字幕,优化字幕渲染
sub-auto=fuzzy
# 优先选择中文字幕
slang=zh,chi,chs,sc

# 5. UI 与 OSD 界面轻量化
osd-font='sans-serif'
osd-font-size=24
osd-color='#FFFFFF'
osd-border-color='#000000'
osd-border-size=1

# 6. 其他常用优化
keep-open=yes                 # 播放结束后不自动关闭窗口
autofit-larger=100%x100%       # 限制窗口最大不超过屏幕分辨率

参考

  • gemini