u/514sid

Gapless - a visual gapless media player Composable for Android

Gapless - a visual gapless media player Composable for Android

Most "gapless playback" discussions focus on audio: music apps, podcast players, seamless track transitions.

Even the Wikipedia article for gapless playback is entirely about audio content.

But there’s a whole category of Android apps where gapless matters just as much, and there’s very little reusable infrastructure for it: continuous visual playback.

This is mostly needed in digital signage and kiosks.

These systems cycle through videos, images, and web content continuously, and any black frame or flicker between assets immediately reads as a broken system.

So I built Gapless, a self-contained Jetpack Compose Composable for seamless visual playlist playback.

The key idea is that you don’t really manage playback anymore. You manage the asset list.

Everything else is handled by the player: preloading, scheduling, rendering, transitions.

Updating the asset list is also safe by design. If the currently playing asset still exists in the new list, playback continues uninterrupted while the rest of the playlist updates around it.

That shifts the mental model away from a media player state machine toward a reactive timeline of content.

What it handles internally:

  • preloading the next asset before the current one ends
  • dual render slots for seamless swap
  • video (ExoPlayer), images (Coil 3), WebView in one playlist
  • scheduling per asset (date ranges, weekdays, time windows including overnight ranges)
  • hot-swappable playlists with continuity guarantees
  • rotation (0/90/180/270) without affecting layout bounds
  • shuffle with no immediate repeats

A lot of digital signage systems exist, but most are proprietary and tightly coupled to vendor ecosystems. Meanwhile there are tens of millions of TVs and professional displays used for signage, and a large chunk of them are Android-based, often on fairly constrained hardware.

I’m keeping this open source and evolving it based on real-world signage use cases. The focus is reliability and smooth playback.

Repo: https://github.com/514sid/gapless

Maven Central:

implementation("io.github.514sid:gapless:0.0.13")

If anyone ends up testing it in a real setup, feedback and issues on GitHub would be really helpful, especially for edge cases in kiosk and signage deployments.

u/514sid — 6 days ago
▲ 62 r/digitalsignage+1 crossposts

Anthias v2026.05.0: biggest release in years, per-asset scheduling, Pi 5 support, and a lot of cleanup

Earlier this year I joined Screenly as a Product Manager. One of the first things Viktor, our CEO, and I agreed on was that basic digital signage should be open source.

There are 500+ digital signage products out there. Self-hosted ones? Very few.

Before Screenly, I spent almost a year building Screenlite solo. It was meant to be a small digital signage ecosystem: a CMS, software players, and standalone tools like an Android kiosk browser. That experience made one thing very clear: maintaining an open source project on the side is hard. That’s why so many of them get abandoned. It takes real time and energy, and most maintainers have full-time jobs.

Joining Screenly felt like a way to stop building yet another project and instead invest that effort into Anthias. It is already the most starred self-hosted signage project on GitHub, and it deserves proper time and care.

Then reality kicked in.

After I joined, I got pulled into internal work almost immediately. The big plans I had for Anthias just stalled. Even with a company behind it, open source still has to fight for time and focus.

A few months in, Viktor started pushing a lot of PRs to Anthias. Then he cut a new release without much noise around it. After that, he messaged me: "We need to tell people about this".

So here we are.

What is Anthias?

Anthias has been around since 2012 and is mostly maintained by Screenly.

It’s a self-hosted digital signage solution where the API server runs directly on the device displaying the content. If you have a few screens and want something reliable with scheduling, without handing control to a third party, it’s straightforward to set up and you own everything.

What’s in this release?

Quite a bit:

  • Per-asset scheduling is finally here. You can set each asset to show on specific days and times.
  • Working hardware video playback on Pi 4 (64-bit) and Pi 5.
  • The architecture was slimmed down.
  • Dependency upgrades to Django 5.2 LTS, Python 3.13, and Debian Trixie.
  • A bunch of long-standing bugs fixed.

Full details:
Release post: https://www.screenly.io/blog/2026/05/15/anthias-v2026-05-0/
Changelog: https://github.com/Screenly/Anthias/releases/tag/v2026.05.0

On a personal note, this release pushed me to revisit my old Screenlite drafts.

Screenlite probably will not ship as a standalone project. The current idea is to merge parts of it into Anthias, possibly as a centralized CMS to manage multiple Anthias installations. I am still exploring how that should look.

But the original motivation has not changed. I still want open source digital signage to exist and be viable.

Happy to answer questions.

Viktor (u/mvip) and I are both watching the thread.

reddit.com
u/514sid — 6 days ago