Reducing Turnaround Times for Short-Form Video Content

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, using STABLE Encoder version, you'll automatically experience faster queueing times.
Here are some things to keep in mind:

  • Supported inputs types (for probing the content):
    • S3, S3 role based, HTTP, HTTPs, Azure
  • Supported regions*:
    • AWS: EU_WEST_1, EU_WEST_2, EU_CENTRAL_1, AP_NORTHEAST_2, AP_SOUTHEAST_2, US_EAST_1, US_WEST_2,
    • GCP: EUROPE_WEST_1, US_CENTRAL_1
    • AZURE: EUROPE_WEST, US_EAST2, CANADA_CENTRAL, US_EAST, US_WEST, JAPAN_EAST, GERMANY_WESTCENTRAL, EUROPE_NORTH, US_WEST2, AUSTRALIA_EAST
  • Ladder limitations:
    • Up to 1080p
  • Hardware Encoding:
    • If Hardware Encoding is configured (by specifying "presetConfiguration": "VOD_HARDWARE_SHORTFORM" - available only for h264 and h265), certain restrictions apply as detailed in this guide. Currently*, the only region that supports Hardware Encoding is AWS EU_WEST_1.

Some FAQs:

  1. Is there any additional cost?
    - No, using Accelerated Mode does not incur additional costs.
  2. Why are my queuing times still high?
    - This could indicate that the encoding did not run in Accelerated Mode. Ensure there are no account limits that conflict with the above requirements.

*This list of supported regions was last updated on on 30.08.24.
If you're interested in using Accelerated mode but the region for your preferred Cloud provider is not listed here, 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);