This repository hosts docker build files of software stacks and services, designed to enable Open Visual Cloud prioritized use cases such as media delivery, media analytics, cloud gaming and cloud graphics, and immersive media.
Validated docker images are available on Docker Hub.
The software stack images provide ready to use software stacks for application deployment. You can call the software executables or link with the software libraries.
- Media Delivery
Image | Description |
---|---|
ffmpeg | Docker images optimized for media creation and delivery based on the FFmpeg framework. Included the AAC, MP3, OPUS, OGG, Vorbis, X264, X265, VP8/9, AV1 and SVT-HEVC codecs. The GPU images are accelerated with VAAPI and QSV. See docker pull openvisualcloud/xeon-centos76-media-ffmpeg |
gst | Docker images optimized for media creation and delivery based on the GStreamer framework. Included the base, good, bad, ugly and libav set of plugins. The GPU images are accelerated with VAAPI. See docker pull openvisualcloud/xeon-centos76-media-gst |
nginx | Docker images optimized for web hosting and caching. Included FFmpeg, NGINX the web server, and FLV the RTMP and DASH/HLS streaming module. See docker pull openvisualcloud/xeon-centos76-media-nginx |
svt | Docker images for the SVT (Scalable Video Technology) encoders and decoders. Easiest way to try SVT AV1, HEVC, and VP9 apps. See docker pull openvisualcloud/xeon-centos76-media-svt |
- Media Analytics
Image | Description |
---|---|
ffmpeg | Docker images optimized for media analytics based on the FFmpeg framework. Included plugins that utilized the Intel® OpenVINO™ inference engine. See docker pull openvisualcloud/xeon-centos76-analytics-ffmpeg |
gst | Docker images optimized for media analytics based on the GStreamer framework. Included plugins that utilized the Intel OpenVINO inference engine. See docker pull openvisualcloud/xeon-centos76-analytics-gst |
- Cloud Gaming and Graphics
Image | Description |
---|---|
ospray | Docker images optimized for Intel OSPRay. Included the Intel OSPRay ray tracing engine and examples. See |
ospray-mpi | Docker images optimized for Intel OSPRay and multi-host connections. Included the Intel OSPRay ray tracing engine with multi-host connections via MPI. See |
The development images enable C++ application compilation, debugging (with the debugging, profiling tools) and optimization (with the optimization tools.) You can compile C++ applications with these images and then copy the applications to the corresponding deployment images.
Image | Description |
---|---|
media | Docker images for FFmpeg or GStreamer C++ application development. See docker pull openvisualcloud/xeon-centos76-media-dev |
analytics | Docker images for FFmpeg or GStreamer C++ application development, with Intel OpenVINO inference engine and the model optimizer. See docker pull openvisualcloud/xeon-centos76-analytics-dev |
graphics | Docker image for Intel OSPRay C++ application development. See |
The service images provides ready to use services. See their image descriptions for exposed service interfaces.
Image | Description |
---|---|
owt | Docker images optimized for video conferencing services, based on the WebRTC technology and the Open WebRTC Toolkit. Included conferencing modes: 1:N, N:N with video and audio processing nodes. see docker pull openvisualcloud/xeon-centos76-service-owt |
owt-immersive | Docker images optimized for ultra-high resolution immersive video low latency streaming, based on the WebRTC technology and the Open WebRTC Toolkit. Included SVT-HEVC tile-based 4K and 8K transcoding and field of view (FoV) adaptive streaming. see |
The project supports the following platforms and OS'es:
Supported Platforms | Supported OS'es |
---|---|
Xeon | Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, CentOS 7.4-7.6 |
Xeon E3 | Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, CentOS 7.4-7.6 |
VCA2 | Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, CentOS 7.4-7.6 |
VCAC-A | Ubuntu 16.04 LTS, Ubuntu 18.04 LTS |
QAT | Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, CentOS 7.4-7.6 |
Please see Development and Test Report for the latest development statuses.
- Update kernels and firmwares: Please see each platform folder README for details.
- Install
cmake
andm4
if they are not available on your platform. - Make sure your host datetime and timezone are configured properly, a prerequisite to install any Ubuntu security updates.
- Follow the instructions to setup host date and time.
- Follow the instructions to install docker.ce or docker.ee.
- If you are behind a firewall, setup proxy as follows:
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
The docker images are published on Docker Hub with name pattern openvisualcloud/<_platform_>-<_OS_>-<_usage_>-<_image_>
. Find and use the images as follows:
docker search openvisualcloud --limit=100 | grep analytics-ffmpeg #list media analytics ffmpeg images
docker pull openvisualcloud/xeon-ubuntu1604-analytics-ffmpeg
mkdir build
cd build
cmake ..
# Please build your specific platform image. A full build takes a long time.
cd Xeon/ubuntu-16.04/media/ffmpeg
# Build on the target platform for optimal performance.
make
ctest
See Also: Build Options
Xeon/ubuntu-16.04/media/ffmpeg/shell.sh #<_platform_>/<_OS_>/<_usage_>/<_image_>
- You can modify any
Dockerfile.m4
template for customization.
For example, uncomment#include(transform360.m4)
in Xeon/ubuntu-16.04/media/ffmpeg/Dockerfile.m4 to add essential 360 video transformation in the FFmpeg build.
After modification, please rerun cmake and make.
See Also: Build Options
It is recommended that you copy the Dockerfile(s) of your platform, OS and image directly into your project. The following shell scripts show how to sync (if needed) and build the NGINX Dockerfile (and its dependency FFmpeg):
update.sh:
DOCKER_REPO=${DOCKER_REPO="https://raw.githubusercontent.com/OpenVisualCloud/Dockerfiles/master/Xeon/ubuntu-18.04/media"}
(echo "# xeon-ubuntu1804-media-ffmpeg" && curl ${DOCKER_REPO}/ffmpeg/Dockerfile) > Dockerfile.2
(echo "# xeon-ubuntu1804-media-nginx" && curl ${DOCKER_REPO}/nginx/Dockerfile) > Dockerfile.1
build.sh:
for dep in .2 .1; do
image=$(grep -m1 '#' "Dockerfile$dep" | cut -d' ' -f2)
sudo docker build --network=host --file="Dockerfile$dep" -t "$image:latest" . $(env | grep -E '_(proxy)=' | sed 's/^/--build-arg /')
done