#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 — это нижняя строка на изображении выше.