yuroyami / syncplay-mobile

πŸ“± Unofficial Syncplay client app for Android and iOS. Watch stuff in sync with your friends. Works well with Syncplay on PC. Fully written in Kotlin and Compose multiplatform.
147 stars 5 forks source link
android compose-multiplatform exoplayer ios iphone java jetpack-compose kotlin kotlin-multiplatform-mobile media mobile mpv mpv-player sync synchronization syncplay syncplay-client syncplay-protocol video-player

Syncplay for Mobile (Android & iOS)


Syncplay for Mobile

Syncplay - The Unofficial Mobile Client (for Android and iOS)

Syncplay Android on GitHub releases Syncplay Android on IzzyOnDroid Repo

Syncplay comes bundled with multiple built-in video players on both platforms.
More info is available throughout this readme.
Note: The IzzyOnDroid Android release only contains ExoPlayer ## Table of Contents - [Introduction](#introduction) - [Features](#features) - [How to use](#how-to-use) - [Capabilities](#capabilities) - [Architecture](#architecture) - [FAQ](#faq) - [Feedback](#feedback) - [Build Process](#build-process) - [Acknowledgments](#acknowledgments) - [License](#license) ## Introduction [![OS - Android](https://img.shields.io/badge/Android-a4c639?style=for-the-badge&logo=android)]()[![OS - iOS](https://img.shields.io/badge/iOS-555555?style=for-the-badge&logo=apple)]()
[![Version Release](https://img.shields.io/badge/Version-0.14.0.beta-c22b3c?style=for-the-badge&logo=v)]()[![Written Language](https://img.shields.io/badge/Made%20with-Kotlin-lightgrey?style=for-the-badge&logo=kotlin)]()[![is Maintained?](https://img.shields.io/badge/Maintained-YES-green?style=for-the-badge)]()[![License](https://img.shields.io/badge/License-AGPL--3.0-brightgreen?style=for-the-badge)]()[![Requirement](https://img.shields.io/badge/REQUIREMENT-Android%206.0%20and%20later-blueviolet?style=for-the-badge&logo=android%20studio)]()[![Requirement](https://img.shields.io/badge/REQUIREMENT-iOS%2014.0%20and%20later-blueviolet?style=for-the-badge&logo=xcode)]() Syncplay Mobile is a unofficial Syncplay client brings the remarkable functionality of Syncplay PC client to the mobile platforms (Android and iOS). You can synchronize media playback with your friends, allowing you to watch videos together, even when you're physically apart. It includes real-time chat functionality, enabling seamless communication while enjoying synchronized playback on your Android or iOS device. You can use Syncplay Mobile with your friends who also use Syncplay Mobile, or Syncplay on PC. **Cannot run on Android versions below Android 6.0 Marshmallow and iOS 14.0**

## Features * Seamless compatibility with Syncplay's official PC client. * Offers the same core functionality as Syncplay for PC, with a meticulously rewritten Syncplay protocol from Python to Kotlin. * Bundled with multiple video players with varying capabilities. * Real-time colorful chat functionality, including support for emojis. * Extensive range of settings and preferences for customization. * Multi-language support (Currently available in English, Chinese, French and Arabic, with more languages coming soon).

## How to use ### How to use (Android) Usage on Android is fairly simple: - Download the latest release APK from [here](https://github.com/yuroyami/syncplay-mobile/releases/latest). - Install the APK. If any installation issues arise, uninstall the previous version of the app before installing the new one. - Open Syncplay. Specify a username of your choice, a room name of your choice (Tell your friends about it). Select a server from the list (Tell your friends about this one too) - Click "Join Room". You will be taken to the Room screen. You're all set. Tell your friends to join the same room and server. - ...and that's it. Load the same video file as your friends and enjoy the synchronized playback. ### How to use (iOS) The iOS version cannot be distributed in package format (like Android's APKs). The only ways to install an app on iOS are to either compile this project by yourself on your macOS, or someone would kindly donate to host this app on the Apple app store (the fee is a yearly $99). The iOS app compiles and runs without issues on any iOS device with 14.0 (I assume this can be lowered further but I didn't try). ## Capabilities ### General capability chart The UI on both Android and iOS are 99.9% identical, minus some differences due to platform-specific behavior. This chart table will demonstrate things that work, and things that do not work, on each platform and video player. | Feature | Android | iOS | |-------------------------------|-----------------------------------------|-------------------------------| | Chat |

βœ”

|

βœ”

| | Settings & Preferences |

βœ”

|

βœ”

| | Shared Playlists |

βœ”

| βœ” (Untested) | | Video players | - mpv (Default)
- ExoPlayer
- VLC | - VLC (Default)
- AVPlayer | | Supports TLS |

βœ” (Netty)

| βœ” (SwiftNIO) | | Picture-in-Picture (PIP) mode |

βœ”

| βœ” (only AVPlayer) | | Can save shortcuts |

βœ”

| βœ” (Unstable) | ### Video player capability chart Some video players are more potent than others in certain areas. Here's a general overview to help you quickly pick the best contender | Feature | mpv
Android | ExoPlayer
Android | VLC
Android | AVPlayer
iOS | VLC
iOS | |----------------------------------------------------------------------|-------------------------------------------|--------------------------------|-------------------------|--------------------------------|-------------------------| | Supported
formats
| Most formats (including mkv and HEVC) | Depends on device capabilities | All formats | Depends on device capabilities | All formats | | Stability with Syncplay | Stable (recommended) | Mildly Stable | Experimental | Broken (for now) | Alpha | | Supports Subtitles (including sideloaded ones) |

Best (via libass) βœ”

| Basic support |

βœ”

|

No

|

βœ”

| | Can play from URLs/URIs |

βœ”

|

βœ”

|

βœ”

|

βœ”

|

βœ”

| | Supports Chapters |

βœ”

|

No

|

βœ”

|

No

|

βœ”

| ## Architecture * UI: Compose multiplatform * Architecture: modular (mostly MVVM) * Network backbone: Netty (Android), SwiftNIO (iOS) and Ktor (both) * Preferences: Jetpack Datastore * Integrated media players: **_Android_**: Exoplayer (via media3) - mpv (via libmpv) - VLC (via libVLC) **_iOS_**: AVPlayer (via AVFoundation) - VLC (via MobileVLCKit) ## F.A.Q > If my friend uses Syncplay on PC, can I watch with them ? - Yes, you can. Syncplay Android is made to be interoperable. > On Android, I get an error saying "App not installed" upon installing the app. What's wrong ? - Uninstall the older version before installing the new one. > Where is the iOS release ? - The release has to be uploaded to the Apple app store to make it available to everyone, which I do not own. Volunteers are welcome. ## Translating Syncplay is available in the following languages : - [x] English - [x] Arabic - [x] French - [x] Chinese (by [@Zhaodaidai](https://github.com/Zhaodaidai)) - [x] Spanish (by [@DoncanC](https://github.com/DoncanC)) - [x] Russian (by [@ivy-reps](https://github.com/ivy-reps)) * If you want to contribute with a translation in a language that isn't available in Syncplay, or enhance the actual translations, please refer to [#30](https://github.com/yuroyami/syncplay-mobile/issues/30) ## Feedback Feel free to [file an issue or a feature request](https://github.com/yuroyami/syncplay-mobile/issues/new). If there's anything you'd like to chat about, please feel free to open a new discussion. ## Build Process Requirement: Android Studio Jellyfish or newer. If you want to build the iOS version, you will ***also*** need to have Xcode 15.2 or newer. Your Android Studio will need to have the `Kotlin Multiplatform Mobile` plugin installed. Simply open the repo project using its GitHub link and build the app. It won't require any further tweaking. ## Acknowledgments Thanks to [Official Syncplay](https://www.syncplay.pl/) for maintaining and open-sourcing such an amazing software. Thanks to [Et0h](https://www.github.com/Et0h/) for his amazing hard work on official Syncplay and for lending a hand in our issues tracker section. Thanks to [soredake](https://www.github.com/soredake) for their thorough testing. Thanks to everyone who contributed with translations for the app. ## License Syncplay for Android is under the [AGPL-3.0 Open-Source License](https://www.gnu.org/licenses/agpl-3.0.en.html)