Open-source project
xyoye/DanDanPlayForAndroid avatar
xyoye/DanDanPlayForAndroid

DanDanPlayForAndroid: Android playback with danmaku and subtitle support

弹弹play 概念版,弹弹play系列应用安卓平台上的实现,是一个提供了视频播放(本地+局域网)和弹幕加载(在线+本地)功能的本地播放器

1,716 stars141 forksKotlinApache-2.0

At a glance

What is it?
DanDanPlayForAndroid is a Kotlin-based local video player for Android that adds local and LAN playback, danmaku, subtitles, and anime information. Its main constraint is that the repository disables user-related interfaces, while some advertised features remain incomplete or are documented only at a high level.
Who is it for?
Adopt it when an Android user mainly needs local or network media playback with danmaku and subtitle matching, and can work within the documented limits. Do not choose it for account-based features, unfinished Torrent downloading, or an undocumented server deployment workflow.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 109 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What DanDanPlayForAndroid is built to handle

DanDanPlayForAndroid is the Android implementation of the 弹弹play series, focused on playing video together with danmaku. It is a local player rather than a general-purpose video streaming service. The documented media paths include local video, files discovered on a LAN, FTP, and WebDav. That combination is aimed at users who already have media on a phone or reachable network storage and want the video, comments, and subtitles handled in one Android application.

The project also includes an anime information area. The README describes weekly programming, anime search, and anime detail pages. These are secondary to playback in the repository description, but they explain why the application extends beyond a bare file browser and video player. The application is written primarily in Kotlin, and the current 4.x architecture uses MVVM with a component-based layout. The repository also contains modules for anime information, downloads, streaming sources, local data, user features, playback, common utilities, and data types.

The project is not presented as a library for embedding playback in another Android product. Its top-level `app` module is the application entry point, while the other modules divide product features. That distinction matters for adoption. A developer looking for a reusable player component would need to inspect the source further, because the documentation describes an application architecture rather than a documented SDK API.

The 4.x MVVM and component structure

The repository states that version 4.x uses Kotlin, MVVM, and a component-based design, while the older 3.x branch used Java and MVP. The module table gives a useful map of the data flow. The `app` module contains the startup page and main framework. `player_component` contains the player, `local_component` covers local video plus downloaded danmaku and subtitles, and `storage_component` handles network data such as SMB, FTP, WebDav, and streaming sources.

The division suggests that playback is assembled from separate feature modules rather than placed entirely in one activity. The `anime_component` owns anime home, search, seasonal programming, and detail features. `user_component` is intended to cover user information, registration, login, and settings, but the README explicitly says that its user-related interfaces are disabled for security reasons. Consequently, an installed build cannot be expected to provide those account functions.

Data types and persistence are separated into `data_component` and `local_component`. The README also says that MMKV is used for key-value storage through custom annotations that generate MMKV calls. This is a concrete implementation detail, but the documentation does not describe the schema, migration process, or failure behavior. The architecture is therefore suitable for reading the repository as an Android product, not for assuming that every advertised subsystem is production-complete.

Playback sources, danmaku, and subtitle matching

The player offers a choice between IJK and EXO playback cores. That choice gives users a way to switch implementations for different common video formats, although the README does not provide a format-by-format compatibility matrix. It also does not document codec licensing, hardware decoding behavior, or the settings used to select a core. The choice should therefore be treated as an application feature to verify in a build, not as a guarantee that every file will play.

Danmaku can be matched automatically to a video. Users can search for and download danmaku, adjust size, speed, outline, and opacity, and block comments by keyword or regular expression. Subtitles follow a similar pattern. The application can match subtitles to a video, search for and download them, adjust size, outline, and color, and load external subtitle files. These features are more specific than a conventional local player because they treat the text layer as part of the viewing experience.

The README says that the project interfaces with the 弹弹play开放平台. It does not document API credentials, rate limits, offline behavior, or what happens when the service cannot match a file. Automatic matching can be useful, but local playback should not be assumed to work fully offline when danmaku or subtitle retrieval depends on that platform. The application is also documented as supporting LAN, FTP, and WebDav browsing, while the Stream module additionally names SMB and streaming sources. That difference suggests that some source support is broader in the code than in the user-facing feature list.

Installing the Android build and making a first use

The README directs users to the GitHub Releases page for both the formal version and the latest test version. It does not provide an install command, APK filename, Android SDK version, or Gradle invocation. For another platform, the README points to the 弹弹play website. A first installation therefore starts by obtaining an Android release from the repository's Releases page and installing that release on an Android device.

After installation, the first practical path is to open the player and select a local video or configure one of the documented network sources, such as LAN, FTP, or WebDav. The README does not specify the exact menu labels or connection fields, so those details cannot be safely presented as commands or configuration examples. Once a video is selected, the documented next step is automatic danmaku or subtitle matching. If matching is not suitable, the application provides search and download functions for both text types.

Developers who want to modify the source can inspect `gradle.properties`. The README names two configuration keys, `IS_DEBUG_MODE` and `IS_APPLICATION_RUN`, and says that changes require rebuilding the project. It also identifies `gradlew` and `gradlew.bat` at the repository root, but does not give a verified Gradle task or command. The repository includes a custom `MVVMTemplate-xx.jar` plugin under `plugin`, which can be installed through Android Studio according to the README, with further instructions in the `MVVMTemplate` project.

Documented limits and upgrade costs

The clearest limitation is the disabled User module. The README says that user-related interface calls have been turned off for security reasons, and that compiling and installing the application will leave those features unavailable. This directly contradicts the broader module description, which lists login, registration, and user information. An adopter should not budget for account synchronization or profile features without inspecting a build and its backend configuration.

The Download module is another boundary. It lists Torrent downloading as unfinished and includes magnet-link parsing. That means the presence of the module does not establish a completed offline acquisition workflow. The documentation also does not explain whether parsed links are passed to an external player or handled inside the application.

Maintenance is recent, but that does not remove upgrade costs. The repository is not archived, and its last push was on 2026-07-06. Releases include `dandanplay-v4.1.4` on 2026-07-06 and `dandanplay-v4.1.3` on 2026-02-02. Updating may involve Android media dependencies, playback-core behavior, MMKV storage, and integration with the 弹弹play开放平台. The README does not publish a migration guide, supported Android range, dependency list, or release notes describing breaking changes. The Apache-2.0 license is stated, but the README does not provide legal interpretation or details about bundled media libraries.

Why this is different from a plain local video player

A plain local player generally focuses on opening files, controlling playback, and selecting subtitles. DanDanPlayForAndroid adds a text and anime layer: it can search and download danmaku, filter comments, match subtitles, present anime schedules, and browse anime details. That is the real difference in approach. It treats playback metadata as part of a media catalog workflow instead of treating every file as an isolated item.

A network file browser is another comparison point. DanDanPlayForAndroid documents LAN, FTP, and WebDav access, but its purpose remains playback with associated text. A browser-oriented storage client may focus more on transferring, organizing, or sharing files. The README does not compare retention, permissions, transfer performance, or server compatibility, so those differences cannot be assigned to either project without evidence. The relevant boundary is scope: DanDanPlayForAndroid is the more specialized choice when video playback, danmaku, and subtitles must remain together.

Editorial conclusion

Adopt it when an Android user mainly needs local or network media playback with danmaku and subtitle matching, and can work within the documented limits. Do not choose it for account-based features, unfinished Torrent downloading, or an undocumented server deployment workflow. Verify first that the release page, selected playback core, media source, subtitle or danmaku matching, and the disabled User module match the intended use.

Frequently asked questions

How do I install DanDanPlayForAndroid on Android?

The README directs users to the project's GitHub Releases page for the formal and latest test versions. It does not document an APK filename, Android version requirement, or installation command.

Can DanDanPlayForAndroid play videos from a LAN, FTP, or WebDav server?

Yes. The README documents browsing and playback for LAN files, FTP, and WebDav. It also lists SMB and other streaming sources in the Stream module description, although detailed server setup instructions are not provided.

Does DanDanPlayForAndroid support danmaku and subtitles?

Yes. It documents automatic matching, searching, downloading, style adjustment, keyword and regular-expression blocking for danmaku, plus external subtitles and subtitle styling.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. xyoye/DanDanPlayForAndroid on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/xyoye-dandanplayforandroid.svg)](https://hysenlabs.com/projects/xyoye-dandanplayforandroid)

Was this useful?