аббревиатура:
HLS:HTTP Live Streaming
ABR:Adaptive Bit Rate
DASH:Dynamic Adaptive Streaming over HTTP
При поиске форматов нарезки HLS я нашел новые концепции, такие как ABR/DASH/FMP4. Запишите эти концепции для последующего использования!
Отличия компонентов между обычными MP4, fMP4 и DASH:
Обычный MP4 | fMP4 | DASH(MPEG-DASH) |
---|---|---|
ftyp moovmdat | moofmdatmoofmdat | Initialization SegmentMedia SegmentMedia Segment |
MPEG-DASH поддерживает медиасегменты TS и MP4/ISO BMFF. HLS поддерживает только MPEG-2 TS. Медиа-сегменты DASH обычно короче, чем HLS, обычно от 2 до 4 секунд. DASH не требует определенного кодека. Видео можно кодировать с использованием H264 или других кодировок. VP9 и H265 также являются популярными кодировками. В целом, DASH может обеспечить существенно меньшую сквозную задержку по сравнению с HLS. Это важно для рабочих процессов потокового вещания. Кроме того, MPD на основе шаблонов MPEG-DASH не требует обновления и может кэшироваться на пограничном сервере сети, тогда как HLS необходимо периодически обновлять и распространять несколько раз.
MP4
MP4 (MPEG-4, часть 14) — это общий формат мультимедийного контейнера (его также можно понимать как формат инкапсуляции видео, соответствующий H264/H265/VP9 и другим форматам кодирования видео), соответствующий стандарт – ISO/IEC 14496-12. , а именно Информационные технологии Кодирование аудиовизуальных объектов Часть 12: Базовый формат медиафайлов ISO (Информационные технологии Кодирование аудиовизуальных объектов Часть 12: Базовый формат медиафайлов ISO).
Некоторые концепции:
трек: представляет собой набор сэмплов. Для мультимедийных данных трек представляет собой видео- или аудиопоследовательность.
Дорожка с подсказкой: эта специальная дорожка не содержит мультимедийных данных, но содержит некоторые инструкции по упаковке других дорожек данных в потоковое мультимедиа.
Сэмпл: для треков без подсказок видеосэмпл представляет собой кадр видео или группу непрерывных видеокадров, а аудиосэмпл — это непрерывный сжатый звук. В совокупности они называются сэмплом. Для трека подсказок образец определяет формат одного или нескольких пакетов потокового мультимедиа.
Таблица образцов: таблица с указанием времени и физического расположения образцов.
Чанк: блок, состоящий из нескольких семплов трека.
Suffixes = ".mp4", ".m4a"; Mac OS Type = "mpg4"; Mac OS Creator = "TVOD";
MIME="video/mp4" and "audio/mp4"
Обычный MP4 По индексному заголовку файла moov коробка и медиаданные mdat Состав коробки, базовая коробка MP4:
MP4 -> ftyp box
moov box
mdat box
fMP4
fMP4 — это формат потокового мультимедиа, основанный на MPEG-4 Part 12, RFC: ISOBMFF, который очень похож на mp4, но имеет некоторые отличия:
Ранее я понял, что файлы MP4 не поддерживают потоковое воспроизведение. Это понимание неверно. Сам формат MP4 поддерживает одновременную загрузку и воспроизведение. Нет необходимости загружать весь файл MP4, но для этого требуется буферизация данных заголовка MP4. долгое время, и fMP4. Самое большое отличие от MP4 заключается в том, что он лучше адаптируется к потребностям потоковой передачи.
fMP4 состоит из фрагментов, которые можно хранить как целый файл или фрагменты:
- При сохранении в виде одного файла каждый вывод представляет собой файл m4s. Полное видео fMP4 можно описать следующим образом:
moov + (moof + mdat) * N
Где moof box — это идентификатор фрагмента, а mdat box хранит медиаданные текущего фрагмента;
- При хранении в срезах каждый слайс представляет собой файл m4s, а выходные данные соответствуют нескольким файлам m4.
Первый фрагмент в fMP4 соответствует сегменту инициализации протокола DASH, последующие фрагменты соответствуют сегменту мультимедиа;
DASH
Что такое DASH? Простое понимание: это решение для потоковой передачи мультимедиа на стороне сервера и клиента. Определение DASH из Википедии:
DASH is an adaptive bitrate streaming technology where a multimedia file is partitioned into one or more segments and delivered to a client using HTTP.
В настоящее время ExoPlayer для Android поддерживает MPEG-DASH, а YouTube, Netflix, Samsung, Sony, Panasonic и другие телевизоры поддерживают MPEG-DASH.
Если вы используете HLS для поддержки ABR, существует множество ограничений. Для справки (https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/84207032) необходимо, чтобы начальный кадр IDR каждого фрагмента был выровнен. PTS, если они не согласованы, переключение между разными скоростями кода не будет плавным, и DASH очень хорошо решает эту проблему.
DASH-сервер:
Разделите видеоконтент на фрагменты, причем каждый фрагмент может иметь разные формы кодирования (разные кодеки, профили, разрешения, битрейты и т. д.);
Сторона игрока DASH:
Вы можете свободно выбирать медиафрагменты, которые вам нужно воспроизвести, а также реализовать технологию потоковой передачи с адаптивным битрейтом, чтобы плавно переключаться между содержимым изображения различного качества и обеспечивать лучшее качество воспроизведения.
Важные понятия в DASH
MPD: файл описания (манифест) медиафайла, аналогичный файлу m3u8 HLS. Файл MPD организован в формате XML, а его иерархическая структура показана на рисунке 1.
Представление: Соответствует дополнительному выходу (альтернативному). Например, видео 480p, видео 720p, аудио сэмплов 44100, аудио сэмплов 22050 описываются с помощью представления.
Сегмент: каждое представление разделено на несколько сегментов. Сегмент разделен на 4 категории, среди которых наиболее важными являются: Сегмент Инициализации (каждое Представление содержит 1 Начальный Сегмент), Медиа-Сегмент (медиа-контент каждого Представления содержит несколько Медиа-Сегментов)!
Проекты с открытым исходным кодом, поддерживающие упаковку fmp4:
https://github.com/samsha1971/rtsp2fmp4/tree/master/rtsp2fmp4
https://github.com/ireader/media-server
Библиотека с открытым исходным кодом MPEG-DASH:
https://github.com/bitmovin/libdash
Стандарт MPEG-DASH:
https://standards.iso.org/ittf/PubliclyAvailableStandards/c075485_ISO_IEC_23009-1_2019.zip
https://w3c.github.io/media-source/isobmff-byte-stream-format.html
ссылка:
https://github.com/liwf616/awesome-live-stream/wiki
https://www.shangmayuan.com/a/f53015d71afd4ed6b2ba63ca.html
http://xhelmboyx.tripod.com/formats/mp4-layout.txt
https://juejin.im/post/5dd119b5f265da0bf350d19b
https://segmentfault.com/a/1190000008810572