Friday, June 27, 2014

跨平台视频播放器 mpv

mpv 是一个跨平台(支持 Windows、macOS 以及 Linux)的开源视频播放器,提供了多种高质量视频缩放算法以及完整的色彩管理。更多信息参见其官网以及 GitHub

如果你使用的是 Windows 并且对 ass 字幕渲染有非常高的要求、或者希望使用 madVR 提供的 NGU、NNEDI3 等算法,建议使用 MPC-HC/MPC-BE + LAV + madVR + xy-VSFilter/xySubFilter 的组合。这里主要讲在 macOS 系统下如何使用 mpv 来播放视频。

安装

对于普通用户来说,最简单的安装方法是直接去下载已经编译好的最新版本,解压后把得到的 mpv.app 文件直接拖进应用(Applications)文件夹里。(macOS 系统默认安全设置会阻止该应用运行,因此,首次运行时需要到系统设置-安全与隐私中手动允许它。)

配置

mpv 没有图形界面,需要你编写一个小的配置文件来让它更符合你的要求和习惯。首先打开配置文件要保存的位置,方法是在 Finder 的顶栏打开 Go 菜单下的 Go to Folder,然后输入:

~/.config/

(因为这个文件夹默认是隐藏的,无法直接打开),打开该目录后,新建一个名为 mpv 的文件夹。

打开 macOS 自带的文本编辑(TextEdit)应用,新建一个文档,在“格式”菜单中选择将文档转换为纯文本(Make Plain Text),写好配置命令(见下)后,将这个文件保存在刚才新建的 mpv 文件夹内,文件名为 mpv.conf。

建议添加的配置命令:

mpv 默认的渲染设置保守,所以只要你的 GPU 不是太旧(HD 4000 或以上),推荐使用高质量 OpenGL 渲染:

profile=opengl-hq

并开启色彩管理:

icc-profile-auto

如果你的显示器刷新率不是片源帧率的整数倍(例如群众普遍在 60 Hz 的显示器上观看 24 fps 的片子),可以启用 interpolation 消除镜头平移时的顿挫感:

interpolation
video-sync=display-resample
tscale=oversample

由于很多外挂字幕文件名用的是类似“影片名.chs.ass”这样的格式,默认不会被 mpv 自动加载,需要另外再加这么一行:

sub-auto=fuzzy

其他可以定制的地方还有非常非常多,具体可以参考 GitHub 上的文档自行添加需要的命令。

补充

所有 12 寸的 MacBook、2016 款及之后的所有 MacBook Pro 的默认显示分辨率设置是经过缩放了的。这会导致在播放视频时播放器将视频拉伸到高于“正常”的分辨率,最后再被系统缩回正常分辨率,不但白白多消耗了系统资源,而且由于多了一次不必要的缩放过程产生额外的画质损失。如果你是前面提到的这部分型号的用户,建议你在更大的屏幕可用空间和更好的显示效果之间权衡。如果你要改回符合屏幕物理分辨率的设置:
12 寸 MacBook 改为“Looks like 1152x720”;
13 寸 MacBook Pro 改为“Looks like 1280x800”;
15 寸 MacBook Pro 改为“Looks like 1440x900”。

如果你是 Windows 用户,但也想试试 mpv,可以到这里下载最新的编译版本,解压后即可使用。配置文件(mpv.conf)需要放在前面解压得到文件相同的目录下。

=======================================================

20171004 更新:补充部分增加了对最近新款的 MacBook 系列默认缩放的分辨率设置的建议。

20170104 更新:考虑到本教程的傻瓜化以及多数人并不会看太多标清视频了,去掉了使用 jinc 建议。另外修改了部分措辞。

20161020 更新:根据最近的改动更新了配置文件的写法。原来的 --vo=opengl-hq 改为 --profile=opengl-hq,并且原来 --vo 下的子选项现在都已成为独立选项,不需要写在同一行用冒号隔开了。另外删除了一些已经不必要的说明(macOS 下自 10.11 以来全屏性能问题应该已经解决,windows 下现在默认设置下应该不会那么容易出现撕裂了)。

20160717 更新:那啥……官方的 macOS build 地址不知啥时候已经改了其实。去掉我自己的版本,链接更新了。

20160716 更新:由于官方 macOS 的编译版本已经半年没更新了,放上一个我自己编译的版本。另外 Windows 现在应该会默认尝试使用 ANGLE(现已支持色彩管理),故去除了 Windows 配置加上 dxinterop backend 的建议。

20160308 更新:补充了一点 Windows 下的推荐配置命令,方便 Windows 用户尝试。Windows 下现在也可以使用 icc-profile-auto 这个命令了,而且启用 interpolation 时也不必指定 display-fps 了,故从正文中删去。另外修改了一些措辞。

20151212 更新:做了一点傻瓜化的小修改。另外添加了 interpolation 可能存在的问题。

20151205 更新:现在 mpv 需要指定 video-sync 模式为 display-* 才能启用 interpolation,否则 interpolation 会被自动禁用,上面推荐的命令对此做了相应修改。另外,Windows 平台也可以使用 icc-profile-auto 来自动检测系统设置的 icc/icm 文件了,上面给的 Windows build 链接里 20151110 之后的版本都应该会支持(目前还没有,不过我这里先顺便改了吧)。

20150913 更新:主干现在已经加入 deband 功能,在 vo=opengl-hq 下默认启用。deband 功能的目的是去除画面上颜色渐变区域影响观感的条带,在动画类视频上尤其常见。另外由于 libass 的更新,现在字幕字体的索引和 fallback 会按照各操作系统自身的字体配置来执行,因此在 OS X 上不再需要手动修改 fontconfig 文件 或者自建 ~/.local/share/fonts 目录来存放字体了。

3 comments:

  1. 極度推荐使用 https://github.com/mpv-player/mpv/wiki/User-Scripts 的 autospeed(Windows 使用者則用 autospeedwin)來取代 interpolation,不但較省資源,效果也比較好,畢竟是直接改變螢幕更新率

    ReplyDelete
  2. 請問`12 寸 MacBook 改为“Looks like 1152x720”;` 是哪個設定?

    ReplyDelete