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: Informationstechnologie -- Codieren von audiovisuellen Objekten -- Teil 12: ISO Base Media File Format
  • ISO/IEC 14496-14: Informationstechnologie -- Codierung von audiovisuellen Objekten -- Teil 14: MP4-Dateiformat

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 MFCreateMPEG4MediaSink-Funktion 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 Datenstrom gespeichert. Das Beispielbeschreibungsfeld enthält eine Liste mit Beispieleinträgen. Für jeden Beispieleintrag definiert ein 4-Byte-Code, ähnlich einem FOURCC, 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 Datenstrom bereitgestellt werden. Um das Beispielbeschreibungsfeld anzugeben, legen Sie die folgenden Attribute für den Medientyp fest:

Merkmal Description
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 IMFMediaTypeHandler-Schnittstelle auf der MPEG-4-Dateisenke aktualisieren. Dies muss erfolgen, bevor die Medienspüle abgeschlossen wird.

In der Regel wird der Medientyp von einem Upstream-Encoder 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-Datenstroms mit einem elementaren Videostream mit Sequenzparametersatz (SPS) und PPS-NALUs (Sequence Parameter Set), die im Beispielbeschreibungsfeld enthalten sind, wie in ISO/IEC 14496 Teil 15 Abschnitt 5.1 definiert. 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 Spezifikation des Formats H.264 entsprechen. Insbesondere müssen NALUs durch 3-Byte- oder 4-Byte-Anfangscodes getrennt werden.
  • Medienbeispiele müssen alle Segment- 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 Datenstrom über einen B-Frame verfügt und der Decodierungs-Zeitstempel nicht festgelegt ist, sieht der MP4 Writer die Framezeit rückwärts und legt den Frame ab.

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 . Ist dieses Attribut vorhanden, wird der Teil der HEAACWAVEINFO-Struktur nach der WAVEFORMATEX-Struktur (d. a. nach dem wfx-Element ) angezeigt. Dies folgt den AudioSpecificConfig()-Daten, wie durch ISO/IEC 14496-3 definiert. Wenn das attribut MF_MT_USER_DATA nicht vorhanden ist, wird der Datenstrom als AAC Low Complexity (LC)-Profil angenommen, und die MPEG-4-Dateispüle 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. Es 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.

Einschränkungen

  • Die maximale Größe der erstellten Datei beträgt 4 GB. In Windows 8 werden Dateien mit einer Größe von mehr als 4 GB unterstützt.
  • Die MPEG-4-Dateisenke unterstützt keine Bearbeitungslisten ('edts' und 'elst').

Windows 8-Updates für MPEG-4-Quelle und Sink

  • Drehungs-Lese- und Schreibunterstützung, die in Windows 8 MPEG-4-Quelle und -Spüle hinzugefügt wurde. Dies wird in der Windows 7 MPEG-4-Quelle und -Spüle nicht unterstützt.

    MPEG-4-Quelle liest den Drehwinkel für eine aktive Videospur als Summe des Drehwinkels von "mvhd" und von "tkhd".

    Microsoft MPEG-4 Sink schreibt den Drehwinkel in 'tkhd', schreibt aber 0 Grad (Identitätsmatrix) in 'mvhd'. Hinweis: Microsoft MPEG-4-Spüle unterstützt nur einzelne Videospuren.

    IPropertyStore liest den Drehwinkel nur für die erste Videospur als Summe des Drehwinkels von "mvhd" und von "tkhd".

    IPropertyStore schreibt den Drehwinkel nur für die erste Videospur in 'tkhd', nachdem der Drehwinkel gemäß dem Drehwinkel in "mvhd" angepasst wird, sofern vorhanden.

  • Filmfragmente ('moof') werden in Windows 8 MPEG-4-Quelle und Sink unterstützt, aber "mfra" ist nicht.

  • H.263 wird in windows 8 MPEG-4-Quelle unterstützt.

    MPEG-4-Quelle ordnet jetzt zwei Vierccs von 'h263' und 's263' im MPEG-4-Dateiformat dem Medientyp von MFVideoFormat_H263 zu.

  • Weitere Viercc-Unterstützung für MJPEG in Windows 8 MPEG-4-Quelle hinzugefügt.

    MPEG-4-Quellzuordnungen von "dmb1" dem Medientyp MFVideoFormat_MJPG.

  • Furigana-Metadatenunterstützung, die in der Windows 8 MPEG-4-Quelle hinzugefügt wurde.

    MPEG-4-Quelle liest Furigana-Metadaten aus 'soal', 'soar', 'soaa', 'sonm' und 'soco'. IPropertyStore liest Furigana-Metadaten über den Satz der entsprechenden PKEYs.

    Die folgende Tabelle zeigt die Zuordnung zwischen dem shell (kanonischen Namen), dem Eigenschaftsschlüssel und der Box-/Tag-ID im MPEG-4-Dateiformat.

    Feld Eigenschaftsschlüssel Tag-/Feld-ID
    System.Musik.AlbumtitelSortierungÜberschreiben PKEY_Music_AlbumTitleSortOverride soal
    System.Music.ArtistSortOverride PKEY_Music_ArtistSortOverride aufsteigen
    System.Music.AlbumArtistSortOverride PKEY_Music_AlbumArtistSortOverride soaa
    System.TitleSortÜberschreibung PKEY-_TitleSortOverride Sonm
    System.Music.ComposerSortOverride PKEY_Music_ComposerSortOverride Soco

     

  • Stereo-3D-Atom-Unterstützung in Windows 8 MPEG-4-Quelle hinzugefügt.

  • AC3- und DD+-Unterstützung in Windows 8 MPEG-4-Quelle und Spüle hinzugefügt.

  • Dateien, die größer als 4 GB sind, werden in Windows 8 MPEG-4-Spüle für nicht fragmentale MP4 unterstützt.

  • Scrubbing wurde in der Windows 8 MPEG-4-Quelle 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 nach dem Decodieren nur eines Frames dargestellt. Verwenden Sie IMFGetService::GetService , um diese Schnittstelle über die Medienquelle, Pipeline oder Anwendung abzurufen.

    Legen Sie die Rate in 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 MPEG-4-Spüle gespeichert werden.

    MF_MPEG4SINK_SPSPPS_PASSTHROUGH Attribut auf MPEG-4-Spüle ist definiert, damit SPS und PPS zusammen mit Eingabebeispielen (H.264-Videodaten) gespeichert werden können. Die produzierten MP4-Clips können von Windows 7 MPEG-4-Quelle und anderen wiedergegeben werden.

  • SPS und PPS können aus Eingabebeispielen in MPEG-4-Spüle extrahiert werden.

    Wenn SPS und PPS nicht über MF_MT_MPEG_SEQUENCE_HEADER für den Eingabemedientyp der MPEG-4-Spüle festgelegt werden, versucht MPEG-4-Sink, SPS und PPS aus Eingabebeispielen zu extrahieren. MPEG-4-Spüle 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 in AVC-Konfigurationsdatensatz werden für nicht fragmentierte MP4 unterstützt.

  • DIE NALU-Länge ist für H.264 komprimierte Proben verfügbar, um die H.264 VLD DXVA-Decodierung zu optimieren.

    MPEG-4-Quelle legt MF_NALU_LENGTH_SET für den Ausgabemedientyp MFVideoFormat_H264 oderMFVideoFormat_h264 fest. Es legt den Blob von MF_NALU_LENGTH_INFORMATION für jedes Ausgabebeispiel mit vier Byte-NALU-Länge für verschiedene NALU in einem komprimierten Beispiel fest.

  • Unterstützung für MPEG2 ADTS-Audio in MP4-Quelle hinzugefügt.

Anforderungen

Anforderung Wert
Mindest unterstützter Client
Windows 7 [nur Desktop-Apps]
Unterstützter Server (Mindestversion)
Windows Server 2008 R2 [nur Desktop-Apps]

Siehe auch

Medienquellen und Senken

Mediensenken

MPEG-4-Unterstützung in Media Foundation

Unterstützte Medienformate in Media Foundation