In your TranscodePresetDocument you can control what the transcoder should do with your output-file. There are different values and setting that you can customize. H.264 is a very complex standard and sometimes it’s very difficult to work with the codecs and their setting. Two important parameters are Level and Profile.
What is the “Profile”?
H.264 supports some encoding profiles (Baseline, Main, High, High10 and Extended). These profiles represent a sub-set of the encoding techniques available in H.264. This is useful to target decoders with very different decoding capabilities (memory and processing power).
Baseline profile supports only a limited subset of techniques so it is simpler to design, requires less code and less processing power and therefore is aimed at low power mobile devices and the like.
Main profile supports the majority of encoding techniques so it need more code, more memory and more processing power on the decoder side. Main profile is usually supported by set-top-box and the like.
High profile supports virtually all the H264’s encoding techniques. It is designed for HD and FullHD (Bluray and HD Satellite broadcast) and it’s usually supported by software decoders too.
High10 profile goes beyond today's mainstream consumer product capabilities, this profile builds on top of the High Profile—adding support for up to 10 bits per sample of decoded picture precision.
Extended profile is intended as the streaming video profile, this profile has relatively high compression capability and some extra tricks for robustness to data losses and server stream switching.
What is the “Level”?
Profiles address the problem of code complexity and processing power. Levels address the problem of bandwidth, max resolution, and memory issues on the decoder side. Any given device supports a max profile depending by the memory and the max resolution available. Lower levels mean lower resolutions, lower allowed max bitrates and lower memory to store reference frames. In example iPhone support video encoded in baseline profile up to the level 3.0.
How to set Profile;
To change which profile you you want to use, you should set the following setting snippet into your TranscodePresetDocument.
<video> <scaling> <width>1280</width> <height>720</height> </scaling> <codec>h264</codec> <bitrate>3000000</bitrate> <framerate> <numerator>1</numerator> <denominator>25</denominator> </framerate> <preset>main</preset> <----- Input which profile you want to use </video> </TranscodePresetDocument>
How to set Level;
To change the level value on your H.264 media file, you should set the following setting snippet into your TranscodePresetDocument.
The example will set the level to 3.1.
<setting> <key> level_id </key> <value> 3.1 </value> </setting>
More on different transcode presets;
Feature support in particular profiles;
Table of Levels with maximum property values;