Creating an Encoding with Hardware Acceleration
Overview
Hardware-acceleration is a mechanism to leverage hardware capabilities for specific use cases. This usually results in increased efficiency or faster processing times in comparison to software processing on general-purpose hardware.
Specifically, we integrated hardware-acceleration through GPU-acceleration with NVIDIA T4 GPUs on Amazon EC2 G4dn instances (see Blog post about GPU Acceleration for Cloud Video Encoding).
Recommendation: short form video content
Hardware-acceleration is recommended for short form video content of up to 5 minutes in length. Please also refer to How to reduce short form video content turnaround times.
Requirements
- Open API SDK v1.179.0+
- Encoder version v2.180.0+
- VoD encoding only, not live
- output video codecs must be H264/AVC or H265/HEVC
- Supports only pixel formats YUV420 (input) to YUV420 (output)
- Works only on AWS regions (Managed cloud and Cloud Connect)
- Note: audio is not affected by hardware-acceleration
Fail-fast for incompatible encoding configurations
An encoding will fail with a "Hardware encoding unsupported configuration" message when the configuration is incompatible with the requirements and known limitations.
Known Limitations
The following features are not compatible with hardware/GPU-acceleration:
- no video filters
- no PerTitle
- no Dolby Vision
- no Forensic Watermark
- no BurnIn Subtitle
- no Thumbnails
- no PSNR
- no Multi Pass
Start an Encoding using hardware-acceleration
To make use of hardware-acceleration, the preset VOD_HARDWARE_SHORTFORM
for H264/AVC or H265/HEVC must be selected.
Bitmovin API SDK for Java Example: (API-Reference | Github)
Encoding encoding = new Encoding();
encoding.setEncoderVersion("STABLE");
//Make sure to use AWS
encoding.setCloudRegion(CloudRegion.AWS);
...
//your encoding configurations...
...
//Create codec configuration with a hardware-acceleration preset
H264VideoConfiguration h264VideoConfiguration = new H264VideoConfiguration();
h264VideoConfiguration.setName("Your first CodecConfig with hardware-acceleration");
h264VideoConfiguration.setPresetConfiguration(PresetConfiguration.VOD_HARDWARE_SHORTFORM);
h264VideoConfiguration.setProfile(ProfileH264.HIGH);
h264VideoConfiguration = bitmovinApi.encoding.configurations.video.h264.create(h264VideoConfiguration);
...
//your encoding configurations...
...
//Start an Encoding with StartEncodingRequest Configuration
StartEncodingRequest startEncodingRequest = new StartEncodingRequest();
bitmovinApi.encodings.start(encoding.getId(), startEncodingRequest);
Updated about 11 hours ago