Skip to main content
Version: 11.12.1

AirPlay

Tip: open your browser's developer console and use the player and THEOplayer variables to interact with this demo.

player.cast.airplay.state-
player.cast.airplay.casting-

This example shows how to stream a video to an Apple TV or another AirPlay receiver. Open Video UI shows an AirPlay button in the control bar when AirPlay is available. Click it to choose a receiver and start streaming.

AirPlay is only available in Safari on macOS, iOS and iPadOS. The box below the player shows the AirPlay state, using the statechange event of player.cast.airplay.

Code
demo.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>AirPlay</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet" />
<style>
html,
body {
margin: 0;
padding: 0;
}

theoplayer-default-ui:not(:defined) {
display: inline-block;
box-sizing: border-box;
}

theoplayer-default-ui {
width: 100%;
aspect-ratio: 16 / 9;
font-family: 'Noto Sans', sans-serif;
background: #000;
}
</style>
<script src="https://cdn.theoplayer.com/dash/theoplayer/THEOplayer.js"></script>
<script nomodule src="https://unpkg.com/@theoplayer/web-ui@2/polyfills"></script>
<script async src="https://unpkg.com/@theoplayer/web-ui@2"></script>
</head>
<body>
<!--
libraryLocation: For demonstration purposes, we use the theoplayer.com CDN.
For production use, we recommend hosting THEOplayer yourself
and changing this (as well as the <script> tags above)
to point to THEOplayer's location on your own website.

licenseUrl: Change this to point to your THEOplayer license file.
Alternatively, replace it with a "license" property whose value is your THEOplayer license itself.
-->
<theoplayer-default-ui
configuration='{"libraryLocation":"https://cdn.theoplayer.com/dash/theoplayer/","licenseUrl":"../../../../theoplayer-license.txt"}'
source='{"sources":{"src":"https://cdn.theoplayer.com/video/big_buck_bunny/big_buck_bunny.m3u8","type":"application/x-mpegurl"},"poster":"https://cdn.theoplayer.com/video/big_buck_bunny/poster.jpg","metadata":{"title":"Big Buck Bunny"}}'
></theoplayer-default-ui>
<script src="../utils.js"></script>
<script>
onPlayerReady((player) => {
const airplay = player.cast && player.cast.airplay;

function reportState() {
sendToParent('airplay', {
supported: !!airplay,
state: airplay ? airplay.state : 'unavailable',
casting: airplay ? airplay.casting : false,
});
}
if (airplay) {
airplay.addEventListener('statechange', reportState);
}

reportState();
});
</script>
</body>
</html>