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

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

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

作为一个 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     Solana     5042 人在线   最高记录 6679 &nsp;     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 37ms UTC 09:38 PVG 17:38 LAX 01:38 JFK 04:38
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86