Skip to content

svobs/iina-advance

 
 

Repository files navigation

IINA Advance

IINA is the modern video player for macOS.

Advance, as in, advance preview of new or experimental features. Or maybe an attempt to advance IINA development more rapidly.


Major new features

  • Can restore all its open windows and state when reopening the app.
  • A new player window layout system, allowing for new modes such as showing the controller and sidebars "outside" the video, the ability to expand the window to any size, and much more. Much effort has gone into smoothing out animations so that switching between various modes (and window handling in general) should be very smooth.
  • Ability to resize thumbnails, and improved thumbnail handling.
  • A massive rewrite of the key bindings system. Adds support for key sequences and dynamic bindings from Lua scripts, and integrates all the other sources of key bindings such as menu items and filter shortcuts. Enhances the Key Bindings editor with copy/paste, undo/redo, drag & drop, color coding for conflict detection and more.
  • Tons of bug fixes and enhancements, and hopefully an overall smoother experience.

Stable binaries with more detailed change info can be found on the Releases page.

Note about reusing previous settings

At present, IINA Advance shares most of the same settings as IINA, and each can share the same settings files without harming the other's. However, because the two apps have different bundle IDs, they store their settings in separate locations and do not share them.

For those who have been using IINA previously and want to copy over their settings, history, and other state, copy each location in the first column to the location in the second column:

IINA IINA Advance
Primary settings file ~/Library/Preferences/com.colliderli.iina.plist ~/Library/Preferences/com.iina-advance.plist
Other support files ~/Library/Application Support/com.colliderli.iina ~/Library/Application Support/com.iina-advance

Building

(unchanged from the upstream IINA project)

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
  • Tips:
    • 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 from https://iina.io/dylibs/${ARCH}/fileList.txt where ARCH can be universal, arm64 and x86_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 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 corresponding 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 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 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 could search 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 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 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.

About

An even-more-modern fork of the modern video player for macOS.

Resources

License

Stars

Watchers

Forks

Languages

  • Swift 94.7%
  • Rich Text Format 3.6%
  • Objective-C 0.8%
  • Ruby 0.4%
  • Shell 0.2%
  • JavaScript 0.2%
  • HTML 0.1%