
mpv是一个自由开源的跨平台媒体播放器,具有轻量、兼容性好、播放性能优秀等特点。mpv播放器界面及其简洁,但功能极其强大。除了命令行可启用的上千条选项,外置脚本也是补充和增强mpv功能的重要手段。
mpv的官方wiki下提供了大量用户贡献的脚本(script):
https://github.com/mpv-player/mpv/wiki/User-Scripts
这篇文章为其中几项笔者常用lua脚本进行简单介绍。
功能:自动载入当前播放媒体文件所在目录下的所有同类型媒体文件,依名称排序
链接:https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autoload.lua
脚本选项设置:autoload.conf,可以比较方便修改自动加载哪一类文件。
disabled=no #禁用autoload脚本
images=no #图片
videos=yes #视频
audio=yes #音频
ignore_hidden=yes #忽略隐藏文件 这个脚本的一个缺点是逻辑比较简单,每当手动打开/切换媒体文件都会执行一次,且排序必定为按名称。这会导致在乱序播放列表(playlist-shuffle)后,切换媒体文件,会在已乱序的列表后再添加按名称排序的列表 ,不适合用mpv随机播放音乐的场景,这种场景推荐不用autoload,而是用后面的file-browser脚本手动添加列表再playlist-shuffle
2023/07更新,有真大佬重写了逻辑,现在不会重复加载列表了
功能:使osd-bar始终显示(进度条兼色彩调整条)
链接:https://github.com/422658476/MPV-EASY-Player/blob/master/portable-data/scripts/osd-bar.lua

由上图可见,在设置任务栏居左,mpv窗口最大化后,可以几乎占满16:9的屏幕,但是上下仍有少量黑边。这点黑边可以通过osd-bar.lua脚本利用起来,作为常驻的进度显示。
下载并放置好脚本后,在mpv.conf里加上几行设置代码
#osd-bar宽度[1,100],屏幕宽度的百分比
osd-bar-w=100
#osd-bar高度[0.1,50]屏幕高度的百分比
osd-bar-h=0.4
#位置[-1,1]x为左到右,y为上到下
osd-bar-align-y=1
#设置osd-bar边框粗细为0
osd-bar-border-size=0 重新打开mpv,效果如下,底部有了常驻进度条。在全屏下进度条则会自动隐藏。

功能:进度条预览图
链接:https://github.com/marzzzello/mpv_thumbnail_script#configuration
需要两个脚本文件:mpv_thumbnail_script_client_osc.lua和mpv_thumbnail_script_server.lua。同时,在mpv.conf里关闭mpv自带osc
no-osc 此脚本由于在本地实时处理略缩图,需要占用不少CPU资源,会导致打开视频一段时间内CPU占用率升高,同时还会产生略缩图缓存占用外存,建议酌情使用。

效果图,此时正在生成略缩图中
Windows下生成的略缩图缓存默认位于系统临时文件夹下:%TEMP%\mpv_thumbs_cache
多线程处理:放多个(建议不超过你的CPU物理核心数)mpv_thumbnail_script_server.lua,重命名为mpv_thumbnail_script_server-1.lua、mpv_thumbnail_script_server-2.lua ......
硬解加速:改mpv_thumbnail_script.conf中mpv_hwdec=yes
mpv_thumbnail_script.conf(部分选项,需要更丰富移步原作者的github链接)
cache_directory=D:\Cache\my_mpv_thumbnails #略缩图缓存位置
autogenerate=yes #自动启动
mpv_hwdec=yes #使用硬解
autogenerate_max_duration=3600 #只处理3600秒以内视频的略缩图
prefer_mpv=yes #使用mpv处理,no需要环境变量有ffmpeg
thumbnail_width=200 #略缩图宽200像素
thumbnail_height=200 #略缩图高200像素
功能:长按动作。脚本实现为长按倍速,可自行修改。
链接:https://github.com/Natural-Harmonia-Gropius/mpv_config/
local options = {
bind = 'SPACE',
action = 'set speed 3; set pause no',
invert = 'set speed 1',
duration = 200
} 以上为2~7行部分,意为将空格键(SPACE)设为长按3倍速,将SPACE改为RIGHT可改为向右方向键(键位名称可参考input.conf的专栏)。
功能:播放列表增强。
链接:https://github.com/jonniek/mpv-playlistmanager
mpv原始的播放列表只能查看无法选中,而且查看也只能上下方向键一个一个翻。而这个脚本实现了可以PgUp PgDn翻页、HOME END回顶/至底、ENTER播放选中文件、BACKSPACE将文件从播放列表中移除、左右方向键选中文件上下调整其播放列表中位置等功能。也可在playlistmanager.conf中自定义多个快捷键,比如我在默认之外定义了滚轮上下滚动,鼠标左键确认播放,这里的自定义键位仅在脚本启动时生效,不影响其他时候的快捷键。
加上这个脚本后,mpv播放音乐文件夹和m3u直播源播放列表方便很多,非常推荐使用。

实心为选中,三角为正在播放

功能:剪辑导出视频/音频/gif
链接:https://github.com/ekisu/mpv-webm

主菜单

crop选择画面范围

options
启动脚本后,c裁剪画面部分(根据鼠标悬停按1、2确定矩形范围),1设置开始时间,2设置结束时间,p预览,e编码导出,o可更改导出设置(方向键操作,回车确认,可改输出格式、文件大小、fps等等)。
默认W启用脚本,可在script-opts\webm.conf里修改。如果使用了no-input-default-bindings,可在input.conf里加如下一行设置快捷键启动脚本,这里改成了F4。
F4 script-binding webm/display-webm-encoder
7. thumbfast
功能:与mpv_thumbnail_script相同,生成预览图,但工作原理有差别,运行更快。
链接:https://github.com/po5/thumbfast
mpv_thumbnail_script是生成了真正的略缩图(消耗CPU和硬盘资源),而thumbfast是另外运行了一个mpv程序(消耗内存和GPU资源),配置起来较前者更简单,也无需等待生成略缩图。另一点与mpv_thumbnail_script不同的是,thumbfast不自带OSC部分,因此需要一个支持thumbfast的外置osc脚本。我在文末链接提供了一些基于内置osc修改后支持thumbfast的osc,与其他脚本同样是置于scripts文件夹即可,通用内置osc的设置。

不过毕竟多运行了一个程序,可能产生未知问题,建议不要把thumbfast.lua放在scripts文件夹内自动加载,而是按需启用。
比如把它放在~~home/下

在input.conf中加一行
F5 load-script "~~home/thumbfast.lua";show-text "载入略缩图脚本" 这样可以在打开mpv后,有需要再按F5加载脚本。
8. 外置OSC
功能:替换mpv内置的OSC,更换外观、风格或实现其他功能(譬如上面的thumbfast),可以视为其他播放器中的“皮肤”。另提一句,内置OSC其实也有4种样式可供更换。
非特定脚本,无特定链接,文末链接有几个,均支持了thumbfast。
一些简单的OSC只需要像一般脚本一样放入scripts文件夹,并在mpv.conf中使用no-osc禁用内置OSC即可生效;而使用了一些特殊字符作为图标的OSC需要带上所需字体文件,创建一个fonts文件夹,放在~~home/下(如本文上一张图片),字体文件置于fonts文件夹中。

modern-f:https://github.com/FinnRaze/mpv-osc-modern-f

uosc:https://github.com/tomasklaen/uosc

oscc:https://github.com/longtermfree/oscc
9. recent 最近播放
功能:显示最近播放的文件,并可直接在脚本中打开
链接:https://github.com/hacel/recent

类似playlistmanager的可交互操作。设置见recent.conf文件
默认键盘操作:
UP/DOWN 上下选择
ENTER 打开高亮媒体
DEL 删除高亮记录
0-9 快速选择
ESC 退出
默认鼠标操作 :
WHEEL_UP/WHEEL_DOWN 滚动选择
MBTN_MID 打开高亮媒体(脚本没有提供改键选项,习惯用左键可以在脚本中ctrl+f找到MBTN_MID改为MBTN_LEFT即可)
MBTN_RIGHT 退出
10. crop裁剪画面
功能:裁剪画面至对应比例,便于某些压制即带有上下/左右黑边的视频适应屏幕比例
链接:https://github.com/FinnRaze/mpv-player-config/blob/main/scripts/crop.lua
效果图

原画面16:9

裁剪至2.35:1
原理是根据指定视频比例插入一个lavfi crop滤镜。基于vlccrop修改,去掉一些不常见比例的裁剪项,并自动将hwdec改为auto-copy(此滤镜只有在-copy硬解或软解下生效),按P(注意大写)循环切换比例
11. file-browser 文件浏览器
功能:提供在mpv窗口内进行文件夹切换、文件浏览选择播放添加到列表等功能
链接:https://github.com/CogentRedTester/mpv-file-browser

看起来与playlistmanager相似,但功能不同。playlistmanager是显示和操作当前播放列表,而file-browser显示的是当前文件所在文件夹的所有文件。file-browser的功能更加强大,但自定义也更麻烦一些(自定义动态快捷键位需要另外的json文件),推荐将其作为playlistmanager的补充。
我推荐自定义的项目,不需要json文件:脚本末尾可以直接修改脚本开关的快捷键;file-browser.conf中可以设置根目录root为自己的视频文件夹(默认是~/,C:/),如root=D:/Videos
键位绑定,这里仅选取部分常用功能的描述翻译
下列是默认快捷键:

下列动态快捷键仅在脚本启动时生效:

为方便上github不畅的网友,网盘分享脚本(scripts文件夹内)。附带win_x64 mpv本体、mpv.conf、input.conf、shaders,使用方法可见我的其他mpv相关专栏和视频。
链接: https://pan.baidu.com/s/1Xuoni0Be1RJDz91c6jIBWg?pwd=sxpk 提取码: sxpk
由于个人停用百度服务,度盘不再更新,旧内容依旧可用,需要通过网盘更新的移步评论区置顶。