Introduction
Advantages of HEVC
High Efficiency Video Coding (HEVC), also known as H.265, is a video compression standard, designed as a successor to the widely used Advanced Video Coding (AVC/H.264). In comparison to AVC, HEVC offers about 20% better data compression at the same level of video quality, or substantially improved video quality at the same bit rate.
The benefits of this improved compression include reduced bandwidth usage, enabling higher video quality at a lower bitrate, and reduced time to first frame (TTFF), all leading to increased end viewer satisfaction.
Disadvantages
The main disadvantage is that because it is a new technology, HEVC video is not yet widely supported by clients (meaning device + OS + browser/app). In addition, some clients are capable of switching between HEVC and AVC segments during playback, while others are not.
In addition, HEVC video takes about 2-4 times longer to transcode than H.264.
Availability
HEVC support is a paid add-on for Video Cloud. If you are interested in HEVC support, contact your Customer Success Manager.
Brightcove's HEVC solution
To provide you with benefits of HEVC while still allowing viewers using technology that does not support it, Brightcove has developed a comprehensive solution that both supports older, non-HEVC clients, and also optimizes bandwidth use. There are multiple parts to this solution:
- Creation of both HEVC and AVC encoded renditions during transcoding (with optional creation of MP4 for progressive download in addition)
- Generation of manifests that contain references to both HEVC and AVC renditions:
- HLS: mixed variant streams (ordered by bitrate)
- DASH: separate adaptation sets for HEVC and H.264, along with supplemental properties declaring them as switchable
- Filtering logic based on the viewer client type:
- removes HEVC streams from manifests if requesting device is a legacy, non-HEVC capable device
- removes H.264 streams from manifests heading to HEVC capable non-switchable devices
- leaves optimal subset of both HEVC and H.264 streams if devices are capable of decoding both codecs and switching between them
Supported clients
Currently, HEVC is supported end-to-end on the following clients using Brightcove web or native device players:
Brightcove Web Player | |
---|---|
OS | Browser |
MacOS 10.13+ | Safari |
iOS 11+ | Safari |
Apple TV | via Airplay |
Windows 10 | Edge (legacy version with plugin) |
Brightcove Native Device SDK Players | |
---|---|
SDK | OS |
iOS SDK | iOS 11+ |
tvOS SDK | tvOS |
Android SDK | Android API level 21 (Lollipop version 5.0) and higher [1-1] |
Notes
- [1-1] For details, see HEVC Selection with the Native SDK for Android
HEVC ingest profiles
If HEVC is enabled for your account, to get HEVC renditions for playback, all you have to do is choose one of the HEVC ingest profiles (Context Aware Encoding or Dynamic Delivery) when you ingest your videos using the Upload module or the Dynamic Ingest API:
The full JSON details of these profiles is included below. We recommend that you use CAE (Context Aware Encoding) profiles to create the best rendition set for your source and optimize storage. Since CAE requires somewhat longer processing time to inspect the source, if getting a publishable rendition as quickly as possible is your priority, you can create a custom ingest profile with the Fast Publish option.
Note that if, for the fast publish option or some other reason, you need to create a custom HEVC profile, you will have to use either the Advanced Editor in the Studio Admin pages, or the Ingest Profiles API. HEVC renditions will not show up in the Simple Editor in Studio. You will find the available Dynamic Delivery renditions below.
Also note that the standard renditions for HEVC are 1920px width or smaller. We do, however, support UHD renditions (up to 4K). If you need UHD renditions, you can submit a request to Brightcove Support to have one or more created.
Custom CAE profiles
Currently, you must use the Ingest Profiles API to create these custom CAE profiles for HEVC.
The fields (under dynamic_origin
> dynamic_profile_options
) that are essential are:
video_codecs
- An array of codecs to create renditions for. The only codec values currently supported are
h264
andhevc
video_codec_options
-
Options for outputs for each of the codecs specified in video_codecs. The properties of
video_codec_options
are objects with name of an included codec (currently h264 or hevc). The allowed properties for each of these objects aremin_renditions
requiredmax_bitrate
max_first_rendition_bitrate
min_resolution
max_resolution
max_first_rendition_resolution
Sample
Below is a sample CAE profile with mixed renditions:
{
"name": "multi-platform-extended-dynamic-hevc-mixed-codec",
"display_name": "Multiplatform Extended HEVC (CAE) mixed-codec",
"description": "Deliver high quality content for a wide range content types and screen sizes including mobile, desktop and large screens.",
"account_id": 1486906377,
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"renditions": [],
"packages": [],
"dynamic_origin": {
"renditions": [
"default/audio64",
"default/audio128",
],
"images": [
{
"label": "thumbnail",
"height": 90,
"width": 160
},
{
"label": "poster",
"height": 720,
"width": 1280
}
],
"dynamic_profile_options": {
"max_renditions": 10,
"min_renditions": 2,
"max_bitrate": 12000,
"max_first_rendition_bitrate": 1000,
"max_first_rendition_resolution": {
"width": 1280,
"height": 720
},
"video_codecs": [
"h264",
"hevc"
],
"video_codec_options": {
"h264": {
"min_renditions": 2,
"max_resolution": {
"width": 1280,
"height": 720
}
},
"hevc": {
"min_renditions": 2,
"max_resolution": {
"width": 1920,
"height": 1080
}
}
}
}
}
}
Limitations
Below are current limitations on HEVC support - note that these will change as we make enhancements.
- Standard CAE ingest profiles currently include HEVC renditions. These should only be used in cases where you know that you will be delivering videos only to HEVC-capable devices. A custom profile is not needed to have mixed-codec renditions. See the Custom CAE profiles section above.
- HDR and 10-bit video is not supported.
- The Billing page currently does not show HEVC transcoding usage. However, our system is tracking HEVC transcoding usage internally and will be sending the invoice as part of our normal process.
Appendix 1: HEVC ingest profiles
Below are the full properties of the HEVC profiles in JSON.
- Multiplatform Extended HEVC (CAE)
- Multiplatform Extended HEVC (CAE) with MP4
- Multiplatform Extended Static H.264 + HEVC
- Multiplatform Extended Static H.264 + HEVC with MP4
- Multiplatform Extended HEVC with MP4
Context Aware Encoding (CAE) profiles
Multiplatform Extended HEVC (CAE)
{
"version": 1,
"name": "multi-platform-extended-dynamic-hevc",
"display_name": "Multiplatform Extended HEVC (CAE)",
"description": "Deliver high quality content for a wide range content types and screen sizes including mobile, desktop and large screens.",
"account_id": -1,
"brightcove_standard": true,
"date_created": 1581706195164,
"date_last_modified": 1581706195164,
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"renditions": [
],
"packages": [
],
"dynamic_origin": {
"renditions": [
"default/audio64",
"default/audio128"
],
"images": [
{
"label": "thumbnail",
"height": 90,
"width": 160
},
{
"label": "poster",
"height": 720,
"width": 1280
}
],
"dynamic_profile_options": {
"min_renditions": 2,
"max_renditions": 8,
"min_resolution": {
"width": 320,
"height": 180
},
"max_resolution": {
"width": 1920,
"height": 1080
},
"max_frame_rate": 30,
"max_bitrate": 4200,
"max_first_rendition_bitrate": 250,
"video_codec": "hevc",
"fixed_frame_rate": true,
"bitrate_cap_to_bitrate_ratio": 1.5,
"buffer_size_to_bitrate_ratio": 2,
"bitrate_cap_offset": 0,
"buffer_size_offset": 0,
"sample_aspect_ratio": "1:1"
},
"hevc": true
},
"id": "5e470e014b23617ad079c486"
}
Multiplatform Extended HEVC (CAE) with MP4
{
"version": 1,
"name": "multi-platform-extended-dynamic-hevc-with-mp4",
"display_name": "Multiplatform Extended HEVC (CAE) with MP4",
"description": "Deliver high quality content for a wide range content types and screen sizes including mobile, desktop, large screens, and syndication.",
"account_id": -1,
"brightcove_standard": true,
"date_created": 1581706195164,
"date_last_modified": 1581706195164,
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"renditions": [
],
"packages": [
],
"dynamic_origin": {
"renditions": [
"default/audio64",
"default/audio128",
"default/progressive2000"
],
"images": [
{
"label": "thumbnail",
"height": 90,
"width": 160
},
{
"label": "poster",
"height": 720,
"width": 1280
}
],
"dynamic_profile_options": {
"min_renditions": 2,
"max_renditions": 8,
"min_resolution": {
"width": 320,
"height": 180
},
"max_resolution": {
"width": 1920,
"height": 1080
},
"max_frame_rate": 30,
"max_bitrate": 3200,
"max_first_rendition_bitrate": 200,
"video_codec": "hevc",
"fixed_frame_rate": true,
"bitrate_cap_to_bitrate_ratio": 1.5,
"buffer_size_to_bitrate_ratio": 2,
"bitrate_cap_offset": 0,
"buffer_size_offset": 0,
"sample_aspect_ratio": "1:1"
},
"hevc": true
},
"id": "5e470e0c4c881c16fffdb88d"
}
Dynamic Delivery Profiles
Multiplatform Extended Static H.264 + HEVC
{
"version": 1,
"name": "multi-platform-extended-static-mixed-codec",
"display_name": "Multiplatform Extended Static H.264 + HEVC",
"description": "Deliver high quality content for a wide range content types and screen sizes including mobile, desktop and large screens.",
"account_id": -1,
"brightcove_standard": true,
"date_created": 1581706195164,
"date_last_modified": 1581706195164,
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"renditions": [
],
"packages": [
],
"dynamic_origin": {
"renditions": [
"default/video450",
"default/video700",
"default/video900",
"default/video1200",
"default/video2000",
"default/video2500",
"default/video3500",
"default/video3800",
"default/video300hevc",
"default/video550hevc",
"default/video1000hevc",
"default/video1300hevc",
"default/video1600hevc",
"default/video2850hevc",
"default/audio64",
"default/audio128"
],
"images": [
{
"label": "thumbnail",
"height": 90,
"width": 160
},
{
"label": "poster",
"height": 720,
"width": 1280
}
],
"hevc": true
},
"id": "5e46e57f305eb2517f27a543"
}
Multiplatform Extended Static H.264 + HEVC with MP4
{
"version": 1,
"name": "multi-platform-extended-static-mixed-codec-with-mp4",
"display_name": "Multiplatform Extended Static H.264 + HEVC with MP4",
"description": "Deliver high quality content for a wide range content types and screen sizes including mobile, desktop and large screens, and syndication.",
"account_id": -1,
"brightcove_standard": true,
"date_created": 1581706195164,
"date_last_modified": 1581706195164,
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"renditions": [
],
"packages": [
],
"dynamic_origin": {
"renditions": [
"default/video450",
"default/video700",
"default/video900",
"default/video1200",
"default/video2000",
"default/video2500",
"default/video3500",
"default/video3800",
"default/video300hevc",
"default/video550hevc",
"default/video1000hevc",
"default/video1300hevc",
"default/video1600hevc",
"default/video2850hevc",
"default/progressive2000",
"default/audio64",
"default/audio128"
],
"images": [
{
"label": "thumbnail",
"height": 90,
"width": 160
},
{
"label": "poster",
"height": 720,
"width": 1280
}
],
"hevc": true
},
"id": "5e46e59b135b6662f386559d"
}
Multiplatform Extended HEVC with MP4
{
"version": 1,
"name": "multi-platform-extended-static-hevc-with-mp4",
"display_name": "Multiplatform Extended HEVC with MP4",
"description": "Deliver high quality content for a wide range content types and screen sizes including mobile, desktop, large screens, and syndication.",
"account_id": -1,
"brightcove_standard": true,
"date_created": 1581706195164,
"date_last_modified": 1581706195164,
"digital_master": {
"rendition": "passthrough",
"distribute": false
},
"renditions": [
],
"packages": [
],
"dynamic_origin": {
"renditions": [
"default/video300hevc",
"default/video550hevc",
"default/video1000hevc",
"default/video1300hevc",
"default/video1600hevc",
"default/video2850hevc",
"default/progressive2000",
"default/audio64",
"default/audio128"
],
"images": [
{
"label": "thumbnail",
"height": 90,
"width": 160
},
{
"label": "poster",
"height": 720,
"width": 1280
}
],
"hevc": true
},
"id": "5e46e57e708a441e00a7ba1a"
}
Appendix 2: HEVC Dynamic Delivery Renditions
Below are the full properties of the HEVC renditions in JSON.
- Default HEVC 300
- Default HEVC 550
- Default HEVC 1000
- Default HEVC 1300
- Default HEVC 1600
- Default HEVC 2850
Default HEVC 300
{
"id": "default/video300hevc",
"version": 0,
"name": "Default HEVC 300",
"kind": "video",
"account_id": "default",
"created_at": "2020-02-20T17:57:49.622898302Z",
"updated_at": "2020-02-20T17:57:49.622898302Z",
"encoding_settings": {
"aspect_mode": "preserve",
"decoder_bitrate_cap": 450,
"decoder_buffer_size": 600,
"fixed_keyframe_interval": true,
"fragment_duration": 2000,
"height": 270,
"keyframe_rate": 1,
"segment_seconds": 2,
"speed": 3,
"video_bframes": 3,
"video_bitrate": 300,
"video_codec": "hevc",
"video_codec_profile": "main",
"video_reference_frames": 6,
"width": 480
}
}
Default HEVC 550
{
"id": "default/video550hevc",
"version": 0,
"name": "Default HEVC 550",
"kind": "video",
"account_id": "default",
"created_at": "2020-02-20T17:58:08.602132077Z",
"updated_at": "2020-02-20T17:58:08.602132077Z",
"encoding_settings": {
"aspect_mode": "preserve",
"decoder_bitrate_cap": 825,
"decoder_buffer_size": 1100,
"fixed_keyframe_interval": true,
"fragment_duration": 2000,
"height": 360,
"keyframe_rate": 1,
"segment_seconds": 2,
"speed": 3,
"video_bframes": 3,
"video_bitrate": 550,
"video_codec": "hevc",
"video_codec_profile": "main",
"video_reference_frames": 6,
"width": 640
}
}
Default HEVC 1000
{
"id": "default/video1000hevc",
"version": 0,
"name": "Default HEVC 1000",
"kind": "video",
"account_id": "default",
"created_at": "2020-02-20T17:58:24.768036423Z",
"updated_at": "2020-02-20T17:58:24.768036423Z",
"encoding_settings": {
"aspect_mode": "preserve",
"decoder_bitrate_cap": 1500,
"decoder_buffer_size": 2000,
"fixed_keyframe_interval": true,
"fragment_duration": 2000,
"height": 432,
"keyframe_rate": 1,
"segment_seconds": 2,
"speed": 3,
"video_bframes": 3,
"video_bitrate": 1000,
"video_codec": "hevc",
"video_codec_profile": "main",
"video_reference_frames": 6,
"width": 768
}
}
Default HEVC 1300
{
"id": "default/video1300hevc",
"version": 0,
"name": "Default HEVC 1300",
"kind": "video",
"account_id": "default",
"created_at": "2020-02-20T17:58:51.222403657Z",
"updated_at": "2020-02-20T17:58:51.222403657Z",
"encoding_settings": {
"aspect_mode": "preserve",
"decoder_bitrate_cap": 1950,
"decoder_buffer_size": 2600,
"fixed_keyframe_interval": true,
"fragment_duration": 2000,
"height": 576,
"keyframe_rate": 1,
"segment_seconds": 2,
"speed": 3,
"video_bframes": 3,
"video_bitrate": 1300,
"video_codec": "hevc",
"video_codec_profile": "main",
"video_reference_frames": 6,
"width": 1024
}
}
Default HEVC 1600
{
"id": "default/video1600hevc",
"version": 0,
"name": "Default HEVC 1600",
"kind": "video",
"account_id": "default",
"created_at": "2020-02-20T18:00:00.347383018Z",
"updated_at": "2020-02-20T18:00:00.347383018Z",
"encoding_settings": {
"aspect_mode": "preserve",
"decoder_bitrate_cap": 2400,
"decoder_buffer_size": 3200,
"fixed_keyframe_interval": true,
"fragment_duration": 2000,
"height": 720,
"keyframe_rate": 1,
"segment_seconds": 2,
"speed": 3,
"video_bframes": 3,
"video_bitrate": 1600,
"video_codec": "hevc",
"video_codec_profile": "main",
"video_reference_frames": 6,
"width": 1280
}
}
Default HEVC 2850
{
"id": "default/video2850hevc",
"version": 0,
"name": "Default HEVC 2850",
"kind": "video",
"account_id": "default",
"created_at": "2020-02-20T18:00:42.036123319Z",
"updated_at": "2020-02-20T18:00:42.036123319Z",
"encoding_settings": {
"aspect_mode": "preserve",
"decoder_bitrate_cap": 4275,
"decoder_buffer_size": 5700,
"fixed_keyframe_interval": true,
"fragment_duration": 2000,
"height": 1080,
"keyframe_rate": 1,
"segment_seconds": 2,
"speed": 3,
"video_bframes": 3,
"video_bitrate": 2850,
"video_codec": "hevc",
"video_codec_profile": "main",
"video_reference_frames": 6,
"width": 1920
}
}