# BiliTV is a Flutter Bilibili client for Android TV, written entirely by AI

> BiliTV is a third party Bilibili client built for Android TV with Flutter, focused on remote control navigation, DASH playback with H.264, H.265 and AV1 support, danmaku and a plugin system for skipping sponsored segments. The author states that 100 percent of the code was written by AI, and the open source version does not include the auto-update feature.

**Hyper-Beast/BiliTV** — 一款基于Bilipai开发的哔哩哔哩TV版APP

- Repository: https://github.com/Hyper-Beast/BiliTV
- Stars: 812 · Forks: 42
- Language: Dart
- License: not declared
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/hyper-beast-bilitv

## A television client, not a phone app on a television

BiliTV is a third party Bilibili client written in Flutter for Android TV, built on top of the BiliPai project by jay3-yy, which the README credits as the original project it is based on.

The design assumption is visible in the feature list, and it is that the remote control is the only input device. There is full remote support with direction key navigation, a confirm key for selection and a back key to exit, a focus system with clear highlighting so you can see where you are, a sidebar that switches between the home page, the feed, search, history and the user area in one press, and player shortcuts where left and right seek, up and down change the volume and confirm pauses.

Everything else follows from that. Sections are browsable by category, with animation, games, music, technology and more, and the order and enabled state of the home page categories is configurable. There is a QR code login, a feed of the creators you follow, personalised recommendations on the home page, keyword search with a history of up to ten entries, and watch history that syncs to the cloud and marks what you have already finished.

The alternative to a purpose built television client is a phone app cast to the television, which loses the remote navigation model entirely. That is the gap this project fills.

## Playback built around DASH, and danmaku that keep pace

The playback side is where most of the engineering went, and the README lists it in detail.

There is multi-codec support with hardware decoding for H.264, H.265 and AV1, with the best encoding selected automatically, and the preferred codec can be pinned in the settings. Video streams use DASH, which gives high quality video with separate audio tracks, and the quality selector covers 4K, 1080P+, 1080P, 720P and 480P.

The danmaku, the scrolling comment overlay, is a first class feature rather than an afterthought. It can be switched off, and its opacity, font size and display area are all adjustable, and its flight speed automatically follows the playback speed, so the comments do not race past during a fast forward. Rendering is done with canvas_danmaku, and the image cache is capped at 200MB with an in-memory cache of 500 images.

Two smaller features are worth calling out because they are the kind of thing that makes a client feel finished. Playback progress is saved and resumes automatically, and dragging the seek bar shows a sprite image preview of the frame under the cursor, with per-part sprite support when a video has multiple parts. Automatic continuous play moves to the next part of a multi-part video and then to a recommended video.

The cost of all this is the ExoPlayer and video_player stack and a list rendering library called keframe, which the README credits with list rendering performance.

## The plugin system, including a SponsorBlock database

The plugin system is the most distinctive part of the project, and it has three named plugins plus a management surface.

The first is an arrival assistant, which automatically skips advertisements, sponsor segments and intros and outros based on a SponsorBlock database. That is a community maintained database of segment timestamps, so instead of the app detecting an advert on its own, it looks up where the segments are for the video you are watching.

The second is video filtering, which blocks videos by keyword or by uploader, and also filters out low quality content, and the third is danmaku blocking by keyword, with both exact matching and fuzzy matching supported. A plugin centre manages the switches and configuration for all of them.

The approach is worth noting for a second. The SponsorBlock integration is the one feature that depends on a service outside the app, and it is the one that changes the content you see without asking the uploader's permission. The other two are local filters, and the keyword matching is on the device.

For the record, the project also lists a set of dependencies that make this work, including qr_flutter for the login QR code, crypto for MD5 signing, wakelock_plus to keep the screen awake, marquee for scrolling text, flutter_svg for icons, permission_handler for permissions, path_provider for file paths, package_info_plus for application information and fluttertoast for toasts.

## Building the APK for an arm64 television

The build instructions are two commands, and the target platform is specified explicitly.

```bash
# 获取依赖
flutter pub get

# 编译 APK (Android TV)
flutter build apk --target-platform android-arm64
```

The arm64 target is the one to notice, because it assumes a modern television or TV box. The README says the theoretical minimum Android version is Android 5, and that the author tested on a Sony television running armv7 with Android 9, and on a Redmi G Pro 27U running armv8 with HyperOS 2, and that other devices should be tested by the user themselves.

The honesty about the test matrix is worth crediting. The author also says the testing hardware is limited, and that the auto-update feature is one they use themselves and that is not implemented in the open source version, which means the open source build is updated by hand.

The framework requirement is Flutter 3.10 or newer, and the repository is a standard Flutter project with the android/ directory, lib/, assets/, a pubspec.yaml and a pubspec.lock, plus an analysis_options.yaml. The README also points at a separate native Android TV version with Traditional Chinese support in the BiliTVNative repository, and says the focus will move to the native version, since the native build is expected to handle television hardware and codecs more directly than a Flutter app can.

## The code was written by AI, and the author says so

One sentence in the README deserves to be read on its own. The author says that from the icon to the splash animation to all the code, 100 percent was developed by AI, and that their own role was to state the requirements and test them.

That is an unusual thing for a project to state, and it is a meaningful thing for an adopter to know. It tells you that the quality bar was set by a person who writes requirements and tests behaviour rather than by someone who writes every line, and it also tells you where the risks are. Behaviour that is exercised by the tester's own devices is likely solid, and behaviour that the tester never exercised is unverified.

The same sentence explains the test matrix. Only a Sony television and a Redmi G Pro were tested, and the README says other devices should be tested by users themselves, and the theoretical minimum Android version is stated as Android 5, which is a derivation rather than a measurement.

For a client application that talks to a video service, that division of labour is workable. The app is a front end, the service is the authority, and a regression in a rarely used screen is a nuisance rather than a data loss. The same division would not be acceptable in a system holding money or personal records, and the project is explicit that it is for study and exchange and not for commercial use.

## The licence and the copyright warning

The README states the licence as GPLV3, and the repository carries a LICENSE file, although GitHub's own classification of the repository licence is recorded as one it cannot categorise, so the file in the tree is the text to read.

The disclaimer is more specific than a licence, and it deserves attention. The project says it is for learning and exchange only and should not be used for commercial purposes, and that the copyright of the video content belongs to Bilibili and the original creators.

That is the correct position for a third party client. The application code is a separate thing from the media it plays, and the media is licensed by the people who made it. A GPL licence on the code does not grant any right over the catalogue.

For an end user this means the app is a convenience layer and the content terms are unchanged. For someone who wants to put it in a product, the disclaimer and the GPL together make the answer plain, and the licensing question is not one to resolve by inference.

The project also lists its release history, with v1.2.2 on 2026-02-11, v1.2.1 on 2026-01-20 and v1.1.0 on 2026-01-04, and the last push to the repository was on 2026-05-10.

## Conclusion

BiliTV fits a household that watches Bilibili on a television and is missing the official TV app for their region, since it is built around the remote control with a focus system, a sidebar for switching sections and player shortcuts. It is the wrong choice if you need commercial use, because the README asks that the project not be used commercially and the video content belongs to Bilibili and its creators, and it is the wrong choice if you want an auto-updating install, because that feature exists only in the author's own build. Before installing it, check the platform: the author tested on a Sony television running Android 9 and a Redmi G Pro, and a Flutter client on a TV box is only as good as the hardware decoding on that device.

## FAQ

### What is BiliTV and what platform does it target?

It is a third party Bilibili client written in Flutter for Android TV, based on the BiliPai project. The README says it was designed for Android TV, with remote control navigation, a focus system and player shortcuts as the core of the interface.

### Which devices has BiliTV been tested on?

The README says testing hardware was limited to a Sony television running armv7 with Android 9 and a Redmi G Pro 27U running armv8 with HyperOS 2, that the theoretical minimum Android version is Android 5, and that other devices should be tested by users themselves.

### How do I build the BiliTV APK?

Run flutter pub get and then flutter build apk --target-platform android-arm64 from the repository root. The project requires Flutter 3.10 or newer, and a separate native Android TV version with Traditional Chinese support lives in the BiliTVNative repository.

### What does the BiliTV plugin system do?

It has three plugins: one that skips advertisements, sponsor segments and intros using a SponsorBlock database, one that filters videos by keyword or uploader and low quality content, and one that blocks danmaku by keyword with exact and fuzzy matching, all managed from a plugin centre.

### Can I use BiliTV commercially?

The README asks that the project not be used for commercial use, stating it is for learning and exchange only, and that the copyright of the video content belongs to Bilibili and the original creators. The application code is stated to be under GPLV3, with the licence file in the repository.

## Sources

- [Hyper-Beast/BiliTV on GitHub](https://github.com/Hyper-Beast/BiliTV)
- [Issues](https://github.com/Hyper-Beast/BiliTV/issues)
- [README](https://github.com/Hyper-Beast/BiliTV/blob/main/README.md)
- [Releases](https://github.com/Hyper-Beast/BiliTV/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/hyper-beast-bilitv
