Проще говоря, составной поток — это поток, содержащий видео и аудио. Если поток содержит только аудио или видео, мы называем его «голым потоком», например «голым потоком H264», «голым потоком AAC» и т. д. В аудио и видео поток TS (полное название: MPEG2-TS) является широко используемым составным потоком (в настоящее время наиболее распространенным составным потоком). Почти все протоколы потокового мультимедиа поддерживают потоки TS, такие как: RTSP, UDP, SRT и т. д. (RTMP принадлежит к протоколу потокового мультимедиа FLV, который будет подробно представлен в следующей статье).
Они есть:
Размер уровня TS фиксирован и составляет 188 байт, и TS внутренне разделен на три части: заголовок TS, поле адаптации и полезная нагрузка. Заголовок TS относится к заголовку TS, который фиксирован в четырех байтах. Поле адаптации не имеет особого значения, оно в основном используется для дополнения 188 байт. Полезная нагрузка относится к конкретным данным pes.
Основное содержимое уровня транспортного потока включает в себя: таблицу PAT, таблицу PMT, аудиопоток и видеопоток. Основная функция таблицы PAT — поиск соответствующих аудио- и видеопотоков через PMT. Значение PID таблицы PAT обычно равно 0, а PAT и PMT необходимо время от времени вставлять в поток TS. Поэтому давайте суммируем конкретные функции таблиц PAT и таблиц PMT:
После того как мы представим уровень транспортного потока, давайте посмотрим на содержимое уровня PES. Основная функция уровня PES — добавление временной метки к каждому аудио- и видеопотоку. Вот почему мы часто видим информацию PTS и DTS в плеерах ffplay или vlc. Давайте сначала взглянем на структуру PES:
PTS относится к метке времени отображения, а DTS относится к метке времени декодирования. В большинстве случаев значения PTS и DTS одинаковы, но если кодер вводит кадры B, PTS и DTS должны рассчитать DTS на основе истинного интервала B.
PTS звука всегда равен DTS.
Уровень ES — это то, что мы часто называем голой потоковой передачей видео и потоковой передачей звука. Например: кодовый поток H264/HEVC. Кодовый поток AAC. На уровне ES потока TS необходимо упаковать все чистые видеопотоки и аудиопотоки. Например, если взять в качестве примера поток кода H264, все голые потоки H264 следуют формату NALU, включая кадры SPS, PPS и I.
Поскольку это структура потока ES, она была представлена в предыдущих статьях, поэтому я не буду вдаваться в подробности здесь.