Media Source Extension ( MSE ) benötigt fragmentierte mp4 für die Wiedergabe im Browser.
Ein fragmentierter MP4 enthält eine Reihe von Segmenten, die einzeln angefordert werden können, wenn Ihr Server Bytebereichsanforderungen unterstützt.
Alle MP4-Dateien verwenden ein objektorientiertes Format, das Boxen oder Atome enthält.
Sie können eine Darstellung der Felder in Ihrem MP4 mit einem Online-Tool wie MP4-Parser oder unter Windows MP4-Explorer anzeigen. Vergleichen wir einen normalen MP4 mit einem fragmentierten:
Dieser Screenshot (aus MP4-Parser ) zeigt einen MP4, der nicht fragmentiert wurde und ganz einfach ein massives Feld mdat
(Filmdaten) enthält.
Wenn wir einen Video-Player erstellen, der adaptive Bitrate unterstützt, müssen wir möglicherweise die Byte-Position der 10-Sekunden-Marke in einer 0,5-Mbit/s- und einer 1-Mbit/s-Datei kennen, um die Videoquelle zu diesem Zeitpunkt zwischen den beiden Dateien zu wechseln. Das Ermitteln dieser genauen Byteposition innerhalb eines massiven mdat
in jeder entsprechenden Datei ist nicht trivial.
Dieser Screenshot zeigt eine fragmentierte MP4, die mit MP4Box mit dem Profil onDemand
segmentiert wurde.
Sie werden die Felder sidx
und eine Reihe von moof
+ mdat
bemerken. Der sidx
ist der Segmentindex und speichert Metadaten der genauen Bytebereichsorte der moof
+ mdat
Segmente.
Grundsätzlich können Sie sidx
unabhängig laden (der Byte-Bereich wird in der zugehörigen Datei .mpd
Media Presentation Descriptor definiert) und dann auswählen, welche Segmente Sie anschließend laden und hinzufügen möchten die MSE SourceBuffer .
Wichtig ist, dass jedes Segment in einem regelmäßigen Intervall Ihrer Wahl erstellt wird (dh alle 5 Sekunden), sodass die Segmente zeitlich auf Dateien mit unterschiedlichen Bitraten ausgerichtet werden können, sodass die Bitrate während der Wiedergabe einfach angepasst werden kann.