2015-09-25 2 views
3

Я хочу понять, как изображения I, B, P пакетируются и мультиплексируются, когда кодированное видео mpeg4 AVC/H.264 инкапсулируется в контейнер транспортного потока (для потоковых протоколов, таких как HTTP Live Streaming). Для видео mpeg2-кодека, поскольку я понял, что каждый PES запускается в новом пакете TS, но может быть перекрытие изображений I, B, P в одном PES.PES-структура видео mpeg4 AVC для инкапсуляции в транспортный поток

Но для видео mpeg4 AVC может кто-нибудь объяснить, как кадры I, B, P мультиплексируются в PES? Могут ли они перекрываться в PES, что означает, что потеря одного пакета TS может потенциально потерять несколько кадров I/B/P? Я попытался пройти через полезные структуры из RFC и некоторых других документов, но не мог понять ясно.

+0

PES-пакеты имеют переменный размер и содержат одну элементарную информацию о потоке, то есть аудио или видео. Обычно для широковещательного приложения PES не будет содержать более одного кадра данных с кодированием видео. Поэтому я понимаю, что потеря одного пакета TS не должна потерять несколько кадров. И даже если есть потеря пакетов, у декодера должен быть механизм коррекции ошибок для обработки этого сценария. – shri

+0

Привет, Шри, спасибо. Да, декодеры имеют механизмы исправления ошибок, но если он теряет I-кадр, качество видео ухудшается. Кроме того, как и ATSC, упоминается, что для трансляции только один кадр будет находиться в пакете PES (с переменным размером). То же самое для потоковой передачи мультимедиа через Интернет? – CompNet

+0

В режиме реального времени, перетекающего через Интернет, когда происходит потеря пакетов, выполняется повторная передача потерянного пакета. Однако для интерактивной ретрансляции видео может быть неэффективным, поскольку время, затрачиваемое на обнаружение потери и передачи пакетов, будет иметь задержку более 1 кадра. FCE - еще один вариант исправления ошибок. – shri

ответ

0

В качестве краткого резюме, обычно в широковещательном приложении, PES не будет содержать более одного видеофрагмента. И поэтому, когда один TS-пакет потерян, мы не должны терять несколько деталей кадра. Сказав, что потеря пакетов повлияет на качество последующего кадра, и если это будет опорный кадр, то искажение будет очень высоким.

Следовательно, на стороне декодера мы должны иметь механизм исправления ошибок. Прямая коррекция ошибок обычно является механизмом восстановления ошибок в системе непрерывной передачи видео. Кроме того, когда пакет потерян, люди пытаются повторно передать потерянный пакет. Это работает отлично, пока латентность сети низкая. Однако для интерактивного телевизора этот обычный механизм восстановления ошибок может оказаться неприемлемым.

1

Кадры I, B, P НЕ мультиплексируются в пакете PES, поскольку разные кадры имеют разные DTS и PTS, но в одном пакете PES может быть указана только одна пара DTS/PTS. То, что делает muxer, - это взять кадр (будь то I, B или P), упаковать его в пакет PES, поместить DTS и PTS в пакет, и все. Следующий кадр будет упакован в другой PES. Иногда, в зависимости от кодировщика и мультиплеера, когда кадр очень большой (например, I-кадр HD-видео), он упаковывается в несколько пакетов PES, которые имеют одинаковые DTS/PTS.

Однако SPS и PPS потока h264 упакованы вместе с I-кадром в один пакет PES. Это означает, что если пакет TS, содержащий SPS и PPS, будет потерян, то декодер должен будет дождаться передачи следующих SPS и PPS, поскольку без них он не может декодировать поток.

Пожалуйста, не так, как это делают большинство (если не все) кодеры и мультиплексоры. Стандарт не описывает и не может описывать каждый случай.

Смежные вопросы