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.

Segmento de inicialização: ftyp e moov com descrições de faixas e amostras
Configuração do decodificador e amostras codificadas de uma variante
Um segmento de mídia só pode ser decodificado junto com o segmento de inicialização que o manifesto ou a playlist indica para ele. Mesmo assim, os quadros de vídeo anteriores ao primeiro ponto de acesso aleatório do segmento podem depender de segmentos anteriores.

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

  1. Um segmento de mídia é composto de um ou mais fragmentos de filme: uma caixa moof que descreve as amostras, seguida da caixa ou das caixas mdat que contêm seus bytes codificados, opcionalmente precedidas por uma caixa de tipo de segmento styp. Ele não contém uma caixa moov, portanto as descrições de faixas e amostras de que um decodificador precisa não estão no arquivo.
  2. O segmento de inicialização fornece o que falta aos segmentos de mídia: uma caixa ftyp seguida de uma caixa moov com descrições de faixas e amostras, sem amostras. No HLS, todo segmento de mídia MP4 fragmentado deve ter uma tag EXT-X-MAP aplicá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óxima EXT-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.
  3. A extensão não informa a qual dos dois tipos um arquivo pertence. .m4s está registrada na IANA como a extensão de arquivo do tipo de mídia video/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 .m4s tanto 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 como init.mp4 por padrão. Identifique a função de um arquivo pelo manifesto ou por suas caixas de nível superior.
  4. Um nome .m4s nã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 caixa tfdt em 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

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente