❆ Creating a Virtual Channel Service

How to build a live stream aggregating various VOD, Live and Ad streaming content

A Virtual Channel service is based on a base live source, usually a stream with a very simple static screen, also called a slate. The service replaces, for dedicated periods called “slots”, the base live stream with some alternative streams. These contents can be live sources, asset (VOD) or ads. Queuing all those contents according to a specific timeline will create a brand new live channel.

In this section, we are about to follow these steps:

  1. Creating a base live source
  2. Creating three alternative sources: a VOD asset, a live asset and an ad server
  3. Creating a Virtual channel service
  4. Creating three slots on the virtual channel, one for each content type
  5. Previewing the service with the slots

If you want to implement a service but you don’t have any relevant sources yet, we provide sources samples you can use in your own tests.

Creating a base live source

Sample: https://origin.broadpeak.io/bpk-tv/bpkiolive/default/index.mpd

This source delivers a base live video stream, that will be modified by broadpeak.io once the service is set up.

  1. From the Source tab of the web app, click Create New.
  2. Select the Live source type.
  3. Give a name to your source.
  4. Enter a URL.

Your source must be a Live source.

Create three alternative sources

Sample :

Guess what? The process is the same! The only difference here is that you can choose other types of sources. For this example, we are first creating a live source, then a VOD asset and finally an ad server. The role of the ad server is to return one or several ads to insert, regarding the length of the slot. To keep it simple for this demo, we choose a static ad server that returns always the same ad, which lasts 30 seconds.

To create sources for a virtual channel, we just have to pay attention to the compatibility between these sources and the base live source. To read more about sources compatibility (HLS vs DASH, codecs, clock synchronization, etc.), please check this section.

Creating a Virtual Channel service

Now, we need to implement the service itself, to ask the platform to replace, during given periods, the base live content with an alternative one.

  1. From the Service tab, click Create New.
  2. Select the Virtual Channel service type.
  3. Give a name to your service.
  4. Select your base live source as original content.
  5. Click Next.
  6. Select a feature and an ad server if necessary.

In case you don't need ads for your virtual channel, this step is optional.

  1. Click Next.
  2. Click Run.

At the end of the creation process, an output URL displays the manipulated stream. You can use it in any compatible video player.

But without any slot forecasted, we may not be able to check that the content replacement service is operational. Let's see how we can do that.

Creating slots

So we want to create some slots: this is the purpose of the scheduler feature. A slot is defined by a type (content or ad server), a content, a start time and a duration, or an end time (these two last fields are dependant on each other).

Of course, a well prepared slot creation means we have a precise idea of the queuing of our slots: each slot begins where the previous one ended, to avoid empty periods where no alternative content is identified. In that case, the base live stream will be delivered over the period.

In our example, our VOD is 5 minutes long, the ad is 30 second long, and the live has no end. We can set for instance this timeline:

  • VOD1 for 30 seconds
  • Ad break for 30 seconds, and starts right after the end of the VOD slot
  • Live for 30 second, and starts right after the end of the ad break slot

Previewing your service

Once the slots are created, we just have to monitor the stream from the service output URL and wait for the begining of the first slot. The preview button help comparing the base live source, that is not manipulated, with the manipulated stream from the output URL.

"Virtual Channel" vs "Live channel"

I can hear some of you saying that we have just found another way to create a live channel with an addition of consecutive contents. And at this point, you are right.

But the power of broadpeak.io stands on the contextualisation and the use of categories, to set different content slots for different audiences, on the very same output URL.

So, in a single operation - a service creation in your channel offer - you are able to display personalized contents to your end user. And this is where Virtual Channel reaches a next level for TV offers. But this article is not long enough to talk about it. If you want to dig more in that direction, check the use cases in the Virtual Channel Section.