Концептуальное понимание FMP4 и DASH
Концептуальное понимание FMP4 и DASH

аббревиатура:

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, но имеет некоторые отличия:

  1. fMP4 не требует наличия moov Box для инициализации. moov Box fMP4 содержит только некоторую информацию о дорожке.
  2. fMP4 из видео/Аудио metadata Информация и данные существуют одна за другой moof、mdat , это потоковая передача в формате инкапсуляции.

Ранее я понял, что файлы 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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose