HEVC Video

This topic covers Video Cloud support for HEVC video.

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:

Supported Web Clients for HEVC
Brightcove Web Player
OS Browser
MacOS 10.13+ Safari
iOS 11+ Safari
Apple TV via Airplay
Windows 10 Edge (legacy version with plugin)
Supported Devices for HEVC
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

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:

HEVC Ingest Profiles
HEVC Ingest Profiles

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 (4K and larger). If you need UHD renditions, you can submit a request to Brightcove Support to have one or more created.

Custom CAE profiles

The standard CAE ingest profiles do no include mixed HEVC/H.264 renditions. However, you can create a custom theme that does so. 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 and hevc
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 are
  • min_renditions required
  • max_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.

  1. 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. Custom profiles can be created to include both HEVC and H.264 renditions. See the Custom CAE profiles section above.
  2. HDR and 10-bit video is not supported.
  3. Media UI currently displays all the renditions and does not display the codec info next to each rendition.

Appendix 1: HEVC ingest profiles

Below are the full properties of the HEVC profiles in JSON.

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

{
      "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
      }
    }