The E2E sample implements a server-side AD insertion system, which features on-demand video transcoding and streaming, and AD insertion based on video content analysis.
The Content Provider service serves original content, with on-demand transcoding, through the DASH or HLS streaming protocol. The AD Insertion service analyzes video content on the fly and inserts AD, with transcoding if needed, into the video stream at each AD break slot.
See Also: Demo Video
The sample is powered by the following Open Visual Cloud software stacks:
FRAMEWORK=ffmpeg, to analyze video content for objects, emotion and faces during playback. The software stack is optimized for Intel Xeon Scalable Processors and Intel VCAC-A.
FRAMEWORK=gst, to analyze video content for objects, emotion and faces during playback. The software stack is optimized for Intel Xeon Scalable Processors and Intel VCAC-A.
Timezone: Check that the timezone setting of your host machine is correctly configured. Timezone is used during build. If you plan to run the sample on a cluster of machines managed by Docker Swarm or Kubernetes, please make sure to synchronize time among the manager/master node and worker nodes.
Build Tools: Install
m4 if they are not available on your system.
sudo mkdir -p /etc/systemd/system/docker.service.d printf "[Service]\nEnvironment=\"HTTPS_PROXY=$https_proxy\" \"NO_PROXY=$no_proxy\"\n" | sudo tee /etc/systemd/system/docker.service.d/proxy.conf sudo systemctl daemon-reload sudo systemctl restart docker
mkdir build cd build cmake .. make
See also how to customize the building process with Build Options.
By default, DASH/HLS segments are generated on the fly during playback, which requires a powerful server platform to keep up with the load. If unsure, it is recommended that you use the following commands to pre-generate DASH/HLS segments:
#content segment make dash # take a coffee break? make hls # take a walk?! # ad segment make addash make adhls
Use the following commands to start/stop services via docker swarm (see also Docker Swarm Setup).
make update # optional for private registry make start_docker_swarm make stop_docker_swarm
Use the following commands to start/stop services via Kubernetes (see also Kubernetes Setup):
make update # optional for private registry make volume make start_kubernetes make stop_kubernetes
Launch your browser and point to
https://<hostname> to see the sample UI. Double click on any video clip to play the stream and see ADs got inserted during playback.
<hostname>is the hostname of the manager/master node.