Home

Awesome

<p align="center"> <img height="256" src="https://github.com/iina/iina/raw/master/iina/Assets.xcassets/AppIcon.appiconset/iina-icon-256.png" /> </p> <h1 align="center">IINA</h1> <p align="center">IINA is the <b>modern</b> video player for macOS.</p> <p align=center> <a href="https://iina.io">Website</a> · <a href="https://github.com/iina/iina/releases">Releases</a> · <a href="https://t.me/IINAUsers">Telegram Group</a> </p>

Features

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 to these instructions.

Using the pre-compiled libraries

  1. Download pre-compiled libraries by running
./other/download_libs.sh
  1. Open iina.xcodeproj 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.

    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 correponding mpv and FFmpeg header files into deps/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. Run other/parse_doc.rb. This script will fetch the latest mpv documentation and generate MPVOption.swift, MPVCommand.swift and MPVProperty.swift. Copy them from other/ to iina/, 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. 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:

    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. Open iina.xcodeproj 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 add all the .dylib files in deps/lib to that group by clicking "Add Files to iina..." in the context menu.

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

  8. Make sure the necessary .dylib files present in the "Link Binary With Libraries" phase under "Build Phases". Xcode should 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.