Какой тег кодека HEVC использовать с fMP4, hvc1 или hev1?

#video-streaming #http-live-streaming #mpeg-dash #hevc #fmp4

#потоковое видео #http-прямая трансляция #mpeg-dash #hevc #fmp4

Вопрос:

Как выбрать правильный тег кодека для использования ( hvc1 или hev1 ) при мультиплексировании видео HEVC во фрагментированный MP4 для потоковой передачи с MPEG-DASH / HLS?

Я считаю, что есть небольшая разница в мультиплексировании в зависимости от тега в соответствии с ISO/IEC FDIS 14496-15 :

Если в качестве примера используется имя элемента ‘hvc1’, значение array_completeness по умолчанию и обязательное значение равно 1 для массивов всех типов наборов параметров и 0 для всех других массивов. Если в качестве примера указано имя элемента ‘hev1’, значение array_completeness по умолчанию равно 0 для всех массивов.

Есть ли что-нибудь еще, кроме этого?

Почему существует два тега и каковы критерии выбора между ними?

Примечание: Apple по какой-то причине предпочитает hvc1 в соответствии со своей спецификацией разработки HLS.

Ответ №1:

‘hvc1’ хранит все наборы параметров внутри контейнера MP4 под полями описания примеров. ‘hev1’ хранит все наборы параметров в band (внутри потока HEVC).

Наборы параметров по сути являются обязательными метаданными, необходимыми для декодирования потоков.

Итак, у вас есть два немного отличающихся способа мультиплексирования HEVC в MP4.

Я бы выбрал на основе сценария воспроизведения и транспортировки.

Для вашего плеера или спецификации вашего транспорта может потребоваться то или другое.

Комментарии:

1. Я думаю, hev1 даже поддерживает как внутриполосные, так и внеполосные наборы параметров. Смотрите раздел 8.3.2 of ISO/IEC FDIS 14496-15:2019(E) .

2. QuickTime от Apple (Mac OS Big Sur), похоже, не может воспроизводить hev1, но hvc1 воспроизводит файл

3. Интересно, как тот факт, что многие люди перешли на использование MKV вместо MP4, меняет это.