Qu’est-ce que le format M4S ?
M4S est une extension courante pour les segments multimédias MP4 fragmentés utilisés par MPEG-DASH et les versions modernes de HLS. Un segment dépend généralement d’un segment d’initialisation pour la configuration des pistes et du décodeur.
Fonctionnement du format M4S
Les segments multimédias M4S sont de courtes ressources MP4 fragmentées générées après le découpage de la sortie d’un encodeur pour la diffusion adaptative. Leurs métadonnées de fragments de film décrivent la chronologie et l’emplacement des échantillons, tandis que les boîtes de données multimédias associées contiennent les échantillons encodés. Les définitions des pistes et la configuration du décodeur résident normalement dans une ressource d’initialisation référencée par le manifeste, que certains outils d’empaquetage nomment également avec .m4s. Un lecteur combine cette configuration avec les fragments successifs lors de la mise en mémoire tampon et du passage d’une représentation à l’autre.
Points clés
- Un segment multimédia contient un ou plusieurs fragments de film : une boîte
moofqui décrit les échantillons, suivie de la boîte ou des boîtesmdatqui contiennent leurs octets encodés, le tout éventuellement précédé d’une boîte de type de segmentstyp. Il ne contient aucune boîtemoov; les descriptions des pistes et des échantillons nécessaires à un décodeur ne sont donc pas dans le fichier. - Le segment d’initialisation fournit ce qui manque aux segments multimédias : une boîte
ftypsuivie d’une boîtemoovcontenant les descriptions des pistes et des échantillons, sans échantillons. En HLS, chaque segment multimédia MP4 fragmenté doit être associé à une baliseEXT-X-MAPapplicable, dont l’URI identifie la ressource contenant ces données d’initialisation ; une balise s’applique à tous les segments suivants jusqu’à la prochaine baliseEXT-X-MAP. Dans Media Source Extensions, un segment multimédia dépourvu de boîte de type de segment doit être conforme aux marques de compatibilité déclarées dans le segment d’initialisation. - L’extension ne permet pas de savoir auquel des deux types un fichier appartient.
.m4sest enregistré auprès de l’IANA comme extension de fichier du type de médiavideo/iso.segment, mais les noms de fichiers relèvent du choix de l’outil d’empaquetage : lorsque le multiplexeur DASH de FFmpeg écrit des segments MP4 dans des fichiers distincts, ses noms par défaut attribuent l’extension.m4saux segments d’initialisation comme aux segments multimédias (pour les flux VP8, VP9, Vorbis ou Opus, il utilise par défaut des segments WebM nommés.webm), tandis que son multiplexeur HLS nomme par défaut le fichier d’initialisation MP4 fragmentéinit.mp4. Identifiez le rôle d’un fichier à partir du manifeste ou de ses boîtes de premier niveau. - Un nom
.m4sne prouve pas la conformité à CMAF. CMAF est un profil plus contraint de MP4 fragmenté, et FFmpeg traite les sorties compatibles CMAF et compatibles DASH comme des modes de multiplexage distincts. Les exigences réelles du protocole cible sont précises : HLS, par exemple, exige une boîtetfdtdans chaque fragment de piste et un adressage relatif au fragment de film, et indique qu’un segment CMAF satisfait à ces exigences.
Quand le format M4S est utile
M4S est utile lorsque vous conditionnez, hébergez, déplacez ou déboguez des flux segmentés. Un segment multimédia n’est pas un fichier vidéo autonome : un analyseur a besoin des données d’initialisation correspondantes pour pouvoir lire le segment, et un lecteur trouve les deux à l’aide du manifeste ou de la liste de lecture. Lorsque vous déplacez, nettoyez ou mettez en cache un flux, veillez à ce que les références du manifeste restent valides et que tous les segments d’initialisation et multimédias qu’il désigne restent disponibles. Un segment multimédia .m4s isolé ne doit pas être fourni tel quel à un convertisseur générique.
Comment Transloadit vous aide avec le format M4S
La documentation du Robot /video/adaptive de Transloadit présente la valeur cmaf du paramètre technique, qui produit des manifestes MPEG-DASH et HLS faisant référence aux mêmes segments MP4 fragmentés.
La documentation du Robot parle de segments et de segments d’initialisation sans préciser leurs extensions de fichier ; ne fondez donc pas vos outils sur un nom .m4s supposé. Elle indique bien que chaque fichier de résultat possède une propriété de métadonnées relative_path permettant de stocker les fichiers aux emplacements attendus par les manifestes.
Explorer les possibilités de Transloadit en matière de formats de fichiers et de compression
Références
- Enregistrement du type de média auprès de l’IANA : video/iso.segment (extension de fichier m4s ; segments ISO/IEC 14496-12)
- W3C : format de flux d’octets ISO BMFF (segments d’initialisation et segments multimédias)
- RFC 8216 : HTTP Live Streaming, section 3.1 (formats de segments multimédias pris en charge), section 3.3 (MPEG-4 fragmenté) et section 4.3.2.5 (EXT-X-MAP)
- Documentation des formats FFmpeg : multiplexeur dash (init_seg_name, media_seg_name), multiplexeur hls (hls_segment_type, hls_fmp4_init_filename) et movflags (cmaf, dash)
- Code source de FFmpeg 8.0 : libavformat/dashenc.c (sélection de l’extension des fichiers de segments)
- Apple : à propos du Common Media Application Format avec HTTP Live Streaming (HLS)