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
-
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
-
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
-
Open iina.xcworkspace in the latest public version of Xcode. IINA may not build if you use any other version.
-
Build the project.
Building mpv manually
-
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"
-
Copy the latest header files from mpv (*.h) into
deps/include/mpv/
. -
Run
other/parse_doc.rb
. This script will fetch the latest mpv documentation and generateMPVOption.swift
,MPVCommand.swift
andMPVProperty.swift
. This is only needed when updating libmpv. Note that if the API changes, the player source code may also need to be changed. -
Run
other/change_lib_dependencies.rb
. This script will deploy the dependent libraries intodeps/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
-
Open iina.xcworkspace in the latest public version of Xcode. IINA may not build if you use any other version.
-
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. -
Drag all the .dylib files in
deps/lib
into the "Embedded Binaries" section of the iina target. -
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.