Project

Arzen

An enterprise digital signage platform I built for cinema chains — custom ARM devices running a bespoke Linux image, a parallelised FFmpeg transcoding engine, and a central dashboard. Deployed across 130+ locations and ~4,500 screens.

Arzen

The Challenge

Most cinema chains run their in-lobby screens on Pads4 — a mature but ageing digital signage stack. Cinepolis India was paying ~₹20,000 per screen for the player hardware plus recurring software licensing, for a system that was unstable, locked to a narrow set of displays, and didn’t handle 4K or dynamic browser content well. Arzen replaces the player, the transcoding pipeline, and the management layer, at roughly a fifth of the hardware cost per screen. Where it came from: I’d already built an ARM-based media player for an earlier multi-projector sync project for NGMA and Chennai Biennale — a custom Linux image running on cheap Rockchip TV-box hardware, with precise UDP-broadcast-based playback sync. That board sat on a shelf for almost two years before Cinepolis surfaced a problem it was a near-perfect fit for. I adapted it into a product.

The Architecture

The device: Each screen runs a self-contained OS I assembled from scratch — custom DTBs to support every display variant the cinemas had, Panfrost drivers compiled in for the GPU, VA-API for hardware video decode, and a browser runtime with hardware-accelerated rendering for the dynamic content (now showing, coming soon, F&B menus). Setup is USB-driven: the cinema’s IT team drops a configured USB into each device and the whole thing — network, device ID, location — flashes automatically. Update channels are remote and incremental. Devices play content in lockstep within each cinema via a master/slave election over the local IP domain — any node can become master, and sync survives the central server going away. That matters because cinemas lose internet regularly and nobody wants the foyer screens drifting out of sync on premiere night.

Bill of materials

  • Rockchip ARM
  • Embedded Linux
  • FFmpeg
  • Node.js
  • PostgreSQL
  • Redis
  • Panfrost / VA-API

The Results

The transcoding engine: The part I’m most proud of is the media engine. Cinemas have wildly varied displays — portrait TVs, landscape lobbies, irregular video walls, LED strips — and uploading one master asset needs to produce the right output for every target screen it’s scheduled on. I built a parallelised FFmpeg-based pipeline that transcodes only the resolutions actually in use across the device catalog, applies dynamic templates (now-showing banners, rotation, aspect-fit logic), and deduplicates work across tenants. It’s also where content gets cached regionally — one device per cinema downloads from the server and the rest pull from it locally, so a 4K trailer doesn’t get fetched from the internet ten times. The dashboard: Multi-tenant with complete audit logs, role-based access, per-location catalogs, scheduling with expiry, playback verification for ad-billing, Vista API integration for live show times. For Empire Cinemas I extended it into a kitchen display system that pulls food orders from their POS. For Mumbai Airport T2 I built a battery-powered 10-inch variant of the player — Bluetooth-configurable, 20-hour runtime — that could act as a portable gate-change or alert display. Where it runs: Arzen is deployed across Cinepolis India, Cinepolis GCC, Star Cinemas Dubai, Miraj Cinemas India, Play Cinemas, and Empire Cinemas — ~130 cinema locations and ~4,500 screens in total. The company has since exited; the platform remains in operation.

Ready to see more deployments?

Back to all projects