https://github.com/hackinggate/mpvx
Mac app for mpv inspired by grsyncx
https://github.com/hackinggate/mpvx
Last synced: about 1 year ago
JSON representation
Mac app for mpv inspired by grsyncx
- Host: GitHub
- URL: https://github.com/hackinggate/mpvx
- Owner: HackingGate
- License: gpl-3.0
- Created: 2020-04-20T14:58:27.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2025-03-03T23:12:59.000Z (over 1 year ago)
- Last Synced: 2025-03-28T21:51:08.974Z (about 1 year ago)
- Language: Swift
- Size: 9.68 MB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mpvx
[](https://github.com/HackingGate/mpvx/actions/workflows/lint.yml)
[](https://github.com/HackingGate/mpvx/actions/workflows/test-and-coverage.yml)
[](https://codecov.io/gh/HackingGate/mpvx)
[](https://github.com/HackingGate/mpvx/releases)
Mac app for mpv inspired by [grsyncx](https://github.com/username0x0a/grsyncx)
## Requirements
### mpv Homebrew Installation (Recommended)
Install the command-line interface mpv with [Homebrew](https://brew.sh).
```bash
brew install mpv
```
The mpvx app will automatically check the following paths, which means it supports both Apple Silicon and Intel:
```text
/opt/homebrew/bin/mpv
/usr/local/bin/mpv
```
### Standalone mpv Executable
You can specify the `--mpvx-mpv-binary-path=` argument to indicate the mpv executable you'd like to use. For example:
```bash
/Applications/mpvx.app/Contents/MacOS/mpvx --mpvx-mpv-binary-path=/Applications/mpv.app/Contents/MacOS/mpv
```
## Screenshot

## Why Not IINA
[IINA](https://iina.io) is a wrapper of [mpv player](https://mpv.io) with lots of features implemented.
I found an issue with IINA. Key control like `.` (step forward) or `,` (step backward) do not support consecutive presses, which is an important feature to me.
I investigated the [source code of IINA](https://github.com/iina/iina) and learned how to support consecutive presses. Use `int mpv_command(mpv_handle *ctx, const char **args);` instead of the more error-prone way `int mpv_command_string(mpv_handle *ctx, const char *args);` and pass commands with `keyDown` and `keyUp` events to achieve this.
You can have look at [the PR](https://github.com/typcn/bilibili-mac-client/pull/163/files) I created for [bilibili-mac-client](https://github.com/typcn/bilibili-mac-client) years ago for how to implement both `keyDown` and `keyUp` event.
However, IINA has its own layer of key management, which means it requires a lot of work to implement that I don't have time to do.
That is why I created this simpler project that handles media resource opening and launches vanilla mpv from the Homebrew formula.
## Looking for iOS?
[Outplayer](https://outplayer.app/) by Stephen Salerno: video player for iOS powered by mpv