Skip to main content
WYZUK
audio-streaming··5 min read

Client-Side IPTV Architecture: Zero-Backend Streaming with HLS.js

How Wyzuk Cast parses M3U8 broadcast playlists, handles adaptive bitrates, and provides instant channel search entirely in the browser runtime.

Related Project: Wyzuk CastView Project →

The Problem with Traditional Web Video Players

Most web streaming platforms rely on backend transcoding servers, Redis session stores, and database-backed channel catalogs. When streaming publicly available IPTV broadcasts, this architecture introduces heavy server overhead, latency, and single points of failure. In designing Wyzuk Cast, the goal was radical simplification: 100% client-side execution.

By leveraging HLS.js and browser-native fetch APIs, Wyzuk Cast turns the client browser into a complete stream demuxer and playback engine.

Parsing M3U Playlists at the Edge

M3U playlists can contain thousands of stream URIs interleaved with metadata tags like #EXTINF, tvg-logo, and group-title. Wyzuk Cast implements a streaming regex parser that categorizes incoming channel definitions on the fly into an in-memory indexed array.

JAVASCRIPTEfficient regex-driven playlist extraction executing in sub-50 milliseconds.
function parseM3U(rawText) {
  const lines = rawText.split('\n');
  const channels = [];
  let currentMeta = {};

  for (const line of lines) {
    const trimmed = line.trim();
    if (trimmed.startsWith('#EXTINF:')) {
      const nameMatch = trimmed.match(/,(.+)$/);
      const groupMatch = trimmed.match(/group-title="([^"]+)"/);
      const logoMatch = trimmed.match(/tvg-logo="([^"]+)"/);
      currentMeta = {
        name: nameMatch ? nameMatch[1].trim() : 'Unknown Channel',
        group: groupMatch ? groupMatch[1].trim() : 'General',
        logo: logoMatch ? logoMatch[1] : null,
      };
    } else if (trimmed.startsWith('http')) {
      if (currentMeta.name) {
        channels.push({ ...currentMeta, url: trimmed });
        currentMeta = {};
      }
    }
  }
  return channels;
}

Seamless Buffer & Error Recovery

Public IPTV streams suffer from intermittent network jitter and variable frame rates. Wyzuk Cast configures HLS.js error-recovery listeners to automatically switch manifests or restart buffer append cycles without crashing the player, maintaining playback stability.