How does one choose the correct codec tag to use (hvc1
or hev1
) when muxing HEVC video into fragmented MP4 for streaming with MPEG-DASH/HLS?
I reckon there's a slight difference in muxing depending on the tag according to ISO/IEC FDIS 14496-15
:
When the sample entry name is 'hvc1', the default and mandatory value of array_completeness is 1 for arrays of all types of parameter sets, and 0 for all other arrays. When the sample entry name is 'hev1', the default value of array_completeness is 0 for all arrays.
Is there anything else apart from this?
Why are there two tags and what is the criteria to choose between the two?
Side note: Apple prefers hvc1
according to their HLS Authoring spec for some reason.
'hvc1' stores all parameter sets inside the MP4 container below the sample description boxes. 'hev1' stores all parameter sets in band (inside the HEVC stream).
The parameter sets are essentially mandatory metadata necessary to decode the streams.
So you have two slightly different ways of muxing HEVC into MP4.
I'd choose based on the play out and transport scenario.
Your player or your transport specification may require one or the other.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With