IINA is the modern video player for macOS.
Website · Releases · Telegram Group
- 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
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 and then run the steps here:
- 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:
$ sudo gem install cocoapods
$ brew install cocoapods
-
Run
pod install
in project's root directory. -
Open iina.xcworkspace in the latest public version of Xcode. IINA may not build if you use any other version.
- Install mpv:
$ brew install mpv --with-uchardet
Feel free to include your own copies of the other libraries if you'd like.
-
Copy latest header files into
libmpv/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 depended libraries intolibmpv/libs
. Make sure you have a phase copying of all these dylibs in Xcode's build settings.
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 check the Translation Status page first: if a language is labeled as "Need help", then feel free to update the translation. If it doesn't contain your language at all, you can submit a new translation. If you need help working on a translation, you can contact @lhc70000 or file an issue and one of the maintainers will try to help you out.