web-dev-qa-db-fra.com

Qu'est-ce que c'est mp4 fragmenté (fMP4)? En quoi est-il différent du mp4 normal?

Extension de source multimédia ( MSE ) requiert un mp4 fragmenté pour la lecture dans le navigateur.

45
Aditya Gupta

Un MP4 fragmenté contient une série de segments qui peuvent être demandés individuellement si votre serveur prend en charge les demandes de plage d'octets.

Boîtes aka Atomes

Tous les fichiers MP4 utilisent un format orienté objet qui contient cases aka atomes .

Vous pouvez afficher une représentation des cases de votre MP4 à l'aide d'un outil en ligne tel que MP4 Parser ou, si vous utilisez Windows, MP4 Explorer . Comparons un MP4 normal avec un autre fragmenté:

MP4 non fragmenté

Cette capture d'écran (de MP4 Parser ) montre un MP4 qui n'a pas été fragmenté et qui possède tout simplement une boîte massive mdat (données de film).

Representation of boxes within a normal, non fragmented MP4, generated using MP4 Parser

Si nous construisions un lecteur vidéo prenant en charge le débit adaptatif, nous aurions peut-être besoin de connaître la position d'octet de la marque de 10 secondes dans un fichier de 0,5 Mbit/s et d'un fichier de 1 Mbit/s afin de permuter la source vidéo entre les deux fichiers à ce moment. Déterminer cette position d'octet exacte dans un mdat massif dans chaque fichier respectif n'est pas trivial.

MP4 fragmenté

Cette capture d'écran montre un MP4 fragmenté qui a été segmenté à l'aide de MP4Box avec le profil onDemand.

Representation of boxes within a fragmented MP4, generated using MP4 Parser

Vous remarquerez les sidx et les séries de moof + mdat . sidx est l'index de segment et stocke les métadonnées des emplacements précis de la plage d'octets des segments moof + mdat.

Pour l'essentiel, vous pouvez charger indépendamment le sidx (sa plage d'octets sera définie dans le .mpd Media Presentation Descriptor), puis choisissez les segments que vous souhaitez charger par la suite et ajoutez-les au MSE SourceBuffer .

Il est important de noter que chaque segment est créé à un intervalle régulier de votre choix (c'est-à-dire toutes les 5 secondes) afin que les segments puissent être alignés temporellement sur des fichiers de débits différents, ce qui facilite l'adaptation du débit pendant la lecture.

102
Philip Bulley