Accelerating Media Delivery
Intel® media accelerators featuring Intel® Quick Sync Video transcode optimize both throughput and visual quality for video cloud distribution. Three clasess of accelerator engines target high density video decode, encode, and video processing. These unlock real-time customers needing:
File based, Just-in-time, and Live consumption and creation
Bandwidth efficient media delivery for Adaptive bitrate streaming, user generated content upload, and high visual quality broadcast
Intel® graphics accelerators are well integrated into open source media frameworks such as FFmpeg* and the Intel® Media SDK. These popular frameworks allow both complex pipeline support as well as extreme customization of acclerator control.
Find out more details:
Media SDK Plugins for FFmpeg (also known as Intel Quick Sync Video Plugins for FFmpeg)
To make these tools even more accessible to Linux* developers we’re now providing build scripts in Docker.
Note:
Different generations of Intel graphics might have different architecture and features. See more information about supported media features.
FFMPEG - Tips
To simplify the use of FFMPEG our dockerfiles make it easy to build FFMPEG and its dependencies for your Linux platform. The FFMPEG command lines below illustrate good practices in using Intel Quick Sync Video. The use of “extbrc” demonstrates the use of developer configurable bitrate control, in these examples the defauls generate streams using pyramid coding and other quality optimizations.
Example 1: AVC VBR Encode
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v ${width}x${height} -r $framerate \
-i $inputyuv -vframes $numframes -y -c:v hevc_qsv -preset medium \
-profile:v main -b:v $bitrate -maxrate $bitrate*2 -bufsize $bitrate*4 -g 256 \
-extbrc 1 -refs 5 -vsync 0 $output
Example 2: AVC CBR Encode
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v ${width}x${height} -r $framerate \
-i $inputyuv -vframes $numframes -y -c:v h264_qsv -preset medium \
-profile:v high -b:v $bitrate -maxrate $bitrate -minrate $bitrate -g 256 \
-extbrc 1 -b_strategy 1 -bf 7 -refs 5 -vsync 0 $output
Example 3: HEVC VBR Encode
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v ${width}x${height} -r $framerate \
-i $inputyuv -vframes $numframes -y -c:v hevc_qsv -preset medium \
-profile:v main -b:v $bitrate -maxrate $bitrate*2 -bufsize $bitrate*4 -g 256 \
-extbrc 1 -refs 5 -vsync 0 $output
Example 4: HEVC CBR Encode
ffmpeg -f rawvideo -pix_fmt yuv420p -s:v ${width}x${height} -r $framerate \
-i $inputyuv -vframes $numframes -y -c:v hevc_qsv -preset medium \
-profile:v main -b:v $bitrate -maxrate $bitrate -minrate $bitrate -g 256 \
-extbrc 1 -refs 5 -vsync 0 $output
Try it out
Simple content delivery network (CDN) leverages high density and high performance transcoding. Explore our quality and performance measurement infrastructure to level set quality and performance expectations from our solution. Performance Monitoring is an essential part of any development or production operation. Intel graphics accelerators excel at minimizing CPU utilization and memory footprint. We’ve enhanced our telemetry to provide additional utilization statistics on each of these accelerator components. In the CDN screen view (below) the upper-right panel illustrates the server video engine performance characteristics.
See more details and get source code at https://github.com/intel/media-delivery.
Prerequisites:
System with Intel graphics
Client system to receive streaming video (can run on same system as server)
We’d like to thank Yash Raj Films or the courtesy of using their trailer “WAR” (Copyright: Yash Raj Films Pvt. Ltd) in this demo.
git clone https://github.com/intel/media-delivery && cd media-delivery
docker build \
$(env | grep -E '(_proxy=|_PROXY)' | sed 's/^/--build-arg /') \
--file Dockerfile.ubuntu \
--tag intel-media-delivery \
.
DEVICE=${DEVICE:-/dev/dri/renderD128}
DEVICE_GRP=$(ls -g $DEVICE | awk '{print $3}' | \
xargs getent group | awk -F: '{print $3}')
docker run --rm -it \
-e DEVICE=$DEVICE --device $DEVICE --group-add $DEVICE_GRP \
--cap-add SYS_ADMIN \
-p 8080:8080 \
intel-media-delivery \
demo http://localhost:8080/vod/avc/WAR_TRAILER_HiQ_10_withAudio/index.m3u8
Try high quality tuned command lines for HEVC and AVC video encoding:
# Film: WAR – Courtesy & Copyright: Yash Raj Films Pvt. Ltd.
wget https://repositories.intel.com/media/WAR_TRAILER_HiQ_10_withAudio.mp4
ffmpeg -an -c:v h264_qsv -i WAR_TRAILER_HiQ_10_withAudio.mp4 \
-c:v hevc_qsv -preset medium -profile:v main -b:v 2000000 \
-extbrc 1 -bf 7 -refs 5 \
vsync 0 -y WAR_2Mbps_VBR_QSV.h265
Start Developing
Developers and users can easily access Linux software, Intel Media SDK, and FFMPEG. Our commitment to open source allows developers to easily customize these for any video application.
Use FFmpeg command line tool to perform basic trancode operations. See command line examples to achieve optimal quality level for content delivery usage scenarious. Check out generic examples for Intel Media SDK Plugins for FFmpeg.
Start developing or enhance your own application reading Media SDK Manual. See command line examples for Media SDK samples to achieve optimal quality level for content delivery usage scenarious.
Links
Media SDK Plugins for FFmpeg (also known as Intel Quick Sync Video Plugins for FFmpeg)