Receptor de archivos MPEG-4
El receptor de archivos MPEG-4 crea archivos MP4. Para obtener más información sobre el formato de archivo MP4, consulte los siguientes documentos de estándares:
- ISO/IEC 14496-12: Tecnología de información - Codificación de objetos visuales de audio -- Parte 12: Formato de archivo multimedia Base ISO
- ISO/IEC 14496-14: Tecnología de la información - Codificación de objetos visuales de audio -- Parte 14: Formato de archivo MP4
Nota:
(Es posible que estos recursos no estén disponibles en algunos idiomas y países).
El receptor de archivos MPEG-4 no encapsula la funcionalidad de codificación.
Para crear el receptor de archivos MPEG-4, llame a la función MFCreateMPEG4MediaSink. El receptor de archivos MPEG-4 expone las siguientes interfaces a través de QueryInterface:
Cuadro de descripción de ejemplo
MP4 es un formato de contenedor extensible. La especificación MP4 no define una estructura fija para describir tipos de medios en un contenedor MP4. En su lugar, define una jerarquía de objetos que permite definir estructuras personalizadas para cada formato. La descripción del formato se almacena en el cuadro de descripción de ejemplo ("stsd") para cada secuencia. El cuadro de descripción de ejemplo contiene una lista de entradas de ejemplo. Para cada entrada de ejemplo, un código de 4 bytes, similar a un FOURCC, define la estructura de formato.
El receptor de archivos MPEG-4 puede generar el cuadro de descripción de ejemplo para los siguientes formatos:
- Vídeo H.264/AVC
- Audio AAC
- Audio MP3
Para otros formatos, el cuadro de descripción de ejemplo debe proporcionarse en el tipo de medio para cada secuencia. Para especificar el cuadro de descripción de ejemplo, establezca los siguientes atributos en el tipo de medio:
Atributo | Descripción |
---|---|
MF_MT_MPEG4_SAMPLE_DESCRIPTION | Contiene el cuadro de descripción de ejemplo como un blob binario. |
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY | Especifica cuál de las entradas de ejemplo del cuadro de descripción de ejemplo está activa actualmente. (Opcional). Actualmente, el valor debe ser cero. |
En algunos casos, no es posible generar un cuadro de descripción de ejemplo hasta que se hayan codificado todos los datos. Por ejemplo, es posible que la información como la velocidad media de bits no se conozca con antelación. En ese caso, puede actualizar el tipo de medio mediante la interfaz IMFMediaTypeHandler en el receptor de archivos MPEG-4. Esto debe hacerse antes de que finalice el receptor de medios.
Normalmente, un codificador ascendente crea el tipo de medio. El codificador puede generar un nuevo tipo de medio durante el streaming, a través de un cambio de formato dinámico. Para obtener más información, vea Cambios de formato dinámico.
Vídeo H.264/AVC
El receptor de archivos MPEG-4 admite la versión de la secuencia de AVC que tiene una secuencia de vídeo elemental, con conjunto de parámetros de secuencia (SPS) y NALU del conjunto de parámetros de imagen (PPS) contenidos en el cuadro de descripción de ejemplo, tal como se define en ISO/IEC 14496 parte 15 sección 5.1. El receptor de archivos no admite el método alternativo de almacenar NALU de SPS/PPS como una secuencia elemental de conjunto de parámetros independiente.
El receptor de archivos MPEG-4 puede generar el cuadro de descripción de ejemplo, pero debe proporcionarse con los SPS y PPS NALUs. Especifique esta información en el tipo de medio estableciendo el atributo MF_MT_MPEG_SEQUENCE_HEADER. El valor del atributo es el encabezado de secuencia H.264. El encabezado de secuencia debe constar de los NALU de SPS y PPS delimitados por códigos de inicio de 3 bytes o de 4 bytes.
Opcionalmente, al configurar el receptor de archivos, puede omitir el atributo MF_MT_MPEG_SEQUENCE_HEADER del tipo de medio inicial. En ese caso, debe actualizar el tipo de medio más adelante para incluir el encabezado de secuencia.
El receptor de archivos MPEG-4 tiene los siguientes requisitos para las secuencias de bits de AVC:
- La secuencia de bits debe cumplir la especificación de formato H.264 anexo B. En concreto, las NALUs deben delimitarse con códigos de inicio de 3 bytes o de 4 bytes.
- Los ejemplos multimedia deben contener todos los segmentos y NALU de datos que corresponden a una sola hora de presentación.
- Al escribir fotogramas B en un archivo MP4, debe establecer la marca de tiempo de presentación y la marca de tiempo de descodificación. Si la secuencia tiene un marco B y la marca de tiempo de descodificación no está establecida, el escritor mp4 verá el tiempo de fotograma hacia atrás y quitará el fotograma.
Audio AAC
Para audio AAC, el receptor de archivos MPEG-4 puede generar el cuadro de descripción de ejemplo para los siguientes subtipos:
- MFAudioFormat_AAC
- MEDIASUBTYPE_RAW_AAC1
Para obtener más información sobre estos subtipos, vea Tipos de medios AAC.
Para el subtipo MFAudioFormat_AAC, el tipo de medio contiene opcionalmente el atributo MF_MT_USER_DATA. Si está presente, este atributo es la parte de la estructura HEAACWAVEINFO que aparece después de la estructura WAVEFORMATEX (es decir, después del miembro wfx ). Esto va seguido de los datos AudioSpecificConfig(), tal y como se define en ISO/IEC 14496-3. Si el atributo MF_MT_USER_DATA no está presente, se supone que la secuencia es un perfil de AAC de baja complejidad (LC) y el receptor de archivos MPEG-4 genera un cuadro de descripción de ejemplo adecuado.
Para el subtipo MEDIASUBTYPE_RAW_AAC1, el receptor de medios debe contener el atributo MF_MT_USER_DATA y el atributo debe contener los datos AudioSpecificConfig().
El receptor de archivos MPEG-4 crea la variante MPEG-4 del cuadro de descripción de ejemplo de AAC, utilizando una entrada de ejemplo "mp4a" con objectTypeIndication = 0x40. No usa tipos de objetos MPEG-2.
MP3 Audio
En el caso del audio MP3, el receptor de archivos MPEG-4 puede generar el cuadro de descripción de ejemplo a partir de un tipo de medio de audio estándar. (Vea tipos de medios de audio).
El receptor de archivos MPEG-4 crea la variante MPEG-4 del cuadro de descripción de ejemplo MP3, utilizando una entrada de ejemplo "mp4a" con objectTypeIndication = 0x6b para audio MPEG-1.
Limitaciones
- El tamaño máximo del archivo creado es de 4 GB. En Windows 8, se admiten archivos grandes de 4 GBGB.
- El receptor de archivos MPEG-4 no admite listas de edición (cuadros "edts" y "elst").
Actualizaciones de Windows 8 para el origen y el receptor MPEG-4
Compatibilidad de lectura y escritura de rotación agregada en el origen y el receptor MPEG-4 de Windows 8. Esto no se admite en el origen y el receptor MPEG-4 de Windows 7.
El origen MPEG-4 lee el ángulo de rotación de una pista de vídeo activa como la suma del ángulo de rotación de ‘mvhd’ y de ‘tkhd’.
El receptor MPEG-4 de Microsoft escribe el ángulo de rotación en ‘tkhd’, pero escribe una matriz de 0 grados (identidad) en ‘mvhd’. Nota: El receptor MPEG-4 de Microsoft solo admite una pista de vídeo única.
IPropertyStore lee el ángulo de rotación solo para la primera pista de vídeo como la suma del ángulo de rotación de ‘mvhd’ y de ‘tkhd’.
IPropertyStore escribe el ángulo de rotación solo para la primera pista de vídeo en ‘tkhd’ después de ajustar el ángulo de rotación según el ángulo de rotación en ‘mvhd’, si existe.
Los fragmentos de película ('moof') se admiten en el origen y el receptor MPEG-4 de Windows 8, pero 'mfra' no lo es.
H.263 se admite en el origen MPEG-4 de Windows 8.
El origen MPEG-4 ahora asigna dos fourcc de 'h263' y 's263' en formato de archivo MPEG-4 al tipo de medio de MFVideoFormat_H263.
Se ha agregado más compatibilidad de fourcc para MJPEG en el origen MPEG-4 de Windows 8.
El origen MPEG-4 asigna la falta de dmb1’ al tipo de ‘medio de MFVideoFormat_MJPG.
Compatibilidad con metadatos de Furigana agregada en el origen MPEG-4 de Windows 8.
El origen MPEG-4 lee los metadatos de Furigana de ’soal’, ‘soar’, ‘soaa’, ‘sonm’ y ‘soco’. IPropertyStore lee los metadatos de Furigana a través del conjunto de PKEYs correspondientes.
En la tabla siguiente se muestra la asignación entre el nombre canónico del shell, la clave de propiedad y el identificador de cuadro o etiqueta en formato de archivo MPEG-4.
Campo Clave de propiedad Identificador de etiqueta/cuadro 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 Compatibilidad con átomos estéreo 3D agregados en el origen MPEG-4 de Windows 8.
Compatibilidad con AC3 y DD+ agregada en el origen y el receptor MPEG-4 de Windows 8.
Los archivos de más de 4 GB se admiten en el receptor MPEG-4 de Windows 8 para MP4 no fragmentado.
La limpieza se ha optimizado en el origen MPEG-4 de Windows 8.
Para reducir la latencia, la información de los dos fotogramas clave más cercanos para una posición de búsqueda determinada se expone a través de IMFSeekInfo::GetNearestKeyFrames. Dado que el fotograma clave no tiene fotogramas dependientes, presenta el marco después de descodificar solo un fotograma. Use IMFGetService::GetService para obtener esta interfaz a través del origen de medios, la canalización o la aplicación.
Establezca tasa en cero en el origen MPEG-4. Cuando la canalización está en modo de limpieza, la velocidad es cero.
SPS y PPS se pueden almacenar en datos de ejemplo en el receptor MPEG-4.
MF_MPEG4SINK_SPSPPS_PASSTHROUGH atributo en el receptor MPEG-4 se define para permitir que SPS y PPS se guarden junto con muestras de entrada (datos de vídeo H.264). Los clips mp4 producidos son reproducido por el origen MPEG-4 de Windows 7 y otros.
SPS y PPS se pueden extraer de muestras de entrada en el receptor MPEG-4.
Cuando SPS y PPS no se establecen a través de MF_MT_MPEG_SEQUENCE_HEADER en el tipo de medio de entrada del receptor MPEG-4, MPEG-4 receptor intentará extraer SPS y PPS de muestras de entrada. MPEG-4 sink omite las muestras de entrada hasta que encuentre el primer SPS y PPS, ya que todas las muestras de entrada sin SPS y PPS no pueden descodificarse.
La información 3D del registro de configuración de AVC es compatible con MP4 no fragmentado.
La longitud NALU se expone para las muestras comprimidas H.264 para optimizar la descodificación DXVA de H.264 VLD.
El origen MPEG-4 establece MF_NALU_LENGTH_SET en el tipo de medio de salida de MFVideoFormat_H264 o MFVideoFormat_h264. Establece el blob de MF_NALU_LENGTH_INFORMATION en cada muestra de salida, con una longitud NALU de cuatro bytes para diferentes NALU en una muestra comprimida.
Compatibilidad agregada para audio MPEG2 ADTS en el origen MP4.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo compatible |
Windows 7 [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2008 R2 [solo aplicaciones de escritorio] |
Consulte también