What's the difference between 'hvc1' and 'hev1' HEVC codec tags for fMP4?

HEVC video can be muxed into fMP4 using different codec tags.

According to 8.4.1 HEVC video stream definition of ISO/IEC FDIS 14496-15:2019(E) there are hvc1 and hev1.

But what’s the difference between the two?

2 Likes

It’s related to the placement of parameter sets (SPS, PPS, VPS) in the fMP4 file.

Section 8.3.2 of ISO/IEC FDIS 14496-15:2019(E) states:

Parameter sets: A parameter set to be used in a picture must be sent prior to the sample containing that picture or in the sample for that picture. For a video stream that a particular sample entry applies to, the video parameter set, sequence parameter sets, and picture parameter sets, shall be stored only in the sample entry when the sample entry name is ‘hvc1’, and may be stored in the sample entry and the samples when the sample entry name is ‘hev1’.

Conclusively:

  • hvc1 parameter sets are stored out-of-band in the sample entry (i.e. below the Sample Description Box ( stsd ) box)
  • hev1 parameter sets are stored out-of-band in the sample entry and/or in-band in the samples (i.e. SPS/PPS/VPS NAL units in the bitstream/ mdat box)

Side Notes:

  • It seems not every platform/decoder supports both tags
  • Apple QuickTime player on Mac only supports hvc1
  • Apple prefers hvc1 for HLS on Apple devices
3 Likes