Skip to content

iina/iina

Repository files navigation

IINA

IINA is themodernvideo player for macOS.

Website· Releases· Telegram Group


Crowdin

Features

  • Based onmpv,which provides the best decoding capacity on macOS
  • Designed with modern versions of macOS (10.15+) 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

Downloading

You can get IINA through several sources. For the latest stable and beta releases, visit theGitHub release pageor theIINA official website.If you want to try out the latest features and improvements before they are officially released, you can download the nightly builds from ourNightly Download Page.

Important

Nightly builds are generated by GitHub automatically for every commits, which might be buggy and unusable. If you find a bug, please follow thecontributing sectionand file an issue.

Building

IINA uses mpv for media playback. To build IINA, you can either fetch copies of these libraries we have already built (using the instructions below) or build them yourself by skipping tothese instructions.

Using the pre-compiled libraries

  1. Download pre-compiled libraries by running
./other/download_libs.sh

Tip

  • Change the URL in the shell script if you want to download arch-specific binaries. By default, it will download the universal ones. You can download other binaries fromhttps://iina.io/dylibs/${ARCH}/fileList.txtwhereARCHcan beuniversal,arm64andx86_64.
  • If you want to build an older IINA version, make sure to download the corresponding dylibs. For example,https://iina.io/dylibs/1.2.0/universal/fileList.txt.
  1. Open iina.xcodeproj in thelatest 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.

    With 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

    With 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 corresponding mpv and FFmpeg header files intodeps/include/,replacing the current ones. You can find them on GitHub(e.g. mpv),but it's recommended to copy them from the Homebrew or MacPorts installation. Always make sure the header files have the same version of the dylibs.

  3. Runother/parse_doc.rb.This script will fetch the latest mpv documentation and generateMPVOption.swift,MPVCommand.swiftandMPVProperty.swift.Copy them fromother/toiina/,replacing the current files. This is only needed when updating libmpv. Note that if the API changes, the player source code may also need to be changed.

  4. Runother/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:

    With Homebrew

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

    With MacPorts

    port contents mpv | grep '\.dylib$' | xargs other/change_lib_dependencies.rb /opt/local
  5. Openiina.xcodeprojin thelatest public version of Xcode.IINA may not build if you use any other version.

  6. Remove all references to.dylibfiles from the Frameworks group in the sidebar and add all the.dylibfiles indeps/libto that group by clicking "Add Files to iina..." in the context menu.

  7. Add all the imported.dylibfiles into the "Copy Dylibs" phase under "Build Phases" tab of the iina target.

  8. Make sure the necessary.dylibfiles are present in the "Link Binary With Libraries" phase under "Build Phases". Xcode should have already added all dylibs under this section.

  9. 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 couldsearch your problem first;while we don't mind duplicates, keeping issues unique helps us save time and consolidates effort. If you can't find your issue, feel free tofile a new one.

  • If you're looking to contribute code, please readCONTRIBUTING.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 visitIINA's instance of Crowdin.You can create an account for free and start translating. Please do not send a 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 on the list, feel free to open an issue.