An open API service indexing awesome lists of open source software.

https://github.com/sureshfizzy/JellyCine

A Jellyfin + Emby Client App with modern UI
https://github.com/sureshfizzy/JellyCine

android emby emby-api emby-client jellyfin jellyfin-client jellyfin-media-player kotlin

Last synced: 11 days ago
JSON representation

A Jellyfin + Emby Client App with modern UI

Awesome Lists containing this project

README

          


JellyCine Logo

JellyCine


Jetpack Compose Android client for Jellyfin and Emby, focuses on a fast, fluid UI and smooth playback.



Buy Me A Coffee


Patreon



Google Play

## Features

- Seerr integration for discovery, search, recommendations, detail pages, request badges, request limits, and title requests
- MPV playback engine with fallback when ExoPlayer cannot render video
- Merge-version support with local version selection for multi-source items (No server side support required)
- Jellyfin and Emby support with automatic endpoint resolution
- Spatial audio passthrough when supported by the device/output route
- Compose-first UI with Home, My Media, Search, Favorites, and Settings sections
- Offline-aware navigation mode that falls back to downloaded content when network is unavailable
- Immersive search experience with suggestions, live results, and categorized results
- Offline downloads with queueing, pause/resume/cancel, and persistent state recovery
- Season and series download actions with storage estimation before enqueueing
- Media3 ExoPlayer playback with Jellyfin FFmpeg extension integration
- In-player streaming quality selection, audio transcoding controls, and configurable player cache
- Subtitle styling controls with improved subtitle and audio track handling
- Google Cast support with inline remote playback controls
- Gesture controls in player (seek, volume, brightness), lock mode, and start-maximized preference
- Skip Intro support: shows a Skip Intro button when IntroDB/TheIntroDB markers are available; configurable in player settings

## Screenshots


Home
View All
Search - immersive


Settings
Details
Search Screen

For community discussions and support, see [Discussions](https://github.com/sureshfizzy/JellyCine/discussions).

## Project Structure

- `phone`: Phone-specific Android app module (Compose UI, navigation, player, settings)
- `tv`: TV-specific Android app module (leanback/DPAD support, sidebar rail, TV-specific UI/flows)
- `data`: APIs, repositories, models; multiplatform/shared networking and serialization helpers
- `core`: Shared player, preferences, and utility code used by app modules
- `shared`: Shared UI components and image infrastructure moved into its own module
- `docs`: Screenshots and documentation assets

## Tech Stack

- Kotlin, Coroutines, Flow
- Jetpack Compose + Material 3 + Navigation Compose
- Hilt + KSP for DI/code generation
- Ktor Client + OkHttp 5
- Coil 3 for image loading
- Media3 ExoPlayer (`exoplayer`, `ui`, `session`, `dash`, `hls`, `smoothstreaming`, `effect`)
- `org.jellyfin.media3:media3-ffmpeg-decoder` extension

## Getting Started

### Prerequisites

- Android Studio (latest stable recommended)
- JDK 17
- Android SDK platform for API 36

### Build and Run

1. Clone the repository.
2. Open it in Android Studio.
3. Let Gradle sync complete.
4. Select a device/emulator (Android 8.1+).
5. Run the `app` module.

CLI build:

```bash
./gradlew :phone:assembleDebug
```

Debug and release APKs are named as:

- `jellycine-debug-.apk`
- `jellycine-release-.apk`

## Privacy

See [PRIVACY](PRIVACY) for the current privacy policy.

## Contributing

Issues and pull requests are welcome. For large feature work, open an issue first to align on scope.

## License

This project is licensed under the GNU General Public License v3.0. See [LICENSE](LICENSE).