mpv:命令行媒体播放器
本文目录
概述#
mpv 是一款自由(as in freedom)的命令行媒体播放器。它支持多种媒体文件格式、音频和视频编解码器以及字幕类型。
这里有常见问题解答。
发行版可以在发行列表中找到。
系统要求#
一份不算太老的 Linux(通常只积极支持各发行版的最新版本)、Windows 10 1607 或更高版本,或者 macOS 10.15 或更高版本。
性能尚可的 CPU。如果 CPU 太慢,无法实时解码视频,硬件解码可能有帮助,但必须通过 --hwdec 选项显式启用。
一块不算太差的 GPU。mpv 的重点并不是在嵌入式或集成 GPU 上实现高能效播放(例如,硬件解码甚至默认都不启用)。低功耗 GPU 可能导致撕裂、卡顿等问题。在此类 GPU 上,建议使用 --profile=fast 以获得流畅播放。主视频输出使用着色器(shader)进行视频渲染和缩放,而不是 GPU 固定功能硬件。在 Windows 上,你可能需要确保图形驱动是最新的。在某些情况下,古老的备用视频输出方法可能有帮助(例如 Linux 上的 --vo=xv),但不推荐也不支持这种用法。
mpv 不会刻意在较旧的硬件或旧版、不受支持的操作系统上出问题,但开发时并未考虑这些环境。不保证与此类环境保持兼容。如果它能正常工作,请视为意外之喜。
下载#
关于半官方构建和第三方软件包,请参见 mpv.io/installation。
更新日志#
没有完整的更新日志;不过,播放器核心接口的变更记录在接口更新日志中。
C API 的变更记录在客户端 API 更新日志中。
发行列表总结了每次发行中的大部分重要变更。
默认键位绑定的变更记录在 restore-old-bindings.conf 中。
默认 OSC 绑定的变更记录在 restore-osc-bindings.conf 中。
编译#
编译完整功能需要若干外部库的开发文件。mpv 需要 meson 来构建。Meson 可以从你的发行版或 PyPI 获取。
创建构建目录后(例如 meson setup build),你可以通过 meson configure build 查看所有构建选项的列表。你也可以直接查看 meson_options.txt 文件。日志存储在构建目录内的 meson-logs 中。
示例:
meson setup build
meson compile -C build
meson install -C build
对于 libplacebo,如果构建环境中不容易获得足够版本的 libplacebo,meson 可以把一个 git 检出作为子项目,以便编译 mpv。它会与 mpv 静态链接。示例:
mkdir -p subprojects
git clone https://code.videolan.org/videolan/libplacebo.git --depth=1 --recursive subprojects/libplacebo
必要依赖(不完整列表):
- gcc 或 clang
- X 开发头文件(xlib、xrandr、xext、xscrnsaver、xpresent、libvdpau、libGL、GLX、EGL、xv 等)
- 音频输出开发头文件(libasound/ALSA、pulseaudio)
- FFmpeg 库(libavutil、libavcodec、libavformat、libswscale、libavfilter,以及 libswresample 或 libavresample 之一)
- libplacebo
- zlib
- iconv(通常由系统 libc 提供)
- libass(OSD、OSC、文本字幕)
- Lua(可选,OSC 伪图形界面和 youtube-dl 集成需要)
- libjpeg(可选,仅用于截图)
- uchardet(可选,用于字幕字符集检测)
- 用于 Linux 硬件解码的 nvdec 和 vaapi 库(可选)
Libass 依赖(构建 libass 时):
- gcc 或 clang,x86 和 x86_64 上需要 nasm
- fribidi、freetype、fontconfig 开发头文件(用于 libass)
- harfbuzz(正确渲染组合字符所必需,尤其是在 macOS 上正确渲染非英语文本,以及在任何平台上渲染阿拉伯语/印度语系文字)
FFmpeg 依赖(构建 FFmpeg 时):
- gcc 或 clang,x86 和 x86_64 上需要 nasm
- OpenSSL 或 GnuTLS(编译 FFmpeg 时必须显式启用)
- 如果你想使用编码功能,需要 libx264/libmp3lame/libfdk-aac(编译 FFmpeg 时必须显式启用)
对于原生 DASH 播放,FFmpeg 需要以 --enable-libxml2 构建(尽管存在安全隐患,且 DASH 支持有许多 bug)。
AV1 解码支持需要 dav1d。
要在 Linux 上获得良好的 nvidia 支持,请确保安装了 nv-codec-headers,并且 configure 能找到它。
上述大多数库在普通 Linux 发行版上都有合适版本可用。为了便于编译所有内容的最新 git master,你或许可以使用单独提供的构建封装(mpv-build):它先编译 FFmpeg 库和 libass,然后编译静态链接这些库的播放器。
如果你要构建 Windows 二进制文件,请参见 Windows 编译说明。
发行周期#
每年一到两次,会从当前开发状态切出一个发行版,并分配 0.X.0 版本号。除安全事件外,不再进行后续维护。
发行版的目标是让 Linux 发行版满意。Linux 发行版也应在出现 bug 时应用自己的补丁。
除最新发行版之外的发行版均不受支持,也不进行维护。
更多信息请参见发行政策文档。
Bug 报告#
请使用 GitHub 提供的问题跟踪器向我们发送 bug 报告或功能请求。请遵循模板的说明,否则问题很可能被忽略或作为无效问题关闭。
问题可以在讨论区或 IRC 上提出(见下方联系方式)。
贡献#
请阅读 contribute.md。
对于较小的改动,你可以直接通过 GitHub 向我们发送 pull request。对于较大的改动,请在开始工作前到 IRC 与我们讨论。这会让双方后续的代码审查更容易。
你可以查看 wiki 或问题跟踪器,寻找可以贡献的想法。
许可证#
默认 GPLv2「或更高版本」;使用 -Dgpl=false 时为 LGPLv2.1「或更高版本」。详见说明。
历史#
本软件基于 MPlayer 项目。在 mpv 作为一个项目存在之前,代码库曾在 mplayer2 项目下短暂开发。详情请参见常见问题解答。
联系方式#
大部分活动发生在 IRC 频道和 GitHub 问题跟踪器上。
- GitHub 问题跟踪器:问题跟踪器(在此报告 bug)
- 讨论区:讨论
- 用户 IRC 频道:irc.libera.chat 上的 #mpv
- 开发者 IRC 频道:irc.libera.chat 上的 #mpv-devel
关于#
🎥 命令行媒体播放器
mpv.io
主题:audio、c、ffmpeg、mplayer、mpv、multimedia、video