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:

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.

Media System Architecture

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.