Расширение источника мультимедиа (MSE) требует фрагментации mp4 для воспроизведения в браузере.
Что такое Fragmented mp4 (fMP4)? Чем он отличается от обычного mp4?
Ответ 1
Фрагментированный MP4 содержит серию сегментов, которые могут запрашиваться индивидуально, если ваш сервер поддерживает запросы байтового диапазона.
Коробки aka Atoms
Все файлы MP4 используют объектно-ориентированный формат, содержащий поля aka atom.
Вы можете просмотреть представление полей в MP4 с помощью онлайн-инструмента, такого как MP4 Parser или если вы используете Windows, MP4 Explorer. Позвольте сравнить нормальный MP4 с фрагментарным:
Нефрагментированный MP4
Этот снимок экрана (из MP4 Parser) показывает MP4, который не был фрагментирован и довольно просто имеет один массивный mdat
(данные фильма).
Если бы мы строили видеопроигрыватель, поддерживающий адаптивный битрейт, нам может понадобиться знать положение байта метки 10 секунд в файлах 0,5 Мбит/с и 1 Мбит/с для переключения источника видео между двумя файлами в этот момент, Определение этой точной позиции байта в пределах одного массивного mdat
в каждом соответствующем файле не является тривиальным.
Фрагментированный MP4
Этот снимок экрана показывает фрагментированный MP4, который был сегментирован с помощью MP4Box с профилем onDemand
.
Вы заметите sidx
и серию moof
+ mdat
. sidx
- это индекс сегмента и хранит метаданные точных местоположений диапазона байтов сегментов moof
+ mdat
.
По существу, вы можете независимо загружать sidx
(его байтовый диапазон будет определен в сопроводительном файле .mpd
Media Descriptor file), а затем выберите сегменты, которые вы хотите впоследствии загрузить и добавить в MSE SourceBuffer.
Важно отметить, что каждый сегмент создается с регулярным интервалом по вашему выбору (т.е. каждые 5 секунд), поэтому сегменты могут иметь временное выравнивание между файлами с различными битрейтами, что упрощает адаптацию битрейта во время воспроизведения.
Ответ 2
Основное различие между фрагментированным MP4 и обычным MP4 заключается в том, что moov (поле заголовка фильма) фрагментированного MP4 появляется в начале файла, а не в конце.
Здесь вы можете найти точное описание фрагментированного MP4: https://w3c.github.io/media-source/isobmff-byte-stream-format.html