in videojs-integration/script.js [24:97]
(function () {
// Set up IVS playback tech and quality plugin
registerIVSTech(videojs);
registerIVSQualityPlugin(videojs);
// Initialize video.js player
const videoJSPlayer = videojs("amazon-ivs-videojs", {
techOrder: ["AmazonIVS"],
controlBar: {
playToggle: {
replay: false
}, // Hides the replay button for VOD
pictureInPictureToggle: false // Hides the PiP button
}
});
// Use the player API once the player instance's ready callback is fired
const readyCallback = function () {
// This executes after video.js is initialized and ready
window.videoJSPlayer = videoJSPlayer;
// Get reference to Amazon IVS player
const ivsPlayer = videoJSPlayer.getIVSPlayer();
// Show the "big play" button when the stream is paused
const videoContainerEl = document.querySelector("#amazon-ivs-videojs");
videoContainerEl.addEventListener("click", () => {
if (videoJSPlayer.paused()) {
videoContainerEl.classList.remove("vjs-has-started");
} else {
videoContainerEl.classList.add("vjs-has-started");
}
});
// Logs low latency setting and latency value 5s after playback starts
const PlayerState = videoJSPlayer.getIVSEvents().PlayerState;
ivsPlayer.addEventListener(PlayerState.PLAYING, () => {
console.log("Player State - PLAYING");
setTimeout(() => {
console.log(
`This stream is ${
ivsPlayer.isLiveLowLatency() ? "" : "not "
}playing in ultra low latency mode`
);
console.log(`Stream Latency: ${ivsPlayer.getLiveLatency()}s`);
}, 5000);
});
// Log errors
const PlayerEventType = videoJSPlayer.getIVSEvents().PlayerEventType;
ivsPlayer.addEventListener(PlayerEventType.ERROR, (type, source) => {
console.warn("Player Event - ERROR: ", type, source);
});
// Log and display timed metadata
ivsPlayer.addEventListener(PlayerEventType.TEXT_METADATA_CUE, (cue) => {
const metadataText = cue.text;
const position = ivsPlayer.getPosition().toFixed(2);
console.log(
`Player Event - TEXT_METADATA_CUE: "${metadataText}". Observed ${position}s after playback started.`
);
});
// Enables manual quality selection plugin
videoJSPlayer.enableIVSQualityPlugin();
// Set volume and play default stream
videoJSPlayer.volume(0.5);
videoJSPlayer.src(playbackUrl);
};
// Register ready callback
videoJSPlayer.ready(readyCallback);
})();