How to Get Started with UHD in Zencoder
Media
Ultra High Definition (UHD) is not only about higher resolutions that reach as high as 4K. It's also about support for new video codecs (HEVC and VP9) and enabling workflows for high dynamic range (HDR) content through support for 10-bit color processing and the BT.2020 color space.
New customers or premium subscription customers do not need to do anything and automatically have access to the new features. Customers on one of the monthly plans (Pay-as-you-go, Launch, Traction or Growth), can enable these new features by going to the Zencoder Account Page, and clicking on the Activate Now button in the Activate UHD Transcoding section.
Here are some pointers to help you get started with these new features.
HEVC and VP9 Video
High efficiency video codec (HEVC) and VP9 are both advanced codecs that offer greater compression than H.264, the most commonly used codec today. If you want to deliver 4K video, or if you simply want to use fewer bits to deliver HD video, these codecs are worth looking at. The disadvantage is that neither of these codecs are as widely supported as H.264 is today, although this situation is changing daily.
We’re not going to offer advice as to whether you should choose HEVC or VP9—there is plenty of healthy debate about both of them on the web and you should make up your own mind based on your testing as well as the nature of your business and devices that you wish to reach. One thing to keep in mind, though, is that both of these codecs are under very active development. We’ve seen quality, bitrate, and performance improvements with each release of the codecs, and there’s every reason to believe that this will continue.
Generating HEVC and VP9 outputs in Zencoder is very straightforward. Similar to H.264, we provide a set of codec parameters that you can control. We’ve chosen sensible defaults, which you can use if you’re trying them out for the first time.
As an example, we’ll use our API Request Builder to create a simple job that generates an H.264, HEVC and VP9 output for download from an input that is stored on AWS S3. We’ve explicitly specified the format (container) and video codec to make it very clear for the example, but any other codec parameters use defaults because they are unspecified.
{
"input": "s3://zencodertesting/test.mov",
"outputs": [
{
"label": "h264",
"url": "s3://my-bucket/h264-output.mp4",
"format": "mp4",
"video_codec": "h264"
},
{
"label": "hevc",
"url": "s3://my-bucket/hevc-output.mp4",
"format": "mp4",
"video_codec": "hevc"
},
{
"label": "vp9",
"url": "s3://my-bucket/vp9-output.webm",
"format": "webm",
"video_codec": "vp9"
}
]
}
If you want to create outputs for streaming delivery of HEVC or VP9, you should use MPEG-DASH. For example, for delivery of 4K content to a Roku 4 streaming device, you can use HEVC packaged as MPEG-DASH. Here’s an example that shows how to add an 4K HEVC output to an MPEG-DASH job:
{
"input": "s3://zencodertesting/test.mov",
"outputs": [
{
"label": "dash-hevc",
"base_url": "s3://mybucket/uhdtest/video/8000_main420_10/",
"format": "m4f",
"type": "segmented",
"streaming_delivery_format": "dash",
"streaming_delivery_profile": "live",
"segment_seconds": 5,
"video_codec": "hevc",
"width": 3840,
"filename": "8000.mpd",
"video_bitrate": 6000,
"decoder_bitrate_cap": 6000,
"decoder_buffer_size": 12000,
"video_codec_profile": "main10",
"video_bit_depth": 10,
"audio_bitrate": 128,
"audio_codec": "aac",
"audio_sample_rate": 44100
}
]
}
4K and UHD
We’ve introduced a new UHD pricing tier for output resolutions greater than 2048x1080, and 4096x2160 or less.
Outputs within the UHD pricing tier are charged at four times the SD rate, or twice the HD rate. For example, if you have a 4K input file and create a 1080p output, you will be charged at the HD rate of 2x SD, but if you create a 4K output, you will be charged at the UHD rate of 4x SD.
If you regularly work with 4K media, you should ensure that you use the resolution settings to control the resolution of your output video so that you only incur UHD tier charges when you actually require them.
{
"input": "s3://zencodertesting/4K_test.mov",
"outputs": [
{
"label": "1080p_h264",
"url": "s3://my-bucket/1080p_h264-output.mp4",
"format": "mp4",
"video_codec": "h264",
"size": "1920x1080"
// ^^ This will be charged at the HD rate.
},
{
"label": "4K_hevc",
"url": "s3://my-bucket/4K_hevc-output.mp4",
"format": "mp4",
"video_codec": "hevc"
// ^^ This will be charged at the UHD rate, because the input is 4K and
// no output resolution was specified.
},
{
"label": "1080p_hevc",
"url": "s3://my-bucket/4K_hevc-output.mp4",
"format": "mp4",
"video_codec": "hevc",
"size": "1920x1080"
// ^^ This will be charged at the HD rate, an HD output resolution was specified.
}
]
}