×

mpv播放器从入门到起飞

hqy hqy 发表于2023-03-14 16:03:05 浏览262 评论0

抢沙发发表评论

简介

首先,mpv播放器并不是只适合极客玩家,对于普通玩家也非常容易上手,开箱就能用,甚至都不需要安装。

如果,你是一个极简主义,那mpv绝对有资格成为你的最佳选择。

其实,我本身对播放器是不挑剔的人,之前一直使用的是迅雷看看,听这名字就知道是一个老用户了,现在改名叫迅雷影音了。

为什么,突然想要切换播放器了呢?

真不是因为广告,而是发现一个软件的功能竟然能越做越差,还不止一个功能,也算是长见识了。

真正让我想要换个播放器的是放20分钟的视频,全屏情况下弹出了三次更新界面。

我对新播放器的要求非常简单:

  1. 开源能播放视频

  2. 最好支持常见格式,懒得自己转码

  3. 颜值高最好

本来我打算用VLC,因为之前在ubuntu系统用过,功能强大,但颜值一般。就像一个非常有才华但是长得一般的人,我承认我肤浅了。

然后,我发现了mpv,一个集颜值与才华于一身的播放器。OSC部分颜值一般,但是可以隐藏,甚至可以自定义。

mpv优点:

  1. 免安装、开箱即用

  2. 支持大量快捷键、操作非常方便

  3. 可定制化程度非常高

  4. 很多其他用户开发的脚本、定制程序

下载安装

下载地址

mpv是夸平台的,选择自己操作系统对应的版本。



下载编译好的版本:



下载之后直接解压就可以了,解压之后的目录大致如下:



解压解压可以用,不用安装:


也可以安装,其实就是关联打开文件类型:

基本使用

OSC(on-screen-controlle):屏幕上的控制功能

界面的OSC部分功能说明:



看界面我标记了一些不常见的功能。例如,章节,视频中很少有章节,因为一般都是一个完整的故事,除非像是荒蛮故事这种,一个电影分成了几个小故事。

OSC界面的功能,基本都可以通过快捷键来调用,所以,可以通过配置把OSC的部分去掉。

当禁用OSC之后,就只有一个播放器:



真正的极简风格。

最常用快捷键

mpv的快捷键都是可以自定义的,这个我们后面详细介绍。

现在,我们就是要开箱即用,使用mpv默认的快捷键。

快捷键动作说明
空格cycle pause暂停/播放
9add volume -2音量减2
0add volume 2音量加2
fcycle fullscreen全屏切换
seek 5快进5秒
seek -5快退5秒
[multiply speed 1/1.1播放速度减10%
]multiply speed 1.1播放速度加10%
qquit退出、关闭播放器
Qquit-watch-later退出记忆当前位置,下次从这里播放
ESC
很多功能可以用ESC键退出,例如全屏

对于普通用户,上面11个快捷键足够了,不必贪多,其他的快捷键99%的情况都用不到,所以到这里就可以结束了,可以需要的时候再查。

习惯了快捷键,用起来是真的爽,例如,退出,q非常方便,现在非常不习惯再用鼠标点X。

可能用到的快捷键

快捷键动作说明
`script-binding console/enable打开控制台,可以看日志,执行命令
>playlist-next播放播放列表中的下一个文件
<playlist-prev播放播放列表中的上一个文件
F8show-text ${playlist}显示播放列表
F9show-text ${track-list}显示视频、音频、字幕信息
oshow-progress显示播放进度,OSC被禁的时候非常有用
DELscript-binding osc/visibilityOSC显示\隐藏
#cycle audio切换音轨,如英文、国语切换
_cycle video切换视频轨道
jcycle sub切换字幕
A
切换视频的宽高比
vcycle sub-visibility显示\隐藏字幕
mcycle mute静音
Tcycle ontop播放器固定到其他应用之上
i
显示视频信息,自动消失
I
显示\隐藏视频信息
sscreenshot截图带字幕,默认保存到桌面
Sscreenshot video截图不带字幕
alt+sscreenshot window截图带OSD和字幕
ctrl+sscreenshot each-frame自动逐帧截图,重复快捷键停止

所有字幕相关的都是针对外挂字幕才生效,视频内嵌的字幕无效。

OSD(on-screen-display):屏幕上的显示信息文字,如:



mpv还有非常多的功能,都可以通过快捷键的方式使用,例如:

  1. 调整视频画面大小、位置

  2. 调整视频色调、灰度值、亮度饱和度

  3. 调整字幕位置、大小

  4. 处理字幕与画面不同步的问题

  5. 处理声音与画面不同步问题

  6. 更多的跳转设置

  7. 更多的速度设置

  8. ……

只能说,作为一个播放器,mpv实在给的太多了。

默认部分我们已经介绍够多了,能满足绝大多数想要开箱即用的朋友了。

接下来的部分,介绍自定义部分。

自定义配置

mpv的可定制化非常高

对于Windows来说,mpv的配置目录在%APPDATA%/mpv目录下,这个目录默认是空的,没有任何东西。

我们可以通过命令行打开(win+r):



配置目录:



我们先看mpv.conf

设定程序启动后默认音量
# volume=80

# 音量最大值设定(范围100%-1000%,默认为130%)
volume-max=1000

# 只在全屏模式下自动隐藏鼠标
# cursor-autohide-fs-only

# 1秒后自动隐藏鼠标
cursor-autohide=1000

# 截屏文件格式
screenshot-format=png
#截屏文件保存路径
# screenshot-directory=D:\image

# 记忆播放位置
save-position-on-quit=yes

# 关闭窗口装饰(无边框)
no-border
# 不使用osc
no-osc
#默认全屏
fullscreen
#禁用默认快捷键配置
no-input-default-bindings

所有,通过mpv 命令行控制的参数,都可以配置在这个文件中。

自定义快捷键

默认的快捷键可以看这里:默认快捷键配置

mpv定义的快捷键太多,如果觉得不方便,想要自定义,就可以在mpv.conf中禁用默认快捷键配置。

然后,添加input.conf,示例如下:

# →快进5秒
RIGHT seek  5
# ←快退5s
LEFT  seek -5
# ↑ 音量加2
UP  add volume 2
# ↓  音量减2
DOWN  add volume -2

# 倍数播放
[ multiply speed 1/1.1
] multiply speed 1.1
{ multiply speed 0.5
} multiply speed 2.0
# 删除键正常速度播
BS set speed 1.0
# 退出
q quit
# 退出自动保存播放位置
Q quit-watch-later

# 退出全屏
ESC set fullscreen no

SPACE cycle pause
# 播放播放列表中的下一个文件
> playlist-next
# 播放播放列表中的上一个文件
< playlist-prev
# 显示/隐藏进度条
O no-osd cycle-values osd-level 3 1
# 显示播放进度
o show-progress

# 显示/不显示视频信息,手动切换
i script-binding stats/display-stats-toggle
# 打开控制台、esc取消
` script-binding console/enable

# 静音/取消静音
m cycle mute

# 切换音频轨道
SHARP cycle audio
# 固定在其他程序之上
T cycle ontop
# 全屏/取消全屏
f cycle fullscreen
# 截图
s screenshot
# 显示/隐藏OSC
DEL script-binding osc/visibility
# 查看播放列表
F8 show-text ${playlist}
# 查看视频、音频、字幕信息
F9 show-text ${track-list}
# 切换长宽比
A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1"

控制台

mpv的又一个强大之处,你可以通过控制台的命令来完成快捷键能做的事情,并且更加灵活。



例如:可以通过seek 300来精确快进5分钟

脚本

我们前面介绍了scripts目录是用来存放脚本。

mpv又一个高度自定义的特性,就算你不熟悉编程,你也可以通过安装别人写好的脚本来实现功能。

用户的脚本你可以在这里:用户脚本 查找

还是有很多非常有用的脚本:

  1. bookmarker,记忆播放文件及位置

  2. recent,最近播放,(recent](github.com/hacel/recent)

  3. autoload,自动加载文件夹的视频到播放列表,uatoload

如果没有找到满意的脚本,还可以自己动手。

例如,我自己追剧的时候,经常不知道看到哪一集了,我希望能快速定位到上次播放的文件和文件所在的目录。

因为,没有找到非常匹配的,于是决定自己动手。

mpv支持JS和lua,lua非常小巧,和Python的语法比较近,所以上手也比较容易。

local utils = require("mp.utils")local msg = require('mp.msg')local log_path = utils.join_path(mp.find_config_file("."), "last.index")local cur_pathfunction get_path()
    local path = mp.get_property("path")
    local workdir = mp.get_property("working-directory")
    return utils.join_path(workdir, path)endfunction read_last()
    local f = io.open(log_path, "r")
    if not f then return end
    local last_path = f:read()
    f:close()
    return last_pathendfunction write_log()
    if not cur_path then return end
    f = io.open(log_path, "w+")
    f:write(cur_path)
    f:close()end-- 打开上次打开文件function open_last_file()
    local file = read_last()
    if file == nil then
      msg.warn("have not last item")
      return
    end
    mp.command("write-watch-later-config")
    mp.commandv("loadfile", file, "replace")end-- 打开上次打开文件所在的目录function open_last_dir()
    local file = read_last()
    if file == nil then
      msg.warn("have not last dir item")
      return
    end
    local dir = utils.split_path(file)
    msg.warn(dir)
    os.execute("explorer "..dir)end-- 打开上次打开文件和所在目录function open_last_filedir()
    local file = read_last()
    if file == nil then return end
    mp.command("write-watch-later-config")
    mp.commandv("loadfile", file, "replace")
    local dir = utils.split_path(file)
    os.execute("explorer "..dir)endmp.register_event("end-file", function()--    不支持网络文件
    if cur_path:find("http.?://") or cur_path:find("magnet:%?") or cur_path:find("rtmp://") then return end
    write_log()end)mp.register_event("file-loaded", function()
    cur_path = get_path()end)mp.add_key_binding("ctrl+f", "open_last_file", open_last_file)mp.add_key_binding("ctrl+d", "open_last_dir", open_last_dir)mp.add_key_binding("ctrl+shift+f", "open_last_filedir", open_last_filedir)

上面代码是实现的打开上次播放文件和目录,保存到scripts目录为lua文件就可以。



然后,我们就可以通过:

  1. ctrl+f:打开上次播放文件

  2. ctrl+d:打开上次播放文件所在目录

  3. ctrl+shift+f:打开上次播放文件及其所在目录

当然也可以通过input.conf自定义快捷键

# 第一部分自定义快捷键 第二部分固定 第三部分add_key_binding的第2个参数
ctrl+L script-binding open_last_file

脚本配置

前面我们知道还有一个目录script-opts,这个目录是用来方脚本配置文件的,mpv自己的一些配置也放这个目录,例如console和osc的配置。



osc.conf内容如下:

timetotal=yes

是mpv用来控制OSC显示的,这个配置项表示显示视频总时间,而不是剩余时间。基本中通过mp.options读取,和脚本文件名字一样。

小结

能坚持看到这里,对于mpv播放器肯定是入门了,能不能起飞,就要看你自己的心情了,想要更多更灵活的定制,可以多看看官方的文档,参考一些别人的脚本和对mpv的定制程序。

视频演示

mpv播放器使用演示


打赏

本文链接:https://www.kinber.cn/post/3735.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客