MPEG-DASH HEVC Encoding

Written by:
December 15th, 2015

High Efficiency Video Coding (HEVC) or H.265 is a compression standard that doubles the compression efficiency while maintaining similar or same video quality compared to its predecessor H.264/AVC

High Efficiency Video Coding (HEVC) or H.265 is a compression standard that was jointly developed by ISO/IEC MPEG SC29/WG11 and the ITU-T Video Coding Experts Group (VCEG). The standard was officially ratified by MPEG on the 13th of April 2013. As for every new video codec the goal of HEVC was to double the compression while maintaining similar or same video quality compared to its predecessor H.264/AVC. HEVC has been designed to take advantage of very high resolutions such as 4K and 8K which usually contain very wide areas of similar blocks. Therefore, one of the first things that was changed was the block size on which the codec operates. H.264/AVC was using 16 by 16 blocks at a maximum and these blocks were replaced by Coding Tree Units (CTU) that can take up to a maximum of 64 by 64 sizes. This allows utilization of big homogenous areas as very big blocks can be used that enable higher efficiency. HEVC also only allows Context Adaptive Binary Arithmetic Coding (CABAC) as entropy encoder as it is the most efficient one and decoding performance considerations are less important now as every smartphone has already two or more cores and built-in decoding chipsets.

MPEG DASH HEVC Encoding quality comparison

There are several other small improvements that lead to the encoding efficiency gain, and the performance of the HEVC implementations will definitely increase over the next few years. Additionally, MPEG added the support for HEVC in several container formats such as MPEG 2 Transport Stream (MP2TS) and ISO Base Media File Format (IBMFF) that is used as the basis for MP4. As MPEG DASH is container and codec agnostic, HEVC is supported anyway, but with the support in the MP4 container format it’s even easier to integrate HEVC seamlessly into your workflow.

MPEG DASH HEVC Encoding with Bitmovin’s API

MPEG DASH HEVC encoding with Bitmovin is very simple and is supported through our REST-API and with our API Clients such as PHP and Python. Basically there is just one parameter in the Encoding Profile that needs to be changed. Specifically the codec attribute in the Encoding Profile needs to be changed to hevc. This attribute is optional, which means if you don’t specify it, we will use h264 as codec. Currently MPEG DASH HEVC is supported within all plans and for all of our users.

MPEG DASH HEVC encoding with the Bitmovin API
Python API Client MPEG DASH HEVC

A simple Python example of an MPEG DASH HEVC encoding can be found at our python github example.

  1. Follow the instructions on github to setup bitcodin-python.
  2. Make sure to set the correct API key:
    bitcodin.api_key = 'INSERT YOUR API KEY'
  3. Create an MPEG DASH HEVC encoding profile
    video_configs = list()
    
    video_configs.append(bitcodin.VideoStreamConfig(
        default_stream_id=0,
        bitrate=1024000,
        profile='Main',
        preset='standard',
        height=768,
        width=1024,
        codec='hevc'
    ))
    
    audio_configs = [bitcodin.AudioStreamConfig(default_stream_id=0, 
                                                bitrate=192000)]
    
    encoding_profile_obj = bitcodin.EncodingProfile('HEVC Encoding Profile', 
                                                     video_configs, 
                                                     audio_configs)
    
    encoding_profile = bitcodin.create_encoding_profile(encoding_profile_obj)
    
    
  4. Create and start MPEG DASH HEVC encoding
    manifests = ['mpd']
    
    job = bitcodin.Job(
        input_id=input_result.input_id,
        encoding_profile_id=encoding_profile.encoding_profile_id,
        manifest_types=manifests
    )
    
    job_result = bitcodin.create_job(job)
    
    

Playback with the Bitmovin Player

The Bitmovin Adaptive Streaming Player utilizes the browser build-in HTML5 Media Source Extensions (MSE) to playback HEVC native through the browser decoding engine. If the underlying browser supports HEVC, the Bitmovin Player supports it too. Currently this works on Microsoft Edge and Android native Apps based on ExoPlayer with devices that support HEVC but with MPEG-DASH you can use H.264/AVC in parallel with H.265/HEVC and only devices that are capable of playing HEVC will use the HEVC Representations.

Conclusion

HEVC is probably the most efficient codec on the market and it’s worth trying it out. The integration with MPEG-DASH is seamless and the Bitmovin API allows you to setup an HEVC encoding workflow in just a few minutes. If you want to try our MPEG-DASH HEVC encoding and playback with your content, you can use our free plan with 2.5GB encoding output per month. That’s great for testing and playing around with our HEVC encoder.

See an MPEG-DASH example using HEVC. Scroll down to the Telecom ParisTech, GPAC: UHD HEVC DASH Dataset

Tags: , , , , , , , , , , , , , , , , , , , , , , , , ,

Simple Share Buttons