iina

适用于macOS的现代视频播放器。(The modern video player for macOS.)

Github星跟踪图

IINA

IINA是macOS的现代视频播放器。

网站 发布 Telegram Group


特性

  • 基于 mpv ,提供macOS上最佳的解码能力
  • 专为现代macOS(10.10+)而设计,旨在提供最佳用户体验
  • 视频,音频,字幕,播放列表,章节等所需的所有功能
  • 强制触摸,画中画和(高级)触摸条支持
  • 可自定义的用户界面,包括配色方案和屏幕控制器(OSC)布局
  • 专为音频文件设计的独立音乐模式
  • 整个时间线的缩略图预览,例如YouTube
  • 在线字幕搜索和智能本地字幕匹配
  • 无限播放记录
  • 视频/音频过滤器的便捷和交互式设置
  • 完全可自定义的键盘,鼠标和触控板手势控制
  • MPV配置文件和脚本系统适用于高级用户
  • 提供的命令行工具和浏览器扩展
  • 仍在积极开发

构建

使用预编译的dylib

  1. 请确保安装了CocoaPods。
  2. gem

    sudo gem install cocoapods
    	

    homebrew

    brew install cocoapods
    	
  1. 在项目根目录下运行pod install
  2. pod install
    	
  1. 用 Xcode 10打开 .xcworkspace 文件。
  2. cocoapods 1.5.* 中有一个错误,因此您无法使用它编译IINA。 值得庆幸的是,bug已在其主分支中修复。 我们正在使用预发布的cocoapods(目前是1.6.0 beta2)来避免这个bug。 您可以通过安装cocoapods的预发布版本

    sudo gem install cocoapods --pre
    	

如果您不愿意使用提供的dylib,请按照以下说明操作。

使用最新的mpv制作

  • 安装mpv
    brew install mpv --with-uchardet
    	
    如果您喜欢,请随意添加任何其他库。
  • 将最新的头文件复制到 libmpv/include/mpv/
  • 其他/parse_doc.rb 此脚本将获取 最新版 mpv文档并生成 MPVOption.swift , MPVCommand.swift 和 MPVProperty.swift 代码>。这只在更新libmpv时需要。请注意,如果API发生变化,播放器源代码可能也需要更改。
  • 其他/change_lib_dependencies.rb 该脚本会将依赖的库部署到 libmpv/libs 中。 确保你在Xcode的版本设置中对所有这些dylib进行了阶段性复制。

贡献

请在开启问题或拉取请求之前阅读 CONTRIBUTING.md

在开始处理拉取请求之前,请先征求作者的许可,以确保没有其他人在使用相同的功能。

任何反馈/贡献,赞赏!

翻译

请先查看翻译状态。如果语言标记为“需要帮助”,请随时更新翻译。如果它不包含您的语言,那么提交新的翻译将会很棒。如果您不知道如何使用GitHub提交翻译,请联系作者( @ lhc70000 )。

主要指标

概览
名称与所有者iina/iina
主编程语言Swift
编程语言Ruby (语言数: 7)
平台Mac
许可证GNU General Public License v3.0
所有者活动
创建于2016-12-19 07:18:45
推送于2025-07-20 04:32:11
最后一次提交2022-11-08 09:01:40
发布数65
最新版本名称v1.4.0-beta1 (发布于 2025-04-09 22:16:43)
第一版名称v0.0.1 (发布于 )
用户参与
星数41.1k
关注者数537
派生数2.7k
提交数3.8k
已启用问题?
问题数4158
打开的问题数1743
拉请求数844
打开的拉请求数53
关闭的拉请求数342
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?

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
    

    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
    

    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:

    Homebrew

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

    MacPorts

    $ port contents mpv, grep '\.dylib$', xargs other/change_lib_dependencies.rb /opt/local
    
  5. Open iina.xcworkspace in the latest public version of Xcode. IINA may not build if you use any other version.

  6. 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.

  7. Drag all the .dylib files in deps/lib into the "Embedded Binaries" section of the iina target.

  8. Build the project.

Contributing

IINA is always looking for contributions, whether it's through bug reports, code, or new translations.

  • If you find a bug in IINA, or would like to suggest a new feature or enhancement, it'd be nice if you could search your problem first; while we don't mind duplicates, keeping issues unique helps us save time and considates effort. If you can't find your issue, feel free to file a new one.

  • If you're looking to contribute code, please read CONTRIBUTING.md–it has information on IINA's process for handling contributions, and tips on how the code is structured to make your work easier.

  • If you'd like to translate IINA to your language, please visit IINA's instance of Crowdin. You can create an account for free and start translating and/or approving. Please do not send pull request to this repo directly, Crowdin will automatically sync new translations with our repo. If you want to translate IINA into a new language that is currently not in the list, feel free to open an issue.