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 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
Download pre-compiled libraries by running
./other/download_libs.sh
Tips:
Change 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 correponding dylibs. For example, https://iina.io/dylibs/1.2.0/universal/fileList.txt.
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.
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.
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:
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.
Add all the imported .dylib files into the "Copy Dylibs" phase under "Build Phases" tab of the iina target.
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.
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 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.
请发表评论