Может ли поток H.264 в файле MP4 содержать эмуляцию начального кода приложения B?

#video-streaming #mp4 #h.264 #http-live-streaming

#потоковое видео #МР4 #ч.264 #http-прямая трансляция

Вопрос:

Файл MP4 (на самом деле это поток HLS, использующий формат MP4) содержит поток H.264 в формате AVC: [NALU length][NALU data] . Для декодирования H.264 требуется формат приложения B: [startcode][NALU data] . В общем случае эмуляция начального кода может выполняться в формате AVC (например, 0x00000001 может происходить внутри закодированных данных). Означает ли это, что формат файла MP4 также может содержать NALU H.264 с эмуляцией начального кода? Или следует применить предотвращение эмуляции перед упаковкой в MP4?

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

1. Предотвращение эмуляции всегда применяется для удаления последовательностей 00 00 00-2 из закодированных данных (RBSP), это не связано с приложением B. Формат приложения B касается начальных кодов в отличие от кодирования конечных единиц по длине выполнения.

2. Я думаю, что изображение, приведенное здесь , отлично визуализирует. Предотвращение эмуляции (строка с 0x03) является частью NALU, а приложение B независимо от этого является методом организации NALU в поток байтов.

3. если вы опубликуете это в качестве ответа, я буду рад принять его

Ответ №1:

Для удаления 00 00 00-02 последовательностей из закодированных данных (RBSP) всегда применяется предотвращение эмуляции, поэтому это не имеет отношения к приложению B: Формат H.264 В приложении B касается префиксов начального кода, добавляющих конечные единицы в формате потока байтов, в отличие от длины единиц.

Шпаргалка по этому:

введите описание изображения здесь

Предотвращение эмуляции — это строка 2 со значениями 0x03, а приложение B — это нижняя строка на изображении выше.