Create a Virtual Channel Service
How to build a live stream agregating 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 (“slots”), the base live stream with a alternative streams. These contents can be live sources, asset (VOD) or ads. Queuing all those content according to a specific timeline will create a brand new live channel.
In this section, we are about to follow these steps:
- Create a base live source
- Create three alternative sources : VOD asset, a live asset and an ad server
- Create a Virtual channel service
- Create 3 slots on the virtual , one for each content type
- Preview the service with the slots
If you want to implement a service but you don’t have relevant sources yet, we provide sources samples you can use in your own tests.
Create 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. It has to be a Live source. The “Source” tab of the webapp is the place where you can create this source.
Create 3 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 creating first 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, ...), please check this section.
Create a Virtual Channel service
Now we need to implement the service itself, to ask the platform to manipulate, during given periods, the base live content by an alternative one. In this purpose, we are using the “service” tab to create a new one.
In case we don't need ads for our virtual channel, the step 2 where we can link an ad server to the service is optionnal.
At the end of the creation process, we get an output URL that will display the manipulated stream. We 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 operationnal. Let's see how we can do that.
Create 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 2 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 33 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.
Preview your service
Once the slots are created, we just have to monitor the stream from the service's output URL and wait for the begining of the first slot. The preview button help comparing the base live source, that is not manipulated, and 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 personalised 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 use cases in the Virtual Channel Section.
Updated about 1 month ago