Coletor de arquivos MPEG-4

O coletor de arquivos MPEG-4 cria arquivos MP4. Para obter mais informações sobre o formato de arquivo MP4, consulte os seguintes documentos de padrões:

  • ISO/IEC 14496-12: Tecnologia da informação -- Codificação de objetos audiovisuais -- Parte 12: Formato de arquivo de mídia de base ISO
  • ISO/IEC 14496-14: Tecnologia da informação -- Codificação de objetos audiovisuais -- Parte 14: Formato de arquivo MP4

Observação

(Esses recursos podem não estar disponíveis em alguns idiomas e países.)

 

O coletor de arquivos MPEG-4 não encapsula a funcionalidade de codificação.

Para criar o coletor de arquivos MPEG-4, chame a função MFCreateMPEG4MediaSink. O coletor de arquivos MPEG-4 expõe as seguintes interfaces por meio de QueryInterface:

Caixa de descrição da amostra

O MP4 é um formato de contêiner extensível. A especificação MP4 não define uma estrutura fixa para descrever tipos de mídia em um contêiner MP4. Em vez disso, ela define uma hierarquia de objetos que permite que estruturas personalizadas sejam definidas para cada formato. A descrição do formato é armazenada na caixa de descrição da amostra ('stsd') para cada fluxo. A caixa de descrição da amostra contém uma lista de entradas de amostra. Para cada entrada de amostra, um código de quatro bytes, semelhante a um código de quatro caracteres, define a estrutura do formato.

O Coletor de arquivos MPEG-4 pode gerar a caixa de descrição da amostra para os seguintes formatos:

  • Vídeo H.264/AVC
  • Áudio AAC
  • Áudio MP3

Para outros formatos, a caixa de descrição da amostra deve ser fornecida no tipo de mídia para cada fluxo. Para especificar a caixa de descrição da amostra, defina os seguintes atributos no tipo de mídia:

Atributo Descrição
MF_MT_MPEG4_SAMPLE_DESCRIPTION Contém a caixa de descrição da amostra como um blob binário.
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY Especifica quais das entradas de amostra na caixa de descrição da amostra estão ativas no momento. (Opcional).
Nesse momento, o valor deve ser zero.

 

Em alguns casos, não é possível gerar uma caixa de descrição da amostra até que todos os dados sejam codificados. Por exemplo, informações como a taxa média de bits podem não ser conhecidas antecipadamente. Nesse caso, você pode atualizar o tipo de mídia usando a interface IMFMediaTypeHandler no coletor de arquivos MPEG-4. Isso deve ser feito antes que o coletor de mídia seja finalizado.

Normalmente, o tipo de mídia é criado por um codificador anterior. O codificador pode gerar um novo tipo de mídia durante a transmissão, por meio de uma alteração dinâmica de formato. Para obter mais informações, consulte Alterações dinâmicas de formato.

Vídeo H.264/AVC

O coletor de arquivos MPEG-4 oferece suporte à versão de fluxo AVC que possui um fluxo de vídeo elementar, com NALUs de conjunto de parâmetros de sequência (SPS) e conjunto de parâmetros de imagem (PPS) contidos na caixa de descrição da amostra, conforme definido na seção 5.1 da ISO/IEC 14496 parte 15. O coletor de arquivos não dá suporte ao método alternativo de armazenamento de NALUs de SPS/PPS como um fluxo elementar definido por parâmetros separado.

O coletor de arquivos MPEG-4 pode gerar a caixa de descrição da amostra, mas deve ser fornecido com as NALUs de SPS e PPS. Especifique essas informações no tipo de mídia definindo o atributo MF_MT_MPEG_SEQUENCE_HEADER. O valor do atributo é o cabeçalho de sequência do H.264. O cabeçalho de sequência deve consistir das NALUs de SPS e PPS delimitadas por códigos de início de três ou quatro bytes.

Opcionalmente, ao configurar o coletor de arquivos, você pode omitir o atributo MF_MT_MPEG_SEQUENCE_HEADER do tipo de mídia inicial. Nesse caso, você deve atualizar o tipo de mídia mais tarde para incluir o cabeçalho de sequência.

O coletor de arquivos MPEG-4 tem os seguintes requisitos para os fluxos de bits AVC:

  • O fluxo de bits deve estar em conformidade com a especificação de formato do Anexo B do H.264. Em particular, as NALUs devem ser delimitadas com códigos de início de três ou quatro bytes.
  • As amostras de mídia devem conter todas as NALUs de fatia e de dados que correspondam a um único momento de apresentação.
  • Ao gravar quadros B em um arquivo MP4, você deve definir o carimbo de data/hora da apresentação e da decodificação. Se o fluxo de vídeo contém um quadro B e o carimbo de data e hora de decodificação não está definido, o gravador MP4 identificará que o tempo do quadro está retrocedendo e descartará o quadro.

Áudio AAC

Para áudio AAC, o coletor de arquivos MPEG-4 pode gerar a caixa de descrição da amostra para os seguintes subtipos:

  • MFAudioFormat_AAC
  • MEDIASUBTYPE_RAW_AAC1

Para obter mais informações sobre esses subtipos, consulte Tipos de Mídia AAC.

Para o subtipo MFAudioFormat_AAC, o tipo de mídia contém opcionalmente o atributo MF_MT_USER_DATA. Se presente, ele atribuirá a parte da estrutura HEAACWAVEINFO que aparece após a estrutura WAVEFORMATEX(ou seja, após o membro wfx). Isso será seguido pelos dados AudioSpecificConfig(), conforme definido pela ISO/IEC 14496-3. Se o atributo MF_MT_USER_DATA não estiver presente, assume-se que o fluxo é do perfil de LC (Baixa Complexidade) do AAC e o coletor de arquivos MPEG-4 gerará uma caixa de descrição da amostra adequada.

Para o subtipo MEDIASUBTYPE_RAW_AAC1, o coletor de mídia deve conter o atributo MF_MT_USER_DATA e o atributo deve conter os dados AudioSpecificConfig().

O coletor de arquivos MPEG-4 cria a variante MPEG-4 da caixa de descrição da amostra AAC, usando uma entrada de amostra 'mp4a' com objectTypeIndication = 0x40. Ele não usa tipos de objeto MPEG-2.

Áudio MP3

Para áudio MP3, o coletor de arquivos MPEG-4 pode gerar a caixa de descrição da amostra de um tipo de mídia de áudio padrão. (Consulte Tipos de mídia de áudio.)

O coletor de arquivos MPEG-4 cria a variante MPEG-4 da caixa de descrição da amostra MP3, usando uma entrada de amostra 'mp4a' com objectTypeIndication = 0x6b para áudio MPEG-1.

Limitações

  • O tamanho máximo do arquivo criado é de 4 GB. No Windows 8, há suporte para arquivos com mais de 4 GB.
  • O coletor de arquivos MPEG-4 não dá suporte a listas de edição (caixas 'edts' e 'elst').

Atualizações do Windows 8 para origem e coletor MPEG-4

  • Suporte de leitura e gravação de rotação adicionado no coletor e origem MPEG-4 do Windows 8. Não há suporte para isso na origem e no coletor MPEG-4 do Windows 7.

    A origem MPEG-4 lê o ângulo de rotação de uma faixa de vídeo ativa como a soma do ângulo de rotação de 'mvhd' e de 'tkhd'.

    O coletor MPEG-4 da Microsoft grava o ângulo de rotação em 'tkhd', mas grava uma matriz de 0 graus (identidade) em 'mvhd'. Observe que o coletor MPEG-4 da Microsoft dá suporte apenas a uma única faixa de vídeo.

    O IPropertyStore lê o ângulo de rotação apenas para a primeira faixa de vídeo como a soma do ângulo de rotação de 'mvhd' e de 'tkhd'.

    O IPropertyStore grava o ângulo de rotação apenas para a primeira faixa de vídeo em 'tkhd' após o ângulo de rotação ser ajustado de acordo com o ângulo de rotação em 'mvhd', se existir.

  • Os fragmentos de filme ('moof') têm suporte na origem e no coletor MPEG-4 do Windows 8, mas 'mfra' não tem.

  • O H.263 tem suporte na origem MPEG-4 do Windows 8.

    A origem MPEG-4 agora mapeia dois códigos de quatro caracteres de 'h263' e 's263' no formato de arquivo MPEG-4 para o tipo de mídia de MFVideoFormat_H263.

  • Mais suporte a códigos de quatro caracteres adicionado para MJPEG na origem MPEG-4 do Windows 8.

    A origem MPEG-4 mapeia o código de quatro caracteres de 'dmb1' para o tipo de mídia de MFVideoFormat_MJPG.

  • Suporte a metadados Furigana adicionados na origem MPEG-4 do Windows 8.

    A fonte MPEG-4 lê metadados Furigana de 'soal', 'soar', 'soaa', 'sonm' e 'soco'. O IPropertyStore lê metadados Furigana por meio do conjunto de PKEYs correspondentes.

    A tabela a seguir mostra o mapeamento entre o nome canônico do shell, a chave de propriedade e a ID da caixa/marca no formato de arquivo MPEG-4.

    Campo Chave de propriedade ID da marca/caixa
    System.Music.AlbumTitleSortOverride PKEY_Music_AlbumTitleSortOverride soal
    System.Music.ArtistSortOverride PKEY_Music_ArtistSortOverride soar
    System.Music.AlbumArtistSortOverride PKEY_Music_AlbumArtistSortOverride soaa
    System.TitleSortOverride PKEY _TitleSortOverride sonm
    System.Music.ComposerSortOverride PKEY_Music_ComposerSortOverride soco

     

  • Suporte a atom 3D estéreo adicionado na origem MPEG-4 do Windows 8.

  • Suporte a AC3 e DD+ adicionados na origem e no coletor MPEG-4 do Windows 8.

  • Há suporte para arquivos maiores que 4 GB no coletor MPEG-4 do Windows 8 para MP4 não fragmentado.

  • O recurso de scrubbing foi otimizado na origem MPEG-4 do Windows 8.

    Para reduzir a latência, as informações dos dois quadros chave mais próximos para uma posição de busca específica são expostas por meio do IMFSeekInfo::GetNearestKeyFrames. Como o quadro chave não tem quadros dependentes, ele apresenta o quadro após a decodificação de apenas um quadro. Use IMFGetService::GetService para obter essa interface por meio da fonte de mídia, do pipeline ou do aplicativo.

    Defina a taxa como zero na origem MPEG-4. Quando o pipeline estiver no modo scrubbing, a taxa será zero.

  • O SPS e o PPS podem ser armazenados em dados de amostra no coletor MPEG-4.

    O atributo MF_MPEG4SINK_SPSPPS_PASSTHROUGH no coletor MPEG-4 é definido para permitir que o SPS e o PPS sejam salvos junto com as amostras de entrada (dados de vídeo H.264). Os clipes mp4 produzidos são reproduzidos pela origem MPEG-4 do Windows 7 e outros.

  • O SPS e o PPS podem ser extraídos de amostras de entrada no coletor MPEG-4.

    Quando o SPS e o PPS não são definidos por meio do MF_MT_MPEG_SEQUENCE_HEADER no tipo de mídia de entrada do coletor MPEG-4, o coletor MPEG-4 tentará extrair o SPS e o PPS das amostras de entrada. O coletor MPEG-4 ignora as amostras de entrada até encontrar o primeiro SPS e PPS, pois todas as amostras de entrada sem SPS e PPS não podem ser decodificadas.

  • Há suporte para informações 3D no registro de configuração do AVC para MP4 não fragmentado.

  • O comprimento da NALU é exposto para amostras compactadas em H.264 para otimizar a decodificação de H.264 usando VLD DXVA.

    Conjuntos de origem MPEG-4 MF_NALU_LENGTH_SET no tipo de mídia de saída de MFVideoFormat_H264 ou MFVideoFormat_h264. Ele define o blob de MF_NALU_LENGTH_INFORMATION em cada amostra de saída, com comprimento da NALU de quatro bytes para diferentes NALUs em uma amostra compactada.

  • Suporte adicionado para áudio ADTS do MPEG2 na fonte MP4.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2008 R2 [somente aplicativos da área de trabalho]

Confira também

Fontes e coletores de mídia

Coletores de mídia

Suporte a MPEG-4 no Media Foundation

Formatos de mídia com suporte no Media Foundation