Embed bitTV

Drop the full bitTV experience — browse, watch, and switch channels — into your own site with a single iframe. Navigation stays inside the frame.

Quick start

Embed a specific channel, or /embed for the full browsable app:

<div style="position:relative;width:100%;padding-top:56.25%">
  <iframe src="https://livetv.cdnbd.top/embed/watch/CNN.us"
    style="position:absolute;inset:0;width:100%;height:100%;border:0"
    allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>
</div>

Tip: open any channel on the site and click Embed to generate this snippet with your options.

Allowlist

For security, only approved origins may frame bitTV. Your site's origin must be added to the bitTV EMBED_ALLOWED_ORIGINS allowlist — contact us to be added. Non-allowlisted sites are blocked by the browser.

URL parameters

paramdefaulteffect
autoplay1Start playing automatically (0 to disable).
muted1Start muted (required for autoplay in most browsers).
controls1Show native video controls (0 to hide).
nav1Show the slim bitTV top bar (0 for a bare frame).
startOn /embed, deep-link straight to a channel id.
https://livetv.cdnbd.top/embed/watch/BBCNews.uk?nav=0&controls=0&muted=1

JavaScript SDK

Control the frame and receive events with the lightweight SDK at https://livetv.cdnbd.top/embed.js.

<iframe id="tv" src="https://livetv.cdnbd.top/embed/watch/CNN.us"
  allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>
<script src="https://livetv.cdnbd.top/embed.js"></script>
<script>
  var tv = BitTV(document.getElementById('tv'));
  tv.on('ready', function () { console.log('ready'); });
  tv.on('routechange', function (p) { console.log('watching', p.channelId); });
  tv.on('playing', function () {});
  // controls:
  // tv.navigate('BBCNews.uk');  tv.go('/browse?category=sports');
  // tv.play();  tv.pause();  tv.mute();  tv.unmute();
</script>

postMessage protocol

The SDK is a thin wrapper over postMessage. If you prefer raw messages:

Events — iframe → your page

window.addEventListener('message', function (e) {
  if (!e.data || e.data.source !== 'bittv') return;
  // e.data.type: 'ready' | 'routechange' | 'playing' | 'paused' | 'waiting' | 'error'
  // e.data.payload: { path, channelId } for 'routechange'
});

Commands — your page → iframe

iframe.contentWindow.postMessage(
  { source: 'bittv-host', type: 'navigate', channelId: 'BBCNews.uk' }, '*');
// type: 'navigate' (channelId | path) | 'play' | 'pause' | 'mute' | 'unmute'