How to reduce short form video content turnaround times

Overview

Bitmovin's split-and-stitch cloud architecture enables massive horizontal scale by allowing different parts of a video to be processed simultaneously and then reassembled for playback. This type of workflow works especially well with longer content but needs some adjustments when working with short-form video content of up to 5 minutes in length.

To optimize your encoding workflow for short-form video content, some parameters need to be adjusted for shorter turnaround times.

For more information on use cases and our evaluations, please read our Blog post about GPU Acceleration for Cloud Video Encoding.

Accelerated Mode

If you're encoding videos under 5 minutes in a Managed Cloud deployment on AWS using our STABLE version, you'll automatically experience faster queueing times.

Here are some things to keep in mind:

  • Currently only available on AWS: As of now, Accelerated Mode is only available for encoding jobs running on AWS. If you're using another cloud provider and are interested in this feature, please contact your Bitmovin representative.
  • Supported AWS regions: We're constantly adding more regions to the list, but most of the available regions already support this feature. To confirm if your specific region is included, please contact your Bitmovin representative.

(Dynamic) Pre-Warmed Pools

📘

Requirements and known limitations

Please refer to How to use Pre-warmed Encoder Pools specific requirements and known limitations.

When you start an encoding, it will first be queued whilst an encoder instance is spun up and configured, as described in What do the different encodings state mean?

The queue time can be a significant portion of the turnaround time, in particular for short source files. In most circumstances, you will be able to reduce that time with the use of pre-warmed encoder pools (described in detail at How to use Pre-warmed Encoder Pools). A pre-warmed encoder pool can be static or dynamic in size, based on your workflow requirements and resource demands.

Make sure to enable hardware-acceleration with the gpuEnabled property for your pool. Otherwise, encodings configured with a VOD_HARDWARE_SHORTFORM codec configuration preset are not able to benefit from hardware-acceleration.

What compromise you may have to make

Pre-warmed pools may increase your encoding costs, in particular, if they’re not used with care. Only configure the pools with as many instances as you may reasonably require, and don’t forget to shut them down when not needed to avoid incurring costs.

Create and start a Dynamic Pre-Warmed Pool with GPU-enabled

Bitmovin API SDK for Java Example: (API-Reference | Github)

PrewarmedEncoderPool pool = new PrewarmedEncoderPool();
...
pool.setCloudRegion(CloudRegion.AWS_EU_WEST_1);
pool.setDynamicPool(true);
pool.setGpuEnabled(true);

createdPool = bitmovinApi.encoding.infrastructure.prewarmedEncoderPools.create(pool);

startedPool = bitmovinApi.encoding.infrastructure.prewarmedEncoderPools.start(createdPool.getId());

Encoding Configuration

The correct storage and region

Your Input and Output storage should also be in the same cloud region, and you should configure your encoding to run in that same cloud region. Using hardware-acceleration is currently limited to AWS (NVIDIA T4 GPUs on Amazon EC2 G4dn instances).

Bitmovin API SDK for Java Example: (API-Reference | Github)

Encoding encoding = new Encoding();
...
encoding.setCloudRegion(CloudRegion.AWS_EU_WEST_1);
...
encoding = bitmovinApi.encoding.encodings.create(encoding);

A speed-focused preset: hardware-acceleration

📘

Requirements and known limitations

Please refer to How to create an Encoding using hardware-acceleration specific requirements and known limitations.

All of our codec configurations allow you to use a preset. Some of those presets are using hardware-acceleration.

Bitmovin API SDK for Java Example: (API-Reference | Github)

H264VideoConfiguration config = new H264VideoConfiguration();
...
config.setPresetConfiguration(PresetConfiguration.VOD_HARDWARE_SHORTFORM);
...
return bitmovinApi.encoding.configurations.video.h264.create(config);

Use a previously started Pre-Warmed Pool

Attention: Pre-warmed Pool might take a couple of minutes to be ready. Starting an encoding immediately after the start Pre-Warmed Pool request was sent will probably result in an encoding that will not utilize the Pre-Warmed Pool.

Bitmovin API SDK for Java Example: (API-Reference | Github)

var scheduling = new Scheduling();
scheduling.setPrewarmedEncoderPoolIds(Collections.singletonList(startedPool.getId()));

var startEncodingRequest = new StartEncodingRequest();
startEncodingRequest.setScheduling(scheduling);

bitmovinApi.encodings.start(encoding.getId(), startEncodingRequest);