V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lhc70000
V2EX  ›  分享创造

IINA - 一个现代的 macOS 视频播放器

  lhc70000 ·
lhc70000 · 2017-01-04 19:14:15 +08:00 · 71731 次点击
这是一个创建于 2874 天前的主题,其中的信息可能已经有所发展或是发生改变。

作为一个 Mac 用户,或许你和我一样感到过疑惑:为什么这样一个拥有众多高质量软件的平台,竟没有一个强大而优雅的视频播放器。

说起 macOS 上的视频播放器,大多数人会举出 QuickTime 、 VLC 、 MPlayerX 等名字,然而他们的缺点也显而易见: QuickTime 支持的格式太少; VLC 界面不美观,也时常卡顿; MPlayerX 基于稍稍过时的 mplayer ,不再有大幅更新,而且界面......不是那么 Mac 。

这个知乎问题中,有人推荐过了 mpv 。 mpv 是 mplayer 系唯一活跃开发的分支,也是当前跨平台功能最强大的播放软件之一。两年前的我也是从这个问题才了解到 mpv ,当即装上测试,对它的解码能力和强大配置选项有了很深的印象。但即使作为程序员的我,也用不惯它的命令行界面:一个媒体类软件,怎能没有一个好用好看的 UI 呢?

所以今年暑假,我突然冒出「做一个现代的 macOS 视频播放器」的想法。我经常想出个点子做一两天之后坑掉,但是幸运的是,对于这个项目,虽然中间由于自己懒和课程太忙暂停了好一阵,我还是坚持下来了。

Project IINA,是一个基于 mpv 、契合 macOS 设计风格、力求做到最佳用户体验、轻便且功能强大的视频播放器项目。

解码和播放

IINA 以 mpv 为播放核心,所以享受到了 mpv 解码和图像方面的所有优点。与 MPlayerX 使用的 slave mode 不同, IINA 使用了 libmpv 的 C API ,来提供更加稳定快速的渲染和控制。此外,它使用原始屏幕分辨率渲染,所以比起其他一些播放器画质有显著提高。

( IINA 与 MPlayerX 同分辨率下的字幕渲染对比)

用户界面

不多说,先上截图:

当前 macOS 的毛玻璃效果可以选择材质,所以标题栏和播放控制有四种主题可选: Dark (截图中的主题)、 Ultra Dark 、 Light 和 Medium Light 。

语言方面,开发(和截图中)语言为英文,但目前几乎所有界面都有简体中文支持。

快速设置

或许你试过在其他播放器中,调整音频延迟等选项时,需要不断点击菜单项来一次又一次地加减音频延迟的数值;或者在选择音轨字幕时,展开好几层菜单来找到需要的那一个。当然, IINA 提供了和其他播放器一样,甚至更丰富的菜单项,它也提供了一个快速设置界面,涵盖了所有常用的视频、音频和字幕选项,并使用了各种可交互的控件来大大加快更改各种播放设置的效率。

(视频设置)

(音频设置)

(字幕设置)

这些界面只需一个快捷键即可调出。传统的菜单项设置也全部保留,方便有任何需求的用户。

甚至对于画面剪切(用途有去黑边等),除去快速设置中的按常用长宽比剪切,它甚至提供了一个全交互式的剪切界面(此界面将来可扩展至更多设置):

播放列表和章节

IINA 支持简易的播放列表(更多功能稍后添加)。对于分章节的视频,它更是可以把内容及起始时间一目了然地列出:

(播放列表)

(章节)

点击即可跳转至相应视频或者时间。

丰富的设置项

IINA 希望能迎合尽可能多用户的喜好。在开发过程中,遇到和身边人不同的操作习惯,我会把它们作为可选的设置项加入偏好设置。

比如,播放按钮两边的左右箭头,可以选择调整速度(类似 QuickTime )、上一个 /下一个媒体( MPlayerX )或是前进 /后退;又如鼠标在播放界面单击和双击,都可以有可选的相应动作。

我也尽量满足一些「强迫症」用户的偏好,所以在拖动播放控制时,可以吸附窗口中心;又如在根据视频大小调整窗口大小时,可以选择根据 Retina 屏物理分辨率还是逻辑分辨率。

对于快捷键, IINA 保留了整个 mpv 的 input.conf 系统,以做到与原来 mpv 用户的最大兼容。但是,用户可以有多个快捷键配置文件,并在 GUI 中切换和编辑他们(暂时可以做到快捷键配置的管理和录制新快捷键,但对应命令需要自行输入;此问题会尽快解决)。

欲查看所有设置项的截图,请访问 IINA 的网站(链接在文章底部)。

MPV 的配置文件和脚本系统

当然, IINA 支持 mpv 强大的配置文件和 lua 脚本系统。对于现有的 mpv 用户,只需要打上一个勾, IINA 就会自动使用原有的全部配置(并覆盖偏好设置中的相关项),从而几乎无缝切换到一个同样内核但有强大界面的新播放器。

目前 IINA 也支持 mpv 的日志功能( Debug 用),以及使用 mpv 自己的 osd 。

当然,对于不熟悉 mpv 的用户,这些选项平时会被禁用,不会有任何影响。

面向现代 macOS

现有的播放器有很多都含有不少冗余部分,如 MPlayerX ,含有很多用于兼容 10.6 的代码,而如今几乎没有人在使用此版本。 IINA 仅面向现代 macOS ,支持 macOS 10.10+,推荐使用 macOS 10.12 。

免费,开源,期待你的参与

IINA 由纯 Swift 写成,并在 github 上使用 GPLv3 开源。 IINA 不管现在还是将来,都将免费。

如果你对这个项目感兴趣,可以用各种方式给我反馈:

  • 下载并测试
  • 提出 bug report
  • 提出 feature request
  • 在 github 上加星星
  • 检查我的代码并提出建议(我知道写得很渣)
  • 甚至提出 pull request
  • 对用户界面提出建议
  • 提供其他语言的本地化
  • 在 bilibili 围观我的不定期写代码直播(?)http://live.bilibili.com/2639149
  • 任何其他反馈

Alpha 1

目前 IINA 已经推出了第一个版本 v0.0.1 。不过由于我的经验不足,我相信此版本仍有很多待解决的问题。如果你发现了问题,甚至软件根本不能打开,请在 github 上提出 issue 或者通过邮件 /私信等方式联系我。

下载地址等请参见网站,或 github 上的 release 。

Github : https://github.com/lhc70000/iina

网站:https://lhc70000.github.io/iina/zh-cn/

(第一次发帖就是类似广告的东西,还请大家见谅^ ^||)

第 1 条附言  ·  2017-01-04 22:27:37 +08:00

由于反馈人数有点多,有回复限制而不能及时回复,如果你希望继续跟进交流,请加入QQ群

142730636

谢谢各位( ´ ▽ ` )ノ

228 条回复    2019-05-20 20:31:00 +08:00
1  2  3  
sammo
    201
sammo  
   2017-01-18 12:48:42 +08:00
IMRES
    202
IMRES  
   2017-01-23 00:55:06 +08:00
很漂亮 支持!
ivxe2v
    203
ivxe2v  
   2017-01-25 15:17:51 +08:00
能不能加上自动下字幕的功能?
lhc70000
    204
lhc70000  
OP
   2017-01-26 03:17:06 +08:00
@ivxe2v 现在已经有了啊...
Wao
    205
Wao  
   2017-02-23 08:09:59 +08:00
请问有什么办法可以在开始播放一个媒体文件时在屏幕上显示( HUD )该文件的名字等信息吗?谢谢 : )
这样在连续补剧时方便掌握自己正在看哪一集,这样在被其他事情耽搁后继续追时可以直接从那一集开始

我现在有时没注意看到哪一集,像在继续时要打开几集才能试出来 x_x
Wao
    206
Wao  
   2017-02-23 08:12:29 +08:00
或者是在按下某一个按键时,在屏幕显示当前播放文件的相关信息,谢谢 : )
lhc70000
    207
lhc70000  
OP
   2017-02-23 18:21:56 +08:00   ❤️ 1
@Wao 现在的 OSD 显示的信息确实太少;已经有这个 issue 了,以后版本会加入的
xuesumin
    208
xuesumin  
   2017-03-17 13:09:14 +08:00
马克一下,确实好用!
zhuangtongfa
    209
zhuangtongfa  
   2017-03-20 11:34:07 +08:00
一开始还以为是外国人开发的,原来是国人开发的,非常不错
LZRng
    210
LZRng  
   2017-03-24 22:27:51 +08:00
amazing !加油加油!
Neo
    211
Neo  
   2017-04-08 12:11:13 +08:00
发现不支持 iso 格式,期待支持
Jobin0528
    212
Jobin0528  
   2017-05-12 13:11:01 +08:00
safari 插件每次使用都会有弹窗提示是否允许,这个可以设置么?
lhc70000
    213
lhc70000  
OP
   2017-05-15 20:58:34 +08:00
@Jobin0528 似乎不行……
ahu
    214
ahu  
   2017-07-03 23:17:02 +08:00
@lhc70000 最近我弟弟知道了 IINA 这款播放器,他觉得不错专门向我推荐,我一开始写错了写成 LLNA 了,搜了半天没结果,后来才发现是 iina...一搜,果然在半年前就在咱 V2 宣传过了,我那时候忙没怎么上竟然错过了,罪过罪过...

我弟弟说,看是否能联系上你,建议一个功能:像 movist 那样支持多窗口。so,你看着办咯~Good luck !
Wao
    215
Wao  
   2017-07-10 20:18:36 +08:00
没注意自己按了哪个按键还是怎样,现在默认打开视频时是最小音量(本来是最大),看了设置,没发现恢复的选项,请问怎么改回来呀?谢谢
lhc70000
    216
lhc70000  
OP
   2017-07-11 03:07:32 +08:00
@ahu 多窗口已经做了,请等下一版

@wao 如果真的是最小( 0 )的话……只能是你的 mpv 配置问题了(偏好设置-高级里的 mpv 选项,或者是自定义的 mpv.conf )
Wao
    217
Wao  
   2017-07-11 04:19:03 +08:00
@lhc70000 这部分的设置没动过
lhc70000
    218
lhc70000  
OP
   2017-07-12 15:11:22 +08:00   ❤️ 1
@Wao 我再检查一下。你可以先在 Additional mpv options 里加上 volume = 100 来固定初始音量。
zysgycl
    219
zysgycl  
   2017-08-07 10:01:04 +08:00
楼主你好,请问怎样设置才能自定义一个同样大小的窗口?也就是说无论视频大小如何,都以一个用户自定义的同样大小的尺寸打开。现在每次打开一个视频都是一个很小的窗口,需要手动去设置视频的大小,有些麻烦。谢谢楼主!
lhc70000
    220
lhc70000  
OP
   2017-08-07 10:49:34 +08:00
@zysgycl

IINA 支持 mpv 的 geometry 选项。请参照 https://mpv.io/manual/stable/#options-geometry,加到偏好设置-高级的 mpv 选项里就行。

如果你只是觉得默认窗口小,可以试试关掉偏好设置-UI 里的「 retina 屏上使用物理分辨率」。
zysgycl
    221
zysgycl  
   2017-08-08 10:59:31 +08:00
@lhc70000
明白了,非常感谢楼主的指点!
JimGreen
    222
JimGreen  
   2018-01-25 15:13:38 +08:00
希望可以添加类似 mplayerx 那样,自动查找并播放当前文件夹下下一个文件。
谢谢!
lhc70000
    223
lhc70000  
OP
   2018-01-25 15:19:15 +08:00
@JimGreen 现在不可以吗?
JimGreen
    224
JimGreen  
   2018-01-25 16:13:05 +08:00 via iPhone
@lhc70000 刚刚更新到新版,可以了。👍。
JanKinAn
    225
JanKinAn  
   2018-04-07 04:54:49 +08:00
恭喜进入 1.0
guller
    226
guller  
   2018-06-19 22:19:41 +08:00
当光标移到左上角的关闭按钮前,控制键会消失,不能及时关闭。。
lhc70000
    227
lhc70000  
OP
   2018-06-19 23:39:54 +08:00
@guller 现在还不提供 10.14 的支持。这个问题还没有确认是系统的 bug 还是 API 的变更,所以不会马上在新版本里推送修复。10.14 的开发在别的分支上,如果有条件可以自己编译。
dongqisheng520
    228
dongqisheng520  
   2019-05-20 20:31:00 +08:00
最好的 macOS 免费播放器。
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3524 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 04:48 · PVG 12:48 · LAX 20:48 · JFK 23:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.