跳转至内容

mpv

来自 ArchWiki

mpv 是一款基于 MPlayer 以及已停止维护的 mplayer2 的媒体播放器。它支持多种多样的视频文件格式、音视频编解码器和字幕类型。有关 mpv 与上述播放器之间详细(虽然并不完全)的差异列表,可参考 [1]

安装

安装 mpv 软件包。

前端

请参阅 List of applications/Multimedia#mpv-based

配置

mpv 带有出色的通用默认设置,在配置较弱或较旧的显卡上也能运行良好。然而,如果您拥有更现代的显卡,mpv 允许您进行大量的配置以获得更好的视频质量(仅受限于您的显卡性能)。为此,您只需创建几个配置文件(默认情况下它们是不存在的)。

注意 配置文件从系统级的 /etc/mpv/ 和用户级的 ~/.config/mpv/ 读取(除非设置了 环境变量 XDG_CONFIG_HOME)。用户级设置会覆盖系统级设置,所有这些设置又会被命令行参数覆盖。建议使用用户特定的配置,因为这可能需要一些反复试验。

为了帮助您入门,mpv 提供了带有默认设置的示例配置文件。您可以复制它们作为起点:

$ cp -r /usr/share/doc/mpv/ ~/.config/

mpv.conf 包含了 mpv 的大部分设置,input.conf 包含了按键绑定。请通读它们以了解它们的工作方式以及有哪些选项可用。

常规设置

将以下设置添加到 ~/.config/mpv/mpv.conf 中。

字幕配置

启用模糊搜索

sub-auto=fuzzy

更改字体

sub-font="fontName"

加粗字幕以提高可读性

sub-bold=yes

高质量配置

默认情况下,mpv 使用在质量和性能之间取得平衡的设置。此外,它提供了两个预定义配置方案:用于最高性能的 fast 和用于最佳渲染质量的 high-quality。您可以使用 --profile=name 选项应用特定的配置方案,并使用 --show-profile=name 查看其内容。

profile=high-quality

可以通过 i 键调出实时统计信息,查看 mpv 的性能表现。这对于确保您的硬件能够跟上配置以及比较不同配置非常有用。

最后两个选项稍微复杂一些。video-sync=display-resample 会在音视频不同步时,通过重采样音频来解决,而不是丢弃视频帧(轻微的音频音调变化通常比丢弃帧更难察觉)。mpv wiki 上有一篇深入的文章,标题为 显示同步 (Display Synchronization)interpolation 通过改变帧的显示方式,使画面在显示器上看起来更平滑,从而让源帧率与显示器的刷新率更好地匹配(不要与 SVP 那种将视频转换为 60fps 的技术混淆)。mpv wiki 上有一篇深入的文章,标题为 插值 (Interpolation),它也常被称为 smoothmotion

profile=high-quality
video-sync=display-resample
interpolation
注意 如果使用了 NVIDIA Optimusvideo-sync=display-resample 行可能会导致视频播放速度加快。它还会完全搞乱某些系统上的帧同步,似乎完全阻止了插值功能的工作。

除此之外,您还可以做很多事情,但操作会变得更加复杂,需要更强大的显卡,并且这些功能也在不断发展中。简而言之,您可以加载特殊的着色器(shader),执行异国情调的缩放和锐化技术,包括一些真正使用在图像上训练的深度神经网络的技术(适用于现实世界内容和动画内容)。要了解更多信息,请查看 mpv wiki,尤其是 用户着色器章节

还有许多其他您可能需要的选项。建议阅读 mpv(1)。从命令行运行 mpv 并检查配置的错误信息也很有帮助。

自定义配置方案

mpv.conf 中可以创建 配置方案 (profiles),它们本质上只是“选项组”,您可以利用它们:

  • 无需重写文件即可快速切换不同的配置。
  • 为特定内容创建特殊方案。
  • 嵌套 配置方案,以便可以使用更简单的方案组合成更复杂的 配置方案

创建配置方案很简单。mpv.conf 顶部的区域称为顶级区域,您在那里写入的任何选项在 mpv 启动后都会生效。但是,一旦您通过在方括号中写入名称来定义一个配置方案,您在它下面写入的每个选项(直到定义下一个方案)都被视为该方案的一部分。这是一个示例 mpv.conf

profile=myprofile2        #Top level area, load myprofile2
ontop=yes                 #Always on top

[myprofile1]              #A simple profile, top level area ends here
profile-desc="a profile"  #Optional description for profile
fs=yes                    #Start in full screen

[myprofile2]              #Another simple profile
profile=high-quality      #A built in profile that comes with mpv
log-file=~~/log           #Sets a location for writing a log file, ~~/ translates to ~/.config/mpv

顶级区域只有两行,下面定义了两个独立的配置方案。当 mpv 启动时,它会读取第一行,加载 myprofile2 中的选项(这意味着它会加载 high-qualitylog-file=~~/log 中的选项),最后它会加载 ontop=yes 并完成启动。请注意,myprofile1 从未被加载,因为它在顶级区域中没有被调用。

或者,也可以从命令行调用 mpv

$ mpv --profile=myprofile1 video.mkv

这样它将忽略除 myprofile1 以外的所有选项。

自动配置方案

某些类型的配置方案会根据文件扩展名或使用的协议自动加载。

这些配置方案将针对所有匹配文件扩展名的文件自动加载(分别针对所有 .mkv.gif 文件)

[extension.mkv]
keep-open
volume-max=150

[extension.gif]
osc=no
loop-file

只要播放任何 http 或 https 流(例如 mpv https://example.com/video.mp4),就会自动加载此方案。

[protocol.https]
speed=2
keep-open

[protocol.http]
profile=protocol.https

运行 mpv --list-protocols 可以查看 mpv 支持的不同协议。

按键绑定

鉴于 /usr/share/doc/mpv/input.confmpv(1) § COMMAND INTERFACE 中的示例,按键绑定非常直接。

将以下示例添加到 ~/.config/mpv/input.conf

shift+s         screenshot each-frame
Shift+UP        seek  600
Shift+DOWN      seek -600
=               cycle video-unscaled
-               cycle-values window-scale 2 3 1 .5
WHEEL_UP        add volume 5
WHEEL_DOWN      add volume -5
WHEEL_LEFT      ignore
WHEEL_RIGHT     ignore
Alt+RIGHT       add video-rotate 90
Alt+LEFT        add video-rotate -90
Alt+-           add video-zoom -0.25
Alt+=           add video-zoom 0.25
Alt+j           add video-pan-x -0.05
Alt+l           add video-pan-x 0.05
Alt+i           add video-pan-y 0.05
Alt+k           add video-pan-y -0.05
Alt+BS          set video-zoom 0; set video-pan-x 0; set video-pan-y 0

如果想在 mpv 中复刻 MPC-HC 的按键绑定,请参考 [2]

其他配置文件

此外,还可以创建一些其他的配置文件和目录,其中包括:

  • ~/.config/mpv/script-opts/osc.conf 用于管理屏幕控制器 (OSC)。更多信息请参阅 mpv(1) § ON SCREEN CONTROLLER
  • ~/.config/mpv/scripts/script-name.lua 用于存放 Lua 脚本。示例请参阅 [3]

有关其他文件和目录的信息,请参阅 mpv(1) § FILES

脚本

mpv 拥有多种多样的脚本,可以扩展播放器的功能。为此,它内置了对 Lua 和 JavaScript 的绑定。

脚本通常通过放置在 ~/.config/mpv/scripts/ 目录中安装(如果目录不存在,可能需要先创建它)。之后,它们会在 mpv 启动时自动加载(此行为可以通过其他 mpv 选项进行修改)。一些脚本自带安装和配置说明,请务必查看。此外,一些脚本可能已经过时、损坏或不再维护。

JavaScript

JavaScript(通过 MuJS 的 ES5 实现)自 2014 年起就被支持作为 mpv 的脚本语言。目前只有少量脚本可用,但感兴趣的用户可以在 mpv(1) § JAVASCRIPT 中查阅文档。

要开始使用,请将扩展名为 .js 的脚本放入 mpv 的 scripts 目录中,例如:

~/.config/mpv/scripts/fullscreen-off-on-pause.js
function onPauseChange (prop, enabled) {
    if (enabled) {
        mp.set_property('fullscreen', 'no')
    }
}

mp.observe_property('pause', 'bool', onPauseChange)

有关详细信息,例如使用 require 加载 CommonJS 模块,请参阅 mpv(1) § CommonJS modules and require(id)

Lua

mpv 的 Lua 脚本开发记录在 mpv(1) § LUA SCRIPTING 中,示例位于 TOOLS/lua 中,这些示例被安装在 /usr/share/mpv/scripts

例如,您可以启用内置脚本来自动裁剪带有黑边的视频:

$ ln -s /usr/share/mpv/scripts/autocrop.lua ~/.config/mpv/scripts

mpv-ytdlAutoFormat

mpv-ytdlautoformat 是一个 Lua 脚本,可以针对 Youtube、Twitch 或您指定的域名自动更改 ytdl-format,例如改为 480p 或您想要的质量。

mpv-webm

mpv-webm (或简称为 webm) 是一个非常易于使用的 Lua 脚本,允许您在观看视频时创建 WebM 文件。它包含多个功能,且没有任何额外的依赖(完全依赖 mpv)。

ytdl-preload

ytdl-preload 是一个用于预加载播放列表中下一个 ytdl 链接的 Lua 脚本。

注意 该脚本仍处于积极开发过程中。

C

mpv-mpris

C 插件 mpv-mpris 允许其他应用程序通过 MPRIS 协议与 mpv 集成。例如,安装 mpv-mpris 后,kdeconnect 可以在收到来电时自动暂停 mpv 中的视频播放。另一个例子是蓝牙音频设备上的按键(播放/暂停等)。

要使用该插件,请安装 mpv-mpris

Vapoursynth

Vapoursynth 是 AviSynth 的替代品,可以在 Linux 上使用,允许通过 Python 脚本进行视频处理。Vapoursynth 的 Python 脚本可以用作 mpv 的视频滤镜。

mpv 软件包现在默认启用 Vapoursynth 支持。

SVP 4 Linux (SmoothVideoProject)

本文或本章节已过时。

原因: SVP 在 30 天试用期后现在需要付费许可证。(在 Talk:Mpv 中讨论)

SmoothVideoProject SVP 是一款主要以将视频转换为 60fps 而闻名的程序。它在 64 位 Linux 上是免费且功能齐全的(在 Windows 和 OS X 上需要付费,且与 32 位 Linux 不兼容)。

它有三个主要功能,每个功能都可以根据需要禁用/启用(您不需要强制使用运动插值)。

  1. 运动插值 (youtube 视频) - 一种将视频转换为 60fps 的算法。这会产生一种颇具争议的“肥皂剧效应”,有些人喜欢它,而另一些人则讨厌它。遗憾的是,该算法并不完美,并且引入了比预期更多的奇怪伪影。该算法可以通过滑块进行微调,以实现性能或质量。它还具有一些伪影减少设置,通过将实际帧与生成的帧进行插值,减少伪影的可见性。帧率检测可以设置为自动或手动(对于某些用户来说,手动似乎可以解决性能问题)。
  2. 黑边照明 (youtube 视频) - 如果图像的宽高比在显示器上产生黑边,SVP 会用屏幕内容生成的“光”照亮黑边。它具有一定的定制能力,但默认值已经非常接近最优。
  3. LED 环境光控制 (youtube 视频) - 能够控制连接到电视机的 LED 环境光。

在编译了支持 Vapoursynth 的 mpv 后,让 SVP 与 mpv 配合使用非常简单。只需安装 svp-binAUR,打开 SVP 程序让它评估您的系统性能(您可能需要先关闭其他程序,以获得准确的读数),最后将以下 mpv 配置方案添加到您的 mpv.conf 中[4]

mpv.conf
[svp]
input-ipc-server=/tmp/mpvsocket     # Receives input from SVP
hr-seek-framedrop=no                # Fixes audio desync
watch-later-options-remove=vf       # Do not remember SVP's video filters

# Can fix stuttering in some cases, in other cases probably causes it. Try it if you experience stuttering.
#opengl-early-flush=yes

然后,为了使用 SVP,您必须在打开文件之前确保 SVP 程序在后台运行,并使用该配置方案启动 mpv。您可以:

$ mpv --profile=svp video.mkv

或者在 mpv 配置 的顶级部分设置 profile=svp

如果您想使用硬件解码,必须使用 copy-back 解码器,因为普通解码器与 Vapoursynth 不兼容(选择以 -copy 结尾的 hwdec 选项)。例如:

hwdec=auto-copy
hwdec-codecs=all

无论如何,mpv 开发人员不建议使用硬件解码,因为它不太可能对性能产生重大影响。

技巧与提示

画面

硬件视频加速

请参阅 硬件视频加速

硬件加速视频解码可通过 --hwdec=API 选项实现。有关所有支持的 API 和其他必需选项的列表,请参阅 mpv(1) § hwdec

要使其永久生效(例如在桌面环境播放视频时),请将其添加到配置文件中:

~/.config/mpv/mpv.conf
hwdec=auto

要允许 CPU 进行视频滤镜处理,请选择 *-copy API。

在视频运行时,使用键盘快捷键 Ctrl+h 切换硬件解码。

要排查硬件加速故障,可能需要调整日志级别(请参阅 mpv(1) § msg-level)。例如,--msg-level=vd=v,vo=v,vo/gpu/vaapi-egl=trace 启用以下功能:

  • 来自视频解码器 (vd) 和视频输出 (vo) 模块的 详细 (verbose) 消息。
  • 负责视频解码的模块的更详细的 跟踪 (trace) 消息。在这里,在不调整任何日志级别运行 mpv 一次后,通过经验确定了所关注的模块为 vo/gpu/vaapi-egl

快速循环切换宽高比

您可以使用 Shift+a 在宽高比之间循环切换。

忽略宽高比

您可以使用 --keepaspect=no 忽略宽高比。要使该选项永久生效,请将 keepaspect=no 行添加到配置文件中。

绘制到根窗口

运行 mpv 并带上 --wid=0mpv 将绘制到窗口 ID 为 0 的窗口中。

始终显示应用程序窗口

要在从命令行启动 mpv 时即使对于音频文件也显示应用程序窗口,请使用 --force-window 选项。要使该选项永久生效,请将 force-window=yes 行添加到配置文件中。

禁用视频输出

要在从命令行启动时禁用视频输出,请使用 --vid=no 选项,或其别名 --no-video

终端视频

  • --vo=tct “在文本控制台中工作的彩色 Unicode 艺术视频输出驱动程序。”
  • --vo=caca “在文本控制台中工作的彩色 ASCII 艺术视频输出驱动程序。” libcaca 支持由于安全漏洞已在 Arch 上被禁用(参见 FS#70962),且由于上游处于不活跃状态而未重新添加:请安装 mpv-fullAUR
  • --vo=kitty “使用 Kitty 协议进行视频输出,适用于所有支持此协议的终端。”

音频

音量太低

在您的配置文件中将 volume-max=value 设置为一个合理的值,例如 volume-max=150,这样您就可以将音量增加到 150%,即声音大小翻倍以上。音量设置过高会导致音频削波失真。此外(或作为替代方案),您可以使用 af=acompressor 进行 动态范围压缩

指定音频输出

运行以下命令以获取可用音频输出设备的列表:

$ mpv --audio-device=help

然后将其中一个添加到 ~/.config/mpv/mpv.conf 中。例如:

audio-device=alsa/hdmi:CARD=NVidia,DEV=1

高清音频直通 (Passthrough)

要启用 TrueHD 和 DTS-MA 等高清音频编解码器以直通到 AV 接收器,请将以下内容添加到 ~/.config/mpv/mpv.conf 中:

audio-spdif=ac3,eac3,dts-hd,truehd

音量标准化

本文章或章节需要扩充。

原因: 添加关于可用滤镜的更多细节,有关 loudnormdynaudnorm 的比较,请参见 [5]。(在 Talk:Mpv 中讨论)

不同的来源可能有不同或不一致的响度,因此 mpv 用户可能需要配置自动音量标准化。例如:

~/.config/mpv/input.conf
n cycle_values af loudnorm=I=-30 loudnorm=I=-15 anull

这将按键 n 绑定为在指定的音频滤镜 (af) 设置之间循环切换:

  • loudnorm=I=-30: I=-30 的 loudnorm 设置,音量柔和,适合背景音乐。
  • loudnorm=I=-15: 更大的音量,适合当前观看的视频。
  • anull: 将音频滤镜重置为空,即禁用音频滤镜。
注意 绑定按键不会更改默认的音频滤镜。要更改默认设置,请在主配置文件中添加例如 af=loudnorm=I=-30

mpv 中的音频过滤由 FFmpeg 后端提供。有关详细信息,请参阅 Wikipedia:EBU R 128ffmpeg loudnorm 滤镜文档

另请参阅提到不同选项的上游问题 [6][7]

使用 Lua 脚本将 mpv 改进为音乐播放器

这篇博客文章 介绍了 music.lua 脚本,展示了如何使用 Lua 脚本将 mpv 改进为音乐播放器。

退出时保存位置

默认情况下,可以通过按下 Shift+q 保存位置并退出。快捷键可以通过在按键绑定配置文件中设置 quit_watch_later 来更改。

要自动在退出时保存当前播放位置,请使用 --save-position-on-quit 启动 mpv,或将 save-position-on-quit 添加到配置文件中。

保存播放列表位置并在下一个文件处暂停

播放列表可以是一个简单的文件列表,请参阅 mpv(1) § playlist。要播放播放列表并记住其位置:

$ mpv --save-position-on-quit --pause --reset-on-next-file=pause --playlist=/path/to/playlist

使用 --pause 选项,mpv 将以暂停状态启动,--reset-on-next-file=pause 将在切换到下一个文件时重置暂停模式。

播放 DVD

mpv 不支持 DVD 菜单。要从视频 DVD 的最长标题开始播放,请使用命令:

$ mpv dvd://

可选的标题指定符是一个数字(从 0 开始),用于在 DVD 上的独立视频流之间进行选择:

$ mpv dvd://[title] 

已复制到本地文件系统的 DVD(例如使用 dvdbackup 工具)可以通过指定本地副本路径来播放:--dvd-device=PATH

请参考以下用于播放本地文件系统 DVD 的 桌面文件 (.desktop) 示例:

[Desktop Entry]
Type=Application
Name=mpv Media Player DVD 
GenericName=Multimedia player
Comment=Play movies and songs
Icon=mpv
Exec=mpv dvd:// --player-operation-mode=pseudo-gui --force-window --idle --dvd-device=%f
Terminal=false
Categories=AudioVideo;Audio;Video;Player;TV;
# (MimeType and X-KDE-Protocols omitted, see original mpv.desktop file)

通过将 Exec 行替换为:

Exec=mpv dvd://0 dvd://1 dvd://2 dvd://3 dvd://4 dvd://5 dvd://6 dvd://7 dvd://8 dvd://9  --player-operation-mode=pseudo-gui --force-window --idle --dvd-device=%f

mpv 播放器会将 DVD 标题 0 到 9 放入播放列表中,允许用户连续播放这些标题,或使用 mpv GUI 在 DVD 标题之间前后跳转。

安装 libdvdcss 以修复错误:

[dvdnav] Error getting next block from DVD 1 (Error reading from DVD.)

恢复旧版 OSC

自 0.21.0 版本起,mpv 使用底部栏 (bottombar) 取代了屏幕控制 (OSC)。如果您想恢复旧版屏幕控制,可以按照 此处的说明 编辑 mpv 配置。

可复现的截图

截图模板选项可以包含截图帧的精确时间码 (HH:MM:SS.mmm)。有意义的文件名使得了解截图来源变得容易。可以这样设置:

~/.config/mpv/mpv.conf
screenshot-template="%F - [%P] (%#01n)"

这将扩展为 文件名 - [HH:MM:SS.mmm] (编号).jpg。示例结果:

Gunsmith Cats/
├── Gunsmith Cats Ep. 01 - [00:00:50.217] (1).jpg
├── Gunsmith Cats Ep. 01 - [00:22:55.874] (1).jpg
├── Gunsmith Cats Ep. 01 - [00:22:55.874] (2).jpg
└── Gunsmith Cats Ep. 02 - [00:15:05.778] (1).jpg

额外的好处是它排序良好,因为按字母顺序,时间码会在剧集编号内排序。

有关更多信息,请参阅 mpv(1) § screenshot-template

创建单张截图

创建单张截图的示例,使用起始时间 (HH:MM:SS):

$ mpv --no-audio --start=00:01:30 --frames=1 /path/to/video/file --o=/path/to/screenshot.png

截图将保存在 /path/to/screenshot.png。

直播

在 mpv 中观看 Twitch.tv 直播

如果已安装 yt-dlpyoutube-dlAURmpv 可以直接打开 Twitch 直播流。

或者,请参阅 Streamlink#Twitch

另一个基于 Livestreamer 的替代方案是这个 Lua 脚本:https://gist.github.com/ChrisK2/8701184fe3ea7701c9cc

youtube-dl 和格式选择

默认的 --ytdl-formatbestvideo+bestaudio/best。对于有 4K 分辨率可用的 YouTube 视频,这意味着即使您的连接显示器分辨率低得多,您的设备也可能在软件层面难以解码 4K VP9 编码的视频。

不过,设置正确的 youtube-dl 格式选择器可以轻松解决此问题。在以下配置示例中,仅会考虑垂直分辨率为 1080 像素或更低的视频。

ytdl-format="bestvideo[height<=?1080]+bestaudio/best"

如果您想完全避开某种编解码器,因为您无法进行硬件解码,您可以将其添加到格式选择器中。例如,我们可以选择忽略 VP9:

ytdl-format="bestvideo[height<=?1080][vcodec!~='vp0?9']+bestaudio/best"

如果您更喜欢最高质量的开放编解码器(VP9 和 Opus),请使用:

ytdl-format="((bestvideo[vcodec^=vp9]/bestvideo)+(bestaudio[acodec=opus]/bestaudio[acodec=vorbis]/bestaudio[acodec=aac]/bestaudio))/best"

要从终端仿真器使用 yta 搜索词 查找并流式传输音频,请将以下函数放入您的 Shell 启动文件 中:

function yta() {
    mpv --ytdl-format=bestaudio ytdl://ytsearch:"$*"
}

V4L2 AV 采集设备

例如,从 USB 网络摄像头或 USB HDMI 采集设备进行实时流式传输。

查找 V4L2 设备的视频设备节点:

$ v4l2-ctl --list-devices
HDMI Capture: HDMI Capture (usb-0000:07:00.1-2):
	/dev/video2
	/dev/video3
	/dev/media1

通常这是第一个列出的 /dev/video* 节点,此处为 /dev/video2

然后,查找采集设备的 PulseAudio 源名称:

$ pactl list short sources | grep --invert-match --regexp=.monitor
(...some devices omitted...)
8750	alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo	PipeWire	s16le 2ch 48000Hz	SUSPENDED

该名称此处为 alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo

现在您可以使用此命令启动 MPV:

$ mpv --audio-file=av://pulse:alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo -- av://v4l2:/dev/video2

系统集成

如果安装了 youtube-dlAURyt-dlp 且正在使用 KDE Plasma,则可以在 KDE 剪贴板中创建一个自定义操作,以方便地播放视频网站的链接。

  1. 打开剪贴板配置菜单(通常通过右键点击系统托盘中的图标),然后转到 操作 (Actions) 选项卡。
  2. 点击 添加操作 (Add Action),然后输入正则表达式以检测您想要播放视频的网站(例如 ^http.+(youtu|twitch) 以检测 YouTube 和 Twitch URL)。
  3. 点击 添加命令 (Add Command),在 命令 下输入 mpv %s,并在 描述 下输入 mpv

现在,您可以通过按下 Ctrl+Alt+r 并从上下文菜单中选择 mpv,从剪贴板播放视频链接。您可能需要进入 高级设置 并从 禁用类型为 WM_CLASS 的窗口的操作 部分中删除 Firefox。

故障排除

常规调试

如果您在使用 mpv 播放时遇到困难(或者它完全无法运行),那么您应该做的前三件事是:

  1. 从命令行运行 mpv-v 标志会增加详细程度)。如果幸运的话,会有一条错误消息告诉您哪里出了问题。
    $ mpv -v video.mkv
  2. mpv 输出日志文件。日志文件可能很难筛选,但如果有东西损坏了,您可能会在那里看到它。
    $ mpv -v --log-file=./log video.mkv
  3. 在没有配置文件的情况下运行 mpv。如果运行良好,说明问题出在您的配置中(也许您的硬件无法跟上您的设置)。
    $ mpv --no-config video.mkv

如果 mpv 运行但效果不佳,那么值得一看的第四件事是实时统计信息(使用 i),查看其性能表现。

修复播放卡顿和撕裂

在支持的硬件上,mpv 默认使用 OpenGL 视频输出设备设置。在尝试使用 Intel HD4XXX 系列显卡或类似设备在 4K 显示器上播放视频等情况下,您会发现视频播放不可靠,卡顿到有时完全停止,并且在使用任何 OpenGL 输出设置时有严重的撕裂。如果您遇到这些问题,使用 XV (Xorg 专用) 视频输出设备可能会有所帮助:

~/.config/mpv/mpv.conf
vo=xv
注意 这是 X 上兼容性最好的 VO,但质量较低,并且在 OSD 和字幕显示方面存在问题。

可以进一步提高播放性能(特别是在较低端的硬件上),但这在大多数情况下会显着降低视频质量。

可以考虑以下 选项 来提高视频播放性能:

~/.config/mpv/mpv.conf
vd-lavc-fast
vd-lavc-skiploopfilter=skipvalue
vd-lavc-skipframe=skipvalue
vd-lavc-framedrop=skipvalue
vd-lavc-threads=threads

窗口合成器相关问题

mpv(1) § Window 中所述,mpv 默认在全屏模式下禁用任何活动的窗口 合成器。这样做是为了防止播放过程中潜在的性能问题。

对于 KWin 或 Mutter 等窗口合成器,即使在窗口模式下禁用窗口合成也可能是有利的。这可以通过设置 x11-bypass-compositor=yes 选项来实现。

禁用合成有两个缺点:

  • 重新启用合成可能会引入一段时间的卡顿,特别是在使用 KWin 合成时。
  • 合成提供的任何效果都将暂时不可用(直到 mpv 重新启用它),这在 Plasma 中会阻止默认的应用程序切换器工作。

为了规避这些问题,您可以尝试通过 x11-bypass-compositor=no 保持启用您的合成器。

没有音量条,无法调节音量

在音量图标上滚动鼠标滚轮。

GNOME 黑屏(Wayland)

如果使用 Wayland,mpv 可能无法挂起 GNOME 的电源管理设置,导致视频播放期间屏幕保护程序关闭显示器。一个变通方法是将 gnome-session-inhibit 添加到 mpv.desktopExec= 行的开头。

为了仅在播放期间抑制屏幕保护程序,请使用 mpv_inhibit_gnomeAUR。或者,可以使用基于 gnome-session-inhibitmpv lua 脚本

提示 io.mpv.Mpv flatpak 应用程序已经包含了 mpv_inhibit_gnome 插件。

GNOME Wayland 下光标主题未生效

请参阅 GNOME/Troubleshooting#Cursor size or theme issues on Wayland

AMD GPU 上缺失 CUDA 库的错误消息

v0.34.1 及更早版本上,在 AMD GPU 上使用 VAAPI 硬件加速时,您可能会看到一条持续的错误消息,显示 Cannot load libcuda.so.1。可以通过设置 gpu-hwdec-interop=vaapi 来抑制该消息。

相关错误报告:Github issue #9691, Github issue #8765

此问题已在上游 pull request #9842 中修复。

PipeWire 被屏蔽时无法播放音频

如果 mpvPipeWire屏蔽 (masked) 的系统上崩溃或无法播放音频,并报告无输出或管道损坏,请将 --ao 选项设置为符合您环境的值。在 mpv.conf 中设置以实现持久化配置。

mpv 无法开始从文件播放 DVD

如果 mpv 无法以纯 VIDEO_TS/VOB 结构从文件播放 DVD,则可能是恢复播放位置功能出了问题。尝试清理 .config/mpv/watch_later 文件夹,或者使用 no-resume-playback 选项启动 mpv 和/或设置 save-position-on-quit=no 选项。

修复暂停恢复播放后的卡顿

如果使用 PulseAudio 时视频卡顿,请尝试 mpv(1) § --pulse-latency-hacks 中讨论的 pulse-latency-hacks 选项。

~/.config/mpv/mpv.conf
pulse-latency-hacks=yes

屏幕共享无法捕获 mpv 的音频

例如,当您通过 Discord 的“共享窗口”功能将 mpv 共享到 Discord 中,并指定同时也共享音频时,Discord 却无法捕获 mpv 的音频。

这通常在系统使用 PipeWire 时发生。默认情况下,mpv 会使用其 pipewire 音频输出驱动程序,这可能会导致此问题。

解决方法是将 mpv 切换到其 pulse 音频输出驱动程序。由于 PipeWire 也实现了 PulseAudio 的音频 API,这通常不会造成问题。

从命令行运行 mpv 时,可以通过提供 --ao=pulse 选项来实现。

要永久使 mpv 使用其 PulseAudio 音频输出驱动程序,可以在 mpv 配置文件中放入 ao=pulse 行。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.