Free software · GPLv3 · Android and Android TV

Bring your own
playlist.

Quiblo is a media player for M3U playlists and Xtream accounts you already hold. It plays live channels, films and series on Android phones and on Android TV. No channels are bundled, and no server of ours sits anywhere in the path between you and your provider.

Licence
GPLv3
Price
Free
Accounts and trackers
None
Channels bundled
None

Formats

Your playlist, in the shape it arrived in.

  • M3U
  • M3U8
  • Xtream Codes
  • HLS
  • DASH
  • MPEG-TS
  • MP4
  • MKV
  • SRT
  • VTT
  • ASS
  • TTML

A URL or a local file

Load a playlist over the network or open one already on the device. Lists of twenty thousand entries parse and browse without special handling.

Live, films and series

Seasons and episodes, a programme guide showing now and next, and a full timeline for any channel that publishes one.

Subtitles and audio tracks

From the stream or from a file you supply. Text encoding is detected rather than assumed, so a windows-1256 Arabic subtitle renders as Arabic.

Two builds

A television is not a large phone.

Every release carries two APKs. They share every layer below the interface and very little above it: a remote and a thumb are different input devices, and one interface serving both serves neither well.

Phone and tablet

Built for touch

  • Tap to reveal the controls; drag for brightness and volume
  • A screen lock, so a pocket cannot pause playback
  • Poster grids, category filters and search

Android TV and Google TV

Built for a remote

  • Every control reachable with the D-pad, and tested that way
  • Next and previous episode, with the next starting automatically
  • A single search across live, films and series

Scope

Quiblo ships with no channels.

No films, no series, and no means of discovering any. It is a player, in the same category as VLC. Without a playlist or a subscription of your own there is nothing here to watch, and this project does not help you obtain one.

Requests for sources or providers are closed without discussion. Posting a playlist URL, a provider hostname or a credential anywhere in the project results in an immediate ban.

This is a scope decision rather than a disclaimer, and several parts of the app are built the way they are because of it.

Development record

Built with an agent, in the open, failures included.

Most write-ups about building software with an agent show a screenshot of something working, which is the least useful half. The full record is in the repository: dated rounds of planning, review and rework, published as they happened rather than tidied afterwards.

  • Nine features existed in the code and could not be reached from a running app. Two settings controls had an empty click handler; picture-in-picture threw into a bare catch on every attempt.
  • Subtitles had a menu, a working track selector and a closed bug report, and had never rendered a single word. Every check asked whether the control could be reached; the answer was yes for months.
  • A rate limiter ran at exactly twice its documented rate, with a passing test. The test measured the wait before a single request; the fault only appears across several.
  • One screen shook while scrolling, and four explanations were wrong before the right one. Two of the four shipped.
An agent is very good at building the thing and very bad at knowing whether the thing is real.

If you are learning to build this way, the reasoning is the useful part of the repository and the code is the easy half. Questions are welcome at any level: open an issue and ask.

Install

Two APKs. Pick the one for the screen.

Both are signed with the same key and can be installed side by side on one device. Android 11 or newer.