Total Pageviews

Friday, 17 August 2018

macOS上最好的现代视频播放器:IINA

那段时间 macOS 才经历了不小的系统内核更新,我一直钟爱的 MPlayerX 的解码能力和字幕挂载能力在新系统里每况愈下,性能和效能各方面都已捉襟见肘,码率高一点的电影花屏卡顿开始成为家常便饭,各种音画不同轨的现象也层出不穷。
另一方面 mpv 固然是个神器级别的开源解码工具,不过配置太过麻烦,作为多媒体应用使用命令行来操作确实也不太优雅。纵观整个 macOS,竟已经找不到一个像样的播放器了,不能认真科研刷剧让我的假期过得很不圆满。直到我在 GitHub 上淘到了一个香港城市大学小伙伴的项目 IINA。当时正值他在 GitHub 上 release 了第一个 alpha 版本 v0.0.1,可我管中窥豹,已经觉得 IINA 会是非常棒、非常趁手的播放器了,如今看来,果然一路都没有让我失望过。
在这个颜值即正义的年代,IINA 一如原生般简约而现代的播放界面瞬间俘获了我的芳心.
在这美丽而优雅的界面之下,隐藏着一颗强大的「内芯」和详细完备的功能特性。
首先就是 IINA 使用了 mpv 作为自己的播放内核,从血统上就继承了极其强大的解码能力,而且相较于同是使用 mvp 的 MPlayerX,IINA 采用更加高效的模式,并且使用原始屏幕分辨率进行渲染,具有更快和更稳定的解码效果。而另一个好处就是,熟悉并喜欢 mpv 的高端用户可以直接调整或者载入 mpv 配置,实现高级定制。
其次是全部用最新的 Swift 语言编写的软件对于 macOS 系统的特性,例如:Touch Bar、 Force Touch 和画中画等具有非常良好的支持,与此同时系统资源占用可以做到几乎微不可计,大大延长了移动模式下播放视频时候 Mac 的续航能力。
IINA 一路走来从 1 月份连着 4 次版本更新,到现在基本稳定在 v 0.0.11 版本,各方面的技术和特性都已经趋于成熟和鲁棒。下面我们从播放视频的方方面面来看看它有什么优势。

贴心的快捷设置

IINA 对常见的音视频设置提供了快捷入口,点击悬浮式进度条右侧的齿轮可以快速打开便捷设置。根据 macOS 系统的支持,IINA 的毛玻璃特效的进度条和标题栏有四种不同的主题可选:Dark、Ultra Dark、Light 和 Medium Light。
三个快捷设置选项卡里第一个是视频设置,提供了非常常用的选项,包括:
  • 从多个视频轨道中选择需要播放的轨道;
  • 拉伸长宽比为 4 : 316 : 916 : 105 : 4 等比例;
  • 裁剪视频长宽比为 4 : 316 : 916 : 105 : 4 等比例;
  • 顺时针旋转视频;
  • 调节视频播放速度,最慢 1/4 倍速,最快 16 倍速;
  • 开启反交错 (反交错隔行扫描影像讯号转换为逐行扫描影像信号的一种方法),解决部分视频使用隔行扫描编码而出现的交错条纹现象;
  • 均衡器,用于调节画面效果。
我觉得视频快捷设置中的选项基本涵盖了常用的需求,只不过对于想要对着视频练习舞蹈的朋友,「镜像翻转」功能不能在这里快速开启总是让人感到有些遗憾,不过,其实你也可以在菜单中勾选「镜像翻转」,毕竟需求还是小众了一点儿。除此之外,你甚至可以使用交互界面来裁剪视频为非常用的比例。
音频设置中的音轨选择在文件内置了不同的音轨自带不同的地区语言时非常有用,特别是某些有普通话配音的港产片,你可以选择听粤语、也可以选择听普通话,看中文配音水平高低和细心程度决定了。
音频延迟可以很好的解决部分压制糟糕的影片音画不同步的问题,或者,当你使用蓝牙设备外放音频时,有可能因为蓝牙的传输时延导致轻微的音画不同步,在这里稍作调整即可。
喜欢自己调音的朋友利用均衡器还可以调出自己喜欢的 EQ,无论是听音乐,还是改善影片音效,都是很不错的选择。
相较于上面的两个设置,我们平常用得最多的当属字幕设置了。因为大部分的高清资源都不会把字幕直接压制进影片中,内挂的字幕大多数时候没有中文,这时候就需要我们自己外挂字幕。同时,如果影片的命名是符合规范的话,IINA 还会自动去 opensubtitles.org / shooter.cn (可配置) 匹配下载合适的中文字幕,命名不规范也不用担心,可以点选「在线查找」功能搜索下载。
当然如果你已经下载好了字幕可以自己「外挂加载」,同目录下的字幕文件还可以被智能匹配自动加载。当视频外挂了很多字幕的时候,还可以从中选择最佳字幕来显示。而且,比较方便的是,IINA 还支持同时显示两个字幕,副字幕在影片上方。这个功能在我和西班牙妹子一起看法国片的时候可以说是帮了大忙了。
除了外挂字幕之外,你还可以调整字幕延迟、修改字幕的缩放大小、位置以及更详细的字幕文字样式等等。总体而言,这个快捷入口还是做得非常的丰富的。

强大的功能设置

除了快捷设置之外,IINA 还内置了堪称强大的功能设置,涵盖了视频播放的方方面面。由于每个人的操作习惯不同,你可能对播放条左右两端的箭头有不同的理解,有人喜欢用来调整播放速度,有人喜欢用来切换上一个/下一个媒体,也有人喜欢快速前进/后退;另外,针对 Magic Mouse 和 Magic Trackpad 不同的滚动、缩放、单双击手势可以定义的功能都不一样。
高度可定制的快捷键更是满足了所有用户的需求。
对于 mpv 老用户而言,IINA 最大的优点必须是对 mpv 强大的配置文件和 lua 脚本系统的支持了。你只需要在高级选项中启动高级设置,IINA 就会自动使用原有的全部 mpv 配置(同时覆盖设置中的相关项),从而几乎无缝切换到一个同样强大内核,却拥有优雅用户界面的新播放器。
细心的作者甚至不放过各种强迫症患者的诉求,你既可以在拖动控制条位置时吸附到窗口中心,还可以选择在调整视频窗口大小时选择视频实际大小或者显示器分辨率大小,就连播放控制条都有三种样式可以选配.

面向现代的播放器

当下 macOS 平台上有名的播放器大多数都是 OSX 早期时代就发展起来的,他们的代码含有许多的冗余,比如 MPlayerX 依旧保留对 OSX 10.6 的兼容性支持,而这些老版本的系统基本上已经没有太多人在使用了。IINA 完全用 Swift 构建代码,仅面向现代 macOS 系统,支持 10.10+ 以上系统。
因此而得益于代码的优势,IINA 可以轻松开启系统的画中画 (PIP) 模式,一边码字、阅读、搞研究,一边看看视频也不成问题。需要看视频讲座或者课程,顺便做笔记也变得更加方便:






启用画中画模式

不仅如此,IINA 还内嵌了 youtube-dl模块,可以通过 youtube-dl 的支持,播放 YouTube 和上百家视频网站的流媒体视频。你不仅可以 IINA 里通过链接直接通过网站 URL 来串流视频,更为方便的是,IINA 提供了Chrome 和 Safari 插件来直接在 IINA 中打开当前网页: ChromeSafari。另外,你也可以直接拖拽网页的 URL 或文本到播放窗口直接播放。这样做的好处就是你可以使用 IINA 上所有的功能来操作在线视频了,包括但不限于控制播放速度,旋转和翻转画面,更灵活的快进快退等等。当然,你也看不到在线自动字幕和弹幕了(手动滑稽)。
Alfred 或 Keyboard Maestro 的高阶用户还可以利用小扛炮 Automator 写一个的 Service,用快捷键方式快速打开网页流媒体,享无尽丝滑:(下面的用例比较有难度,有兴趣的用户去可以自己去琢磨一下,我就不展开了,普通用户直接略过就好)






Automator制作系统服务

创建上述 Service 之后可以不用安装插件而在浏览器内直接右键串流视频,当然还可以借助 Keyboard Maestro 来提速.Keyboard Maestro 快捷设置
其他诸多贴心的细节我就不一一介绍了,留给细心的大家去发现,感受惊喜。
最为关键的一点是 IINA 的程序代码在 GitHub 上使用 GPLv3 协议开源,这意味着软件将会永久免费,任何有兴趣的人都可以为代码做贡献,打造自己独一无二的播放器。
最后,IINA 提供两种安装方式,推荐直接使用 Homebrew Cask 命令安装:
brew cask install iina
不知道 Homebrew 是啥的朋友,戳这里下载 安装就好了。

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

其实 IINA 有浏览器插件(Safari 和 Chrome 都有)可以支持在视频网页跳转到 IINA 播放。




效果如下:
下载并安装后,可以把它的图标放在 Safari 的工具栏中,在优酷等视频网页点击就可跳转。




在 Chrome 中也是类似的。
下载地址:
  1. IINA 官网可以下载客户端。
  2. 这里是 Open In IINA 的 Safari 插件的下载地址
  3. 这里是 Open In IINA 的 Chrome 扩展程序的下载地址。(安装扩展程序需 VPN)
--------------------------------------------------------------------------------------------------------------------------------

The modern video player for macOS.

    IINA

    IINA is the modern video player for macOS.
    Website · Releases · Telegram Group

    Features  

    • Based on mpv, which provides the best decoding capacity on macOS
    • Designed with modern versions of macOS (10.11+) in mind
    • All the features you need for video and music: subtitles, playlists, chapters…and much, much more!
    • Force Touch, picture-in-picture and advanced Touch Bar support
    • Customizable user interface including multiple color schemes and on screen controller (OSC) layout positioning
    • Standalone Music Mode designed for audio files
    • Video thumbnails
    • Online subtitle searching and intelligent local subtitle matching
    • Unlimited playback history
    • Convenient and interactive settings for video/audio filters
    • Fully customizable keyboard, mouse, trackpad, and gesture controls
    • mpv configuration files and script system for advanced users
    • Command line tool and browser extensions provided
    • In active development

    Building

    1. IINA uses CocoaPods for managing the installation of third-party libraries. If you don't already have it installed, here's how you can do so:

    Using RubyGems

    $ sudo gem install cocoapods

    1. Using Homebrew

      $ brew install cocoapods
    2. Run pod install in project's root directory.
    IINA ships with pre-compiled dynamic libraries for convenience reasons. If you aren't planning on modifying these libraries, you can follow the instructions below to build IINA; otherwise, skip down to Building mpv manually:

    Using the pre-compiled libraries

    1. Open iina.xcworkspace in the latest public version of Xcode. IINA may not build if you use any other version.
    2. Build the project.

    Building mpv manually

    1. Build your own copy of mpv. If you're using a package manager to manage dependencies, the steps below outline the process.

    Homebrew

    Use our tap as it passes in the correct flags to mpv's configure script:
    $ brew tap iina/homebrew-mpv-iina
    $ brew install mpv-iina

  1. MacPorts

    Pass in these flags when installing:
    # port install mpv +uchardet -bundle -rubberband configure.args="--enable-libmpv-shared --enable-lua --enable-libarchive --enable-libbluray --disable-swift --disable-rubberband" 
  2. Copy the latest header files from mpv (*.h) into deps/include/mpv/.
  3. Run other/parse_doc.rb. This script will fetch the latest mpv documentation and generate MPVOption.swift, MPVCommand.swift and MPVProperty.swift. This is only needed when updating libmpv. Note that if the API changes, the player source code may also need to be changed.
  4. Run other/change_lib_dependencies.rb. This script will deploy the dependent libraries into deps/lib. If you're using a package manager to manage dependencies, invoke it like so:
  5. Homebrew

    $ other/change_lib_dependencies.rb "$(brew --prefix)" "$(brew --prefix mpv-iina)/lib/libmpv.dylib"

  6. MacPorts

    $ port contents mpv | grep '\.dylib$' | xargs other/change_lib_dependencies.rb /opt/local
  7. Open iina.xcworkspace in the latest public version of Xcode. IINA may not build if you use any other version.
  8. Remove all of references to .dylib files from the Frameworks group in the sidebar and drag all the .dylib files in deps/lib to that group.
  9. Drag all the .dylib files in deps/lib into the "Embedded Binaries" section of the iina target.
  10. Build the project.

    from https://github.com/iina/iina

No comments:

Post a Comment