MPEG-4-Dateisenke
Die MPEG-4-Dateisenke erstellt MP4-Dateien. Weitere Informationen zum MP4-Dateiformat finden Sie in den folgenden Standarddokumenten:
- ISO/IEC 14496-12: Information technology – Coding of audio-visual objects – Part 12: ISO Base Media File Format
- ISO/IEC 14496-14: Information technology – Coding of audio-visual objects – Part 14: MP4 File Format
Hinweis
(Diese Ressourcen sind in einigen Sprachen und Ländern möglicherweise nicht verfügbar.)
Die MPEG-4-Dateisenke kapselt keine Codierungsfunktionen.
Rufen Sie zum Erstellen der MPEG-4-Dateisenke die Funktion MFCreateMPEG4MediaSink auf. Die MPEG-4-Dateisenke macht die folgenden Schnittstellen über QueryInterface verfügbar:
Beispielbeschreibungsfeld
MP4 ist ein erweiterbares Containerformat. Die MP4-Spezifikation definiert keine feste Struktur zum Beschreiben von Medientypen in einem MP4-Container. Stattdessen wird eine Objekthierarchie definiert, mit der benutzerdefinierte Strukturen für jedes Format definiert werden können. Die Formatbeschreibung wird im Beispielbeschreibungsfeld („stsd“) für jeden Stream gespeichert. Das Beispielbeschreibungsfeld enthält eine Liste mit Beispieleinträgen. Für jeden Beispieleintrag definiert ein 4-Byte-Code, der FOURCC ähnelt, die Formatstruktur.
Die MPEG-4-Dateisenke kann das Beispielbeschreibungsfeld für die folgenden Formate generieren:
- H.264-/AVC-Video
- AAC-Audio
- MP3 Audio
Für andere Formate muss das Beispielbeschreibungsfeld im Medientyp für jeden Stream bereitgestellt werden. Um das Beispielbeschreibungsfeld anzugeben, legen Sie die folgenden Attribute für den Medientyp fest:
attribute | BESCHREIBUNG |
---|---|
MF_MT_MPEG4_SAMPLE_DESCRIPTION | Enthält das Beispielbeschreibungsfeld als binäres Blob |
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY | Gibt an, welche der Beispieleinträge im Beispielbeschreibungsfeld derzeit aktiv ist. (Optional.) Derzeit muss der Wert null sein. |
In einigen Fällen ist es nicht möglich, ein Beispielbeschreibungsfeld zu generieren, bis alle Daten codiert wurden. Beispielsweise werden Informationen wie die durchschnittliche Bitrate möglicherweise nicht rechtzeitig bekannt. In diesem Fall können Sie den Medientyp mithilfe der Schnittstelle IMFMediaTypeHandler in der MPEG-4-Dateisenke aktualisieren. Dieser Vorgang muss erfolgen, bevor die Mediensenke fertiggestellt wird.
In der Regel wird der Medientyp von einem Upstreamencoder erstellt. Der Encoder kann während des Streamings einen neuen Medientyp durch eine dynamische Formatänderung generieren. Weitere Informationen finden Sie unter Dynamische Formatänderungen.
H.264-/AVC-Video
Die MPEG-4-Dateisenke unterstützt die Version des AVC-Streams mit einem elementaren Videostream, bei dem die NALUs für den Sequenzparametersatz (SPS) und den Bildparametersatz (Picture Parameter Set, PPS) im Beispielbeschreibungsfeld enthalten sind. Dies wird in ISO/IEC 14496 (Teil 15, Abschnitt 5.1) beschrieben. Die Dateisenke unterstützt nicht die alternative Methode zum Speichern von SPS-/PPS-NALUs als separater Parametersatz-Elementardatenstrom.
Die MPEG-4-Dateisenke kann das Beispielbeschreibungsfeld generieren, muss jedoch mit SPS- und PPS-NALUs bereitgestellt werden. Geben Sie diese Informationen im Medientyp an, indem Sie das Attribut MF_MT_MPEG_SEQUENCE_HEADER festlegen. Der Wert des Attributs ist der H.264-Sequenzheader. Der Sequenzheader muss aus den SPS- und PPS-NALUs bestehen, die durch 3-Byte- oder 4-Byte-Startcodes getrennt sind.
Optional können Sie beim Konfigurieren der Dateisenke das Attribut MF_MT_MPEG_SEQUENCE_HEADER aus dem anfänglichen Medientyp weglassen. In diesem Fall müssen Sie den Medientyp später aktualisieren, um den Sequenzheader einzuschließen.
Die MPEG-4-Dateisenke hat die folgenden Anforderungen für AVC-Bitstreams:
- Der Bitstream muss der Formatspezifikation für H.264 aus Anhang B entsprechen. Insbesondere müssen NALUs durch 3-Byte- oder 4-Byte-Startcodes getrennt werden.
- Medienbeispiele müssen alle Slice- und Daten-NALUs enthalten, die einer einzelnen Präsentationszeit entsprechen.
- Beim Schreiben von B-Frames in eine MP4-Datei müssen Sie sowohl den Präsentationszeitstempel als auch den Decodierungszeitstempel festlegen. Wenn der Stream über einen B-Frame verfügt und der Decodierungszeitstempel nicht festgelegt ist, betrachtet der MP4-Writer die Framezeit als rückwärts laufend und löscht den Frame.
AAC Audio
Für AAC-Audio kann die MPEG-4-Dateisenke das Beispielbeschreibungsfeld für die folgenden Untertypen generieren:
- MFAudioFormat_AAC
- MEDIASUBTYPE_RAW_AAC1
Weitere Informationen zu diesen Untertypen finden Sie unter AAC-Medientypen.
Für den Untertyp MFAudioFormat_AAC enthält der Medientyp optional das Attribut MF_MT_USER_DATA. Wenn vorhanden, ist dieses Attribut der Teil der HEAACWAVEINFO-Struktur, die nach der WAVEFORMATEX-Struktur angezeigt wird (d. h. nach dem wfx-Member). Darauf folgen die AudioSpecificConfig()-Daten, wie durch ISO/IEC 14496-3 definiert. Wenn das Attribut MF_MT_USER_DATA nicht vorhanden ist, wird der Stream als AAC-Profil „Low Complexity“ (LC) angenommen, und die MPEG-4-Dateisenke generiert ein geeignetes Beispielbeschreibungsfeld.
Für den Untertyp MEDIASUBTYPE_RAW_AAC1 muss die Mediensenke das Attribut MF_MT_USER_DATA enthalten, und das Attribut muss die AudioSpecificConfig()-Daten enthalten.
Die MPEG-4-Dateisenke erstellt die MPEG-4-Variante des AAC-Beispielbeschreibungsfelds mit einem „mp4a“-Beispieleintrag mit objectTypeIndication = 0x40. Sie verwendet keine MPEG-2-Objekttypen.
MP3-Audio
Für MP3-Audio kann die MPEG-4-Dateisenke das Beispielbeschreibungsfeld aus einem standardmäßigen Audiomedientyp generieren. (Siehe Audiomedientypen.)
Die MPEG-4-Dateisenke erstellt die MPEG-4-Variante des MP3-Beispielbeschreibungsfelds mit einem „mp4a“-Beispieleintrag mit objectTypeIndication = 0x6b für MPEG-1-Audio.
Begrenzungen
- Die maximale Größe der erstellten Datei beträgt 4 GB. Unter Windows 8 werden Dateien mit einer Größe von mehr als 4 GB unterstützt.
- Die MPEG-4-Dateisenke unterstützt keine Bearbeitungslisten (Felder „edts“ und „elst“).
Windows 8-Updates für MPEG-4-Quelle und -Senke
Unter Windows 8 werden Rotationslese- und -schreibvorgänge für MPEG-4-Quellen und -Senken unterstützt. Für MPEG-4-Quellen und -Senken unter Windows 7 werden diese nicht unterstützt.
Die MPEG-4-Quelle liest den Rotationswinkel für eine aktive Videospur als Summe des Rotationswinkels von „mvhd“ und „tkhd“.
Die MPEG-4-Senke von Microsoft schreibt den Rotationswinkel in „tkhd“, aber eine 0-Grad-Matrix (Identität) in „mvhd“. Hinweis: MPEG-4-Senken von Microsoft unterstützen nur einzelne Videospuren.
IPropertyStore liest den Rotationswinkel nur für die erste Videospur als Summe des Rotationswinkels von „mvhd“ und „tkhd“.
IPropertyStore schreibt den Rotationswinkel nur für die erste Videospur in „tkhd“, nachdem der Rotationswinkel entsprechend dem Rotationswinkel in „mvhd“ angepasst wurde, sofern vorhanden.
Filmfragmente („moof“) werden in MPEG-4-Quellen und -Senken unter Windows 8 unterstützt, „mfra“ jedoch nicht.
H.263 wird in MPEG-4-Quellen unter Windows 8 unterstützt.
Die MPEG-4-Quelle ordnet jetzt zwei FourCC-Codes („h263“ und „s263“) im MPEG-4-Dateiformat zum Medientyp MFVideoFormat_H263 zu.
Für MJPEG in MPEG-4-Quellen unter Windows 8 werden noch weitere FourCC-Codes unterstützt.
Die MPEG-4-Quelle ordnet den FourCC-Code „dmb1“ zum Medientyp MFVideoFormat_MJPG zu.
In MPEG-4-Quellen unter Windows 8 werden jetzt Furigana-Metadaten unterstützt.
MPEG-4-Quellen lesen Furigana-Metadaten aus „soal“, „soar“, „soaa“, „sonm“ und „soco“. IPropertyStore liest Furigana-Metadaten über die entsprechenden PKEYs.
Die folgende Tabelle zeigt die Zuordnung zwischen dem kanonischen Namen in der Shell, dem Eigenschaftenschlüssel und der Feld-/Tag-ID im MPEG-4-Dateiformat.
Feld Eigenschaftenschlüssel Tag-/Feld-ID 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 In MPEG-4-Quellen unter Windows 8 werden jetzt 3D-Stereoatome unterstützt.
In MPEG-4-Quellen und -Senken unter Windows 8 werden jetzt AC3 und DD+ unterstützt.
Dateien, die größer als 4 GB sind, werden in MPEG-4-Senken unter Windows 8 für nicht fragmentierte MP4-Dateien unterstützt.
Das Scrubbing wurde in MPEG-4-Quellen unter Windows 8 optimiert.
Um die Latenz zu verringern, werden Informationen für die beiden nächstgelegenen Keyframes für eine bestimmte Suchposition über IMFSeekInfo::GetNearestKeyFrames verfügbar gemacht. Da der Keyframe keine abhängigen Frames enthält, wird der Frame bereits nach dem Decodieren eines einzigen Frames dargestellt. Verwenden Sie IMFGetService::GetService, um diese Schnittstelle über die Medienquelle, Pipeline oder Anwendung abzurufen.
Legen Sie die Rate in der MPEG-4-Quelle auf null fest. Wenn sich die Pipeline im Scrubbingmodus befindet, ist die Rate null.
SPS und PPS können in Beispieldaten in der MPEG-4-Senke gespeichert werden.
Das Attribut MF_MPEG4SINK_SPSPPS_PASSTHROUGH wird in der MPEG-4-Senke definiert, damit SPS und PPS zusammen mit Eingabebeispielen (H.264-Videodaten) gespeichert werden können. Die generierten MP4-Clips können von MPEG-4-Quellen unter Windows 7 und weiteren wiedergegeben werden.
SPS und PPS können aus Eingabebeispielen in der MPEG-4-Senke extrahiert werden.
Wenn SPS und PPS nicht über MF_MT_MPEG_SEQUENCE_HEADER für den Eingabemedientyp der MPEG-4-Senke festgelegt werden, versucht die MPEG-4-Senke, SPS und PPS aus Eingabebeispielen zu extrahieren. Die MPEG-4-Senke ignoriert alle Eingabebeispiele, bis sie das erste SPS und PPS findet, da alle Eingabebeispiele ohne SPS und PPS nicht decodiert werden können.
3D-Informationen im AVC-Konfigurationsdatensatz werden für nicht fragmentierte MP4-Dateien unterstützt.
Die NALU-Länge ist für komprimierte H.264-Stichproben verfügbar, um die H.264 VLD DXVA-Decodierung zu optimieren.
Die MPEG-4-Quelle legt MF_NALU_LENGTH_SET im Ausgabemedientyp MFVideoFormat_H264 oder MFVideoFormat_h264 fest. Sie legt das Blob MF_NALU_LENGTH_INFORMATION für jedes Ausgabebeispiel mit vier Byte NALU-Länge für verschiedene NALUs in einem komprimierten Beispiel fest.
In MP4-Quellen wird jetzt MPEG2 ADTS-Audio unterstützt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2008 R2 [nur Desktop-Apps] |
Siehe auch