Skip to main content

Media lists

What you learn​

You're instantiating DIVA Player in your web front-end and relying on DIVA Back Office as the video streaming source.

The goal of this article is to build the simplest front-end to stream a video from the DIVA Back Office. That video comes with some related media lists that front-end users can explore through the DIVA Player menu.

Before starting​

  • Ensure the DIVA Back Office instance you rely on is up and running.
  • Ask your video engineers team the <video id> and the related <settings URL>.
  • Get read-and-write access to the VideoMetadata file.

Defining media lists​

See medialists definition.

Instantiation​

Write the Basic instantiation code. There's no additional code to write, unless you need to manipulate the video list and insert it after the changes.

Working sample code (.tsx)​

Write the App() function to read the VideoMetadataMap as in the following example, and set the mediaLists array:

import {
AssetState,
BoAdapterWebComponentProps,
DivaWebBoAdapter,
VideoMetadata,
} from "@deltatre-vxp/diva-sdk/diva-web-bo-adapter";
import "@deltatre-vxp/diva-sdk/diva-web-sdk/index.min.css";
import { useState } from "react";

const videoId = "<videoId>";

const libs = {
mux: "https://cdnjs.cloudflare.com/ajax/libs/mux.js/6.2.0/mux.min.js",
shaka: "https://cdnjs.cloudflare.com/ajax/libs/shaka-player/4.11.2/shaka-player.compiled.js",
hlsJs: "https://cdn.jsdelivr.net/npm/hls.js@1.5.7",
googleIMA: false,
googleDAI: false,
googleCast: false,
threeJs: false
};

const config = {
videoId: videoId,
libs: libs,
};

function App() {
const [isVideoLive, setIsVideoLive] = useState(false);
const props: BoAdapterWebComponentProps = {
settingsUrl: "<settings URL>",
languageCode: "en-US",
languageDictionary: "en-US",
onDivaBoAdapterError: console.error,
config: config,
// Here integrator can transform the video metadata
videoMetadataMap: async (vd: VideoMetadata) => {
vd.mediaLists = [
{
defaultItemLayout: "horizontal",
defaultItemType: "audio",
defaulImageFormat: "square",
items: [
{
itemId: "1",
title: "Media list item 1"
},
{
itemId: "2",
title: "Media list item 2"
}
],
listId: "mediaListId",
rowTitle: "Media list title",
},
];
return vd;
},
};

return (
<>
<DivaWebBoAdapter {...props} />
</>
);
}