MPV 在视频播放器中的地位如何?

有一说一,MPV 这个播放器除了交互体验外,就播放效果来说,在一众视频播放器竞争中地位如何?

界面不是问题。播放器我就播放视频,快进全屏倍速,也基本只用这些。没别的额外需求。

今天初识 MPV,是在一个群里,有人说 MPV 是 Window 最强大的浏览器,没有之一。恰逢我有个 HEVC 视频遇到解码的问题,其他知名播放器,pot 或 vlc,都无法正常播放。只有 MPV ,正常播放,解决燃眉之急。加上它本身是命令行播放器,有大神将其移植到 TC 作为预览播放器。因此,我对 MPV 蛮有好感的。

还有一点,装了 madVR 和 LAVFilters 的 PotPlayer,播放同一个 HEVC 视频,我感觉渲染效果不及 MPV 的画质好。

播放器不存在地位这样的排名争论……
播放器目前分3大架构:

MPC系

MPC(以及后续MPC-HC 和 MPC-BE)、PotPlayer都是基于 DirectShow的(PotPlayer在FFmpeg耻辱柱上,使用开源代码却不遵守开源协议),所以都是可以使用一些DirectShow插件,例如LAV三件套、madVR
由于DirectShow是Windows平台上的流媒体框架,所以这些播放器只能用于windows

mplayer系

mpv 分叉自 mplayer2 , mplayer2 分叉自 MPlayer
发家于 Linux 平台, 与ffmpeg关系紧密,mpv已实现跨平台(Mac上著名的 IINA就是基于MPV)

vlc

VLC是从法国高校开始的一个开源媒体播放器项目,VLC的构架十分灵活,开发周期稳定。跨平台

==============
以上播放器具体的技术细节不太清楚,我大致了解就这些

MPV由于没有官方的GUI,使得上手难度较高,但mpv是一整套的解决方案(播放器+解码+渲染+字幕),不像mpc系需要下载配置各种滤镜插件,反而有时会更加简单。

默认界面极为简洁,基本操作如果不看介绍难以上手。操作几乎完全依赖快捷键,没有啥交互界面

自定义程度极高,并且支持脚本来补充功能,对于愿意自己调整设置的人来说很棒。

由于自定义程度很高,mpv自身只有基本功能,一些进阶功能都得靠用户脚本,例如缩略图,暂停时取消置顶等这些对体验影响不小的功能都是不自带的……

总的来说,从零开始折腾很麻烦,如果已经整好一套配置,几乎可以在任意平台通用……直接用别人的整合包也比mpc之类需要自己安装折腾省事

ps:个人体验,有些东西你想改就得翻那个超长的官方文档才能找到对应的设置,有些费事

个人安利时间

我现在用MPV .Net中文修改版,体验还行,GUI终于像样了
不过基本贴近原生mpv的体验,主要是对窗口部分的修改。

多功能右键菜单

图形化编辑器

两种播放列表

快捷指令和富媒体信息

edit:最新版的界面更加漂亮/win11风格了

4 Likes

MPV GUI 推荐使用 MPV-EASY-Player

1 Like

@ shadows 谢谢介绍。

虽然我现在用的是DirectShow,但三个都不让我满意。HCBE界面过于古老缺乏定制性,PotPlayer 则有广告弹窗,FFmpeg耻辱柱也让人膈应。

我也试过VLC,它的界面同样十分呆板,不好用。

而我之前对MPV的印象是,性能不错,但定制性不佳。直到看到你的介绍,才发现对它有很多误解。

我打算尝试MPV。
谢谢你的安利。

对了,“一些进阶功能都得靠用户脚本”,请问这里说的脚本是PY吧,其他脚本也可以用吗?比如LUA,AHK

@unique
主要就是lua啊
Lua, JavaScript, VapourSynth and GLSL shaders that extend mpv’s functionality

谢谢。
请教最重要的一个问题,当它打开多个视频时,历史记录会冲突吗?
DirectShow系最让我痛苦的是,用多个实例打开多个视频,它的播放历史只会记录最后关闭的那个,其他记录都被最后那个覆盖了。也就是说每个实例在启动时都会把配置读取到内存,然后在关闭时再把内存覆盖写入到配置文件。这意味着不同实例间是互斥的。这简单丧心病狂啊。我不知道浪费了多少时间试图解决这个问题,甚至去挨个去找开发者反馈,可就是没有一个解决的。

啊。。。试过了,还是一样,只会记录最后一个关闭的。感觉心灰意冷。。。。。

我个人觉得这样才是正常的吧…
不然怎么保存历史纪录?我甚至都想不出别的保存模式
难道不保留最新还保留最旧的吗?多实例之间怎么独立保存历史纪录呢,那么每次恢复历史纪录时都要选择到底应该恢复哪一个?
我觉得你需要的是书签功能,而不是违背大家使用习惯/常识的“历史纪录”

1 Like

“难道不保留最新还保留最旧的吗?多实例之间怎么独立保存历史纪录呢,那么每次恢复历史纪录时都要选择到底应该恢复哪一个?”,这句我完全无法理解。
比如同时有三个实例,每个都保存啊。就像我运行了三个线程,每个线程都向控制台投递日志,总不能后投递日志就把前面投递的覆盖了吧?不断地记录新记录,这不是很正常很普通的概念吗?
我想像不出不能同时记录的原因,同时保留会有什么负面影响?

恢复当然是恢复最后关闭的那个啊,这个。。很难理解?
这就是历史记录啊,某时间打开了某视频,某时间又关闭了某视频,这不是历史记录是什么。。。。

那么,程序应该如何判断你究竟要恢复哪个实例?

同一个视频,你开了三个实例。都关闭,再打开,应该怎么判断要恢复哪个实例?

难道是我熬夜太多,我认为正常的其实是不正常的。。。。

再说个例子,我有几个AHK线程,都会向一个history.ini写入历史记录,内容类似
[default]
2019-04-10 21:31:25.537 = 强制关闭了QQ
2019-04-10 21:31:25.537 = 打开了微信

而其实这种用法是错误的,后写入的必须覆盖前面的,否则会引发未知的问题? :cold_face:

恢复最后关闭的那个啊。。。

啊啊啊,这很难理解吗?

z:\test.mp4
z:\test.mp4
z:\test.mp4
z:\test.mp4
...

可能有无数个同一视频的记录,但"最后一个",只有一个啊,找到最后一个关闭,呃,这真的很难理解吗?

同时保存多个进程这件事,真是我人生的一大谜团。

我去向开发者反馈
开发者一脸问号:咦,竟然有人会同时多个播放器?
我也一脸问号:咦,竟然没人会同时多个播放器?

现在
前面的同学一脸问号:怎么恢复最后一个关闭的?
我也一脸问号:就是恢复最后一个关闭的啊?

人生,谜团。

谢谢分享。去下载试下。

“恢复最后关闭的”你这例子不就是等于只保留最后关闭的记录吗?
同一个文件的进度记录当然应该新的覆盖旧的,反正你只恢复最后的记录,没有道理要多占用空间保留不会被恢复的记录。

我也测试了,MPV实际的情况:
1,2个MPV窗口都打开同一个视频
2,A窗口拖动进度条到2分钟,关闭A窗口
3,B窗口拖动进度条到4分钟,关闭B窗口
4,再用MPV打开这个视频,自动恢复到4分钟,保留窗口
这不就是你说的恢复最后关闭的记录吗?

5,再用一个MPV窗口打开同一个视频,没有恢复进度(可能是MPV的BUG?)

Potplayer用不惯的,可以试试CPlayer

为啥说不清呢。自闭。

Poto说的如何恢复,可以理解成有一个这样的选项,“无指定视频的空白播放器启动时自动播放最后一个关闭的视频”,这个不难理解吧,这个不需要人手动参与。

再说"A-只保留最后关闭的记录"和"B-保留所有记录"两种场景,二者都有加载海贼王,火影,蜡笔小新三个实例,也都最后一个关闭蜡笔小新。

那么A的历史记录是
1-蜡笔小新

B的历史记录是
1-海贼王
2-火影
3-蜡笔小新

这时二者都使用"恢复最后关闭"的选项,也就是开始播放蜡笔小新。那么你为何要说B场景也是"你这例子不就是等于只保留最后关闭的记录吗?" B明明保留了所有记录啊。

通过B,我们不仅知道播放了海贼王和火影,还可以随时继续它们的进度,接着播放。
而A呢,宝贵的文件历史和进度数据都丢失了。想像下海贼王有800多集,你想在A模式下找到看到哪集了,不觉得头疼吗?

以上是否有效证明:“恢复最后关闭的” 不等于 “只保留最后关闭的记录”?

(至于为什么要最后关闭蜡笔小新,因为这货有2000集啊,在A场景下,我只能含泪先丢失800集的海贼王,再丢失500集的火影。。。。)

你这是打开文件历史的记忆,或者说播放列表(文件夹)记录播放到第几个视频

还以为你说的是一个视频的播放进度记忆

“无指定视频的空白播放器启动时自动播放最后一个关闭的视频”,我并不知道有这样的功能,我记忆中mpv根本没这样的功能……

综上:
你得找找播放列表增强这类的脚本,至少mpv给你机会自己实现

我觉得你基于这个脚本实现看看,接近你的需求了。

我对脚本了解不多,建议找其他熟悉mpv的问问……也许已经有人做了

谢谢。

我说的就是你用的mpv.net,它有历史记录,不过就像我说的,A场景。

“无指定视频的空白播放器启动时自动播放最后一个关闭的视频”,这是根据你们所说的"恢复最后播放"功能所作的类比。你不知道有这样的功能,也就是说MVP根本也没有"恢复最后播放"功能。咱们真是讨论了个寂寞。

似乎有 Properly save playlist file positions with --save-position-on-quit · Issue #8138 · mpv-player/mpv · GitHub
save playlist position on quit · Issue #6164 · mpv-player/mpv · GitHub 明确说了会恢复播放列表的位置
具体怎么使用不清楚