Convert Figma logo to code with AI

jellyfin logojellyfin-android

Android Client for Jellyfin

1,452
241
1,452
198

Top Related Projects

18,228

Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.

31,014

A libre lightweight streaming front-end for Android.

18,553

SmartTube - an advanced player for set-top boxes and tvs running Android OS

VLC for Android, Android TV and ChromeOS

10,614

🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You

Quick Overview

Jellyfin Android is the official Android client for the Jellyfin media server. It allows users to stream their personal media collection, including movies, TV shows, music, and photos, directly to their Android devices. The app provides a user-friendly interface for browsing and playing content from a Jellyfin server.

Pros

  • Open-source and free to use
  • Supports direct play and transcoding of various media formats
  • Integrates seamlessly with the Jellyfin ecosystem
  • Regular updates and active community support

Cons

  • May have occasional performance issues on older devices
  • Limited offline functionality compared to some commercial alternatives
  • Some advanced features may require technical knowledge to set up
  • Dependent on a properly configured Jellyfin server for optimal performance

Getting Started

To get started with Jellyfin Android:

  1. Install the Jellyfin server on your preferred device (PC, NAS, etc.).
  2. Download the Jellyfin Android app from the Google Play Store or F-Droid.
  3. Open the app and enter your Jellyfin server's address.
  4. Log in with your Jellyfin account credentials.
  5. Browse and enjoy your media library on your Android device.

For developers interested in contributing to the project:

  1. Fork the repository on GitHub.
  2. Clone your fork: git clone https://github.com/your-username/jellyfin-android.git
  3. Set up the development environment following the instructions in the repository's README.
  4. Make your changes and submit a pull request for review.

Competitor Comparisons

18,228

Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.

Pros of XBMC

  • More mature and feature-rich media center software
  • Supports a wider range of platforms, including desktop operating systems
  • Larger community and ecosystem of add-ons

Cons of XBMC

  • Heavier resource usage, potentially less suitable for low-end devices
  • More complex codebase, which may be harder to contribute to or modify
  • Slower development cycle due to its larger scope

Code Comparison

XBMC (C++):

bool CVideoPlayer::OpenDemuxStream()
{
  if (m_pDemuxer)
  {
    m_pDemuxer->Open(m_item.GetDemuxResource());
    return true;
  }
  return false;
}

Jellyfin Android (Kotlin):

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    _binding = FragmentPlayerBinding.inflate(inflater, container, false)
    return binding.root
}

The code snippets show different aspects of the projects. XBMC's C++ code deals with demuxing video streams, while Jellyfin Android's Kotlin code focuses on creating the player UI fragment. This reflects the different scopes and focuses of the two projects, with XBMC handling more low-level media processing and Jellyfin Android primarily concerned with the Android-specific user interface.

31,014

A libre lightweight streaming front-end for Android.

Pros of NewPipe

  • Lightweight and resource-efficient
  • Supports background playback and picture-in-picture mode
  • Allows downloading of videos and audio

Cons of NewPipe

  • Limited to YouTube content only
  • No account integration or syncing features
  • May require more frequent updates due to YouTube API changes

Code Comparison

NewPipe (Java):

@Override
protected void onLoadFinished() {
    super.onLoadFinished();
    showContentWithAnimation(scrollToTop);
    if (currentInfo != null) {
        setInitialData(currentInfo);
    }
}

Jellyfin Android (Kotlin):

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    _binding = FragmentHomeBinding.inflate(inflater, container, false)
    return binding.root
}

Summary

NewPipe is a lightweight YouTube client with features like background playback and downloads, but it's limited to YouTube content. Jellyfin Android is a more comprehensive media streaming client that supports various content types and server integration. NewPipe is written in Java, while Jellyfin Android uses Kotlin. Both projects are open-source and actively maintained, catering to different user needs in the media consumption space.

18,553

SmartTube - an advanced player for set-top boxes and tvs running Android OS

Pros of SmartTube

  • Ad-blocking functionality built-in, enhancing user experience
  • Customizable playback features like sponsorblock and SponsorBlock integration
  • Lightweight and optimized for Android TV devices

Cons of SmartTube

  • Limited to YouTube content, unlike Jellyfin's support for various media types
  • Potential legal concerns due to ad-blocking and content modification
  • Less active development community compared to Jellyfin

Code Comparison

SmartTube (Kotlin):

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    initPlayer()
}

Jellyfin Android (Java):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initializeToolbar();
}

Both projects use similar Android lifecycle methods, but SmartTube is written in Kotlin while Jellyfin Android uses Java. SmartTube focuses on initializing its custom player, while Jellyfin Android sets up a more general-purpose interface with a toolbar.

VLC for Android, Android TV and ChromeOS

Pros of VLC-Android

  • Extensive codec support and ability to play a wide variety of media formats
  • Standalone media player with no server requirements
  • Mature project with a large user base and active development

Cons of VLC-Android

  • Lacks centralized media management and library features
  • Not designed for streaming from a personal media server
  • User interface can be complex for some users

Code Comparison

VLC-Android (Java):

@Override
public void onPlaybackStateChanged(int state) {
    switch (state) {
        case PlaybackStateCompat.STATE_PLAYING:
            mHandler.sendEmptyMessage(START_PLAYBACK);
            break;
        case PlaybackStateCompat.STATE_PAUSED:
            mHandler.sendEmptyMessage(PAUSE_PLAYBACK);
            break;
    }
}

Jellyfin-Android (Kotlin):

override fun onPlaybackStateChanged(state: Int) {
    when (state) {
        PlaybackStateCompat.STATE_PLAYING -> startPlayback()
        PlaybackStateCompat.STATE_PAUSED -> pausePlayback()
    }
}

Summary

VLC-Android is a versatile standalone media player with broad format support, while Jellyfin-Android is designed as a client for the Jellyfin media server. VLC-Android offers more flexibility in playing local files, but Jellyfin-Android provides better integration with a centralized media library and streaming capabilities. The code comparison shows VLC-Android using Java with a message handler approach, while Jellyfin-Android uses Kotlin with more concise syntax and direct function calls.

10,614

🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You

Pros of Seal

  • More lightweight and focused on YouTube video/audio downloading
  • Offers a modern Material You design
  • Supports background playback and picture-in-picture mode

Cons of Seal

  • Limited to YouTube content, unlike Jellyfin's broader media server capabilities
  • Lacks the extensive library management features of Jellyfin
  • May face potential legal issues due to YouTube's terms of service

Code Comparison

Seal (Kotlin):

private fun downloadVideo(videoInfo: VideoInfo) {
    val downloadRequest = DownloadRequest.Builder(videoInfo.id, videoInfo.title)
        .setMimeType(videoInfo.mimeType)
        .setOutputFileName(videoInfo.fileName)
        .build()
    downloadManager.enqueue(downloadRequest)
}

Jellyfin Android (Java):

private void playMedia(BaseItemDto item) {
    PlaybackHelper.retrieveAndPlay(item, false, this);
    Intent intent = new Intent(this, PlaybackActivity.class);
    startActivity(intent);
}

The code snippets highlight the different focus of each app: Seal emphasizes downloading YouTube content, while Jellyfin Android focuses on playback from a media server. Seal uses Kotlin, which is more modern and concise, while Jellyfin Android uses Java. The Jellyfin code also shows integration with a broader ecosystem of media playback components.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Jellyfin Android

Part of the Jellyfin Project


Logo Banner

GPL 2.0 License Current Release Translation Status
Donate Feature Requests Chat on Matrix Join our Subreddit
Jellyfin on Google Play Jellyfin on Amazon Appstore Jellyfin on F-Droid
Download archive

Jellyfin Mobile is an Android app that connects to Jellyfin instances and integrates with the official web client. We welcome all contributions and pull requests! If you have a larger feature in mind please open an issue so we can discuss the implementation before you start. Even though the client is only a web wrapper there are still lots of improvements and bug fixes that can be accomplished with Android and Kotlin knowledge.

Most of the translations can be found in the web client since it's the base for the Android client as well. Translations for the app can also be improved very easily from our Weblate instance. Look through the following graphic to see if your native language could use some work!

Detailed Translation Status

This client was rewritten from scratch with a fresh git history in July to August 2020, and replaces the old Cordova-based client, which can still be found in the archives.

Build Process

Dependencies

  • Android SDK

Build

  1. Clone or download this repository

    git clone https://github.com/jellyfin/jellyfin-android.git
    cd jellyfin-android
    
  2. Open the project in Android Studio and run it from there or build an APK directly through Gradle:

    ./gradlew assembleDebug
    

Deploy to device/emulator

./gradlew installDebug

You can also replace the "Debug" with "Release" to get an optimized release binary.

Release Flavors

There are two flavors (variants) of the Jellyfin Android app:

  • The proprietary version comes with Google Chromecast support
  • The libre version comes without Google Chromecast support

The proprietary version is available on Google Play and the Amazon Appstore, while the libre version is available on F-Droid. Additionally, beta releases exist for both flavors, but only the proprietary version is published to a beta track on Google Play. If you'd like to test the beta outside of Google Play, you can simply download it from the GitHub releases.