O que é o formato M4S?
M4S é uma extensão comum para segmentos de mídia MP4 fragmentados usados pelo MPEG-DASH e pelo HLS moderno. Um segmento normalmente depende de um segmento de inicialização para a configuração das faixas e do decodificador.
Como o formato M4S funciona
Os segmentos de mídia M4S são recursos curtos de MP4 fragmentado gerados após a divisão da saída de um codificador para streaming adaptativo. Seus metadados de fragmento de filme mapeiam a temporização e a localização das amostras, enquanto as caixas de dados de mídia associadas contêm as amostras codificadas. As definições das faixas e a configuração do decodificador normalmente ficam em um recurso de inicialização referenciado pelo manifesto, que alguns empacotadores também nomeiam com .m4s. Um reprodutor combina essa configuração com fragmentos sucessivos enquanto armazena dados em buffer e alterna entre representações.
Informações essenciais
- Um segmento de mídia é composto de um ou mais fragmentos de filme: uma caixa
moofque descreve as amostras, seguida da caixa ou das caixasmdatque contêm seus bytes codificados, opcionalmente precedidas por uma caixa de tipo de segmentostyp. Ele não contém uma caixamoov, portanto as descrições de faixas e amostras de que um decodificador precisa não estão no arquivo. - O segmento de inicialização fornece o que falta aos segmentos de mídia: uma caixa
ftypseguida de uma caixamoovcom descrições de faixas e amostras, sem amostras. No HLS, todo segmento de mídia MP4 fragmentado deve ter uma tagEXT-X-MAPaplicável, cuja URI identifica o recurso que contém esses dados de inicialização; uma tag se aplica a todos os segmentos seguintes até a próximaEXT-X-MAP. Nas Media Source Extensions, um segmento de mídia sem uma caixa de tipo de segmento deve estar em conformidade com as marcas declaradas no segmento de inicialização. - A extensão não informa a qual dos dois tipos um arquivo pertence.
.m4sestá registrada na IANA como a extensão de arquivo do tipo de mídiavideo/iso.segment, mas os nomes dos arquivos são uma escolha do empacotador: quando o multiplexador DASH do FFmpeg grava segmentos MP4 como arquivos separados, seus nomes padrão usam a extensão.m4stanto para os segmentos de inicialização quanto para os de mídia (para fluxos VP8, VP9, Vorbis ou Opus, o padrão são segmentos WebM chamados.webm), enquanto seu multiplexador HLS nomeia o arquivo de inicialização MP4 fragmentado comoinit.mp4por padrão. Identifique a função de um arquivo pelo manifesto ou por suas caixas de nível superior. - Um nome
.m4snão comprova conformidade com CMAF. CMAF é um perfil mais restrito de MP4 fragmentado, e o FFmpeg trata as saídas compatíveis com CMAF e com DASH como modos separados do multiplexador. Os requisitos efetivos de cada protocolo de destino são específicos: o HLS, por exemplo, exige uma caixatfdtem cada fragmento de faixa e endereçamento relativo ao fragmento de filme, e observa que um segmento CMAF atende a esses requisitos.
Quando o formato M4S é importante
M4S é importante ao empacotar, hospedar, mover ou depurar fluxos segmentados. Um segmento de mídia não é um arquivo de vídeo independente: um analisador precisa dos dados de inicialização correspondentes antes de conseguir ler o segmento, e um reprodutor encontra ambos pelo manifesto ou pela playlist. Ao mover, limpar ou armazenar um fluxo em cache, mantenha válidas as referências do manifesto e disponíveis todos os segmentos de inicialização e de mídia que ele indica. Um único segmento de mídia .m4s isolado não é algo que se deva fornecer a um conversor genérico.
Como a Transloadit ajuda com o formato M4S
O Robot /video/adaptive da Transloadit documenta um valor cmaf para seu parâmetro technique que produz manifestos MPEG-DASH e HLS com referências aos mesmos segmentos MP4 fragmentados.
A documentação do Robot fala em segmentos e segmentos de inicialização e não informa suas extensões de arquivo, portanto não desenvolva ferramentas com base na suposição de um nome .m4s. Ela informa que cada arquivo de resultado contém uma propriedade de metadados relative_path para armazenar os arquivos onde os manifestos esperam encontrá-los.
Explore os formatos de arquivo e os recursos de compressão da Transloadit
Fontes
- Registro de tipo de mídia na IANA: video/iso.segment (extensão de arquivo m4s; segmentos ISO/IEC 14496-12)
- W3C: formato de fluxo de bytes ISO BMFF (segmentos de inicialização e segmentos de mídia)
- RFC 8216: HTTP Live Streaming, seção 3.1 (formatos de segmento de mídia compatíveis), seção 3.3 (MPEG-4 fragmentado) e seção 4.3.2.5 (EXT-X-MAP)
- Documentação de formatos do FFmpeg: multiplexador dash (init_seg_name, media_seg_name), multiplexador hls (hls_segment_type, hls_fmp4_init_filename) e movflags (cmaf, dash)
- Código-fonte do FFmpeg 8.0: libavformat/dashenc.c (seleção da extensão dos arquivos de segmento)
- Apple: sobre o Common Media Application Format com HTTP Live Streaming (HLS)