MPEG-2-Audioencoder

Der Microsoft Media Foundation MPEG-2-Audioencoder ist eine Media Foundation-Transformation, die Mono- oder Stereoaudio in MPEG-1-Audio (ISO/IEC 11172-3) oder MPEG-2-Audio (ISO/IEC 13818-3) codiert.

Der Encoder unterstützt Layer 1- und Layer 2-Audio. MPEG-Layer 3-Audio (MP3) werden nicht unterstützt. Für MPEG-2 unterstützt der Encoder den Teil mit niedrigen Samplinghäufigkeiten (Low Sampling Frequencies, LSF) von MPEG-2-Audio. Multichannelerweiterungen werden nicht unterstützt. Der MFT gibt einen elementaren MPEG-Stream aus. Es können keine paketisierten elementaren Datenströme, Programmstreams oder Transportstreams generiert werden.

Klassenbezeichner

Der Klassenbezeichner (CLSID) des MEPG-2-Audioencoders ist CLSID _ CMPEG2AudioEncoderMFT, definiert in der Headerdatei wmcodecdsp.h.

Ausgabetypen

Der Ausgabetyp muss zuerst vor dem Eingabetyp festgelegt werden. In der folgenden Tabelle sind die erforderlichen und optionalen Attribute für den Ausgabemedientyp aufgeführt.

Attribut BESCHREIBUNG Bemerkungen
MF_MT_MAJOR_TYPE Haupttyp. Erforderlich. Muss MFMediaType_Audiosein.
MF_MT_SUBTYPE Audiountertyp. Erforderlich. Muss MFAudioFormat_MPEGsein. Dieser Untertyp wird sowohl für MPEG-1- als auch MPEG-2-Audio verwendet.
MF_MT_AUDIO_SAMPLES_PER_SECOND Stichproben pro Sekunde. Erforderlich. Die folgenden Werte werden sowohl für MPEG-1 als auch für MPEG-2 unterstützt:
  • 32000
  • 44100
  • 48000
Darüber hinaus werden die folgenden Werte für MPEG-2 LSF unterstützt:
  • 16000
  • 22050
  • 24.000
MF_MT_AUDIO_NUM_CHANNELS Anzahl der Kanäle. Erforderlich. Muss entweder 1 (Mono) oder 2 (Stereo) sein.
MF_MT_AUDIO_CHANNEL_MASK Gibt die Zuweisung von Audiokanälen zu Sprecherpositionen an. Optional. Wenn diese Einstellung festgelegt ist, muss der Wert für Stereo (front left and right channels) oder 0x4 für Mono (Front-Center-Kanal) 0x3 werden.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Bitrate des codierten MPEG-Streams in Bytes pro Sekunde. Optional.
Die SPEZIFIKATIONEN ISO/IEC 11172-3 und ISO/IEC 13818-3 (LSF) definieren mehrere Bitraten, abhängig von der Samplingrate, der Anzahl der Kanäle und der Audioschicht (1 oder 2).
Der Encoder verwendet standardmäßig Layer 2-Audio. Wenn das MF_MT_AUDIO_AVG_BYTES_PER_SECOND Attribut nicht festgelegt ist, verwendet der Encoder die folgenden Standardbitraten:
  • MPEG-1 Stereo: 224.000 Bits pro Sekunde (bps) = 28.000 Bytes pro Sekunde.
  • MPEG-1 mono: 192.000 bps = 24.000 Bytes pro Sekunde.
  • MPEG-2 LSF, Mono oder Stereo: 160.000 Bps = 20.000 Bytes pro Sekunde.
Dieses Attribut kann auf andere Werte festgelegt werden. Wenn der Wert gemäß MPEG-Spezifikationen ungültig ist, lehnt der MFT den Medientyp ab.
Sie können die Bitrate auch mithilfe der ICodecAPI-Schnittstelle festlegen. Weitere Informationen finden Sie unter Hinweise.

Wenn die optionalen Attribute nicht festgelegt sind, fügt der Encoder sie dem Medientyp hinzu, nachdem der Typ festgelegt wurde.

Eingabetypen

In der folgenden Tabelle sind die erforderlichen und optionalen Attribute für den Eingabemedientyp aufgeführt.

Attribut BESCHREIBUNG Bemerkungen
MF_MT_MAJOR_TYPE Haupttyp. Erforderlich. Muss MFMediaType_Audiosein.
MF_MT_SUBTYPE Audiountertyp. Erforderlich. Muss MFAudioFormat_PCM oder MFAudioFormat_Floatsein.
MF_MT_AUDIO_BITS_PER_SAMPLE Anzahl von Bits pro Audiobeispiel. Erforderlich. Der Wert muss 16 sein, wenn der Untertyp MFAudioFormat_PCMist, oder 32, wenn der Untertyp MFAudioFormat_Floatist.
MF_MT_AUDIO_SAMPLES_PER_SECOND Stichproben pro Sekunde. Erforderlich. Muss mit dem Ausgabetyp übereinstimmen.
MF_MT_AUDIO_NUM_CHANNELS Anzahl der Kanäle. Erforderlich. Muss mit dem Ausgabetyp übereinstimmen.
MF_MT_AUDIO_BLOCK_ALIGNMENT Blockausrichtung in Bytes. Erforderlich. Berechnen Sie den Wert wie folgt:
  • MFAudioFormat_PCM:Anzahl der Kanäle × 2.
  • MFAudioFormat_Float:Anzahl der Kanäle × 4.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Bitrate des codierten AC3-Streams in Bytes pro Sekunde. Erforderlich. Muss der Blockausrichtung × Stichproben pro Sekunde entsprechen.
MF_MT_AUDIO_CHANNEL_MASK Gibt die Zuweisung von Audiokanälen zu Sprecherpositionen an. Optional. Wenn diese Einstellung festgelegt ist, muss der Wert mit dem Ausgabetyp übereinstimmen.
MF_MT_AUDIO_VALID_BITS_PER_SAMPLE Anzahl der gültigen Bits von Audiodaten in jedem Audiobeispiel. Optional. Wenn festgelegt, muss der Wert mit dem WertMF_MT_AUDIO_BITS_PER_SAMPLE.

Der Encoder unterstützt keine Abtastratenkonvertierung oder Stereo-/Monokonvertierung. Wenn die optionalen Attribute nicht festgelegt sind, fügt der Encoder sie dem Medientyp hinzu, nachdem der Typ festgelegt wurde.

Codec-Eigenschaften

Der Encoder unterstützt die folgenden Eigenschaften über die ICodecAPI-Schnittstelle.

Eigenschaft BESCHREIBUNG Standardwert
CODECAPI _ AVEncCommonMeanBitRate Gibt die durchschnittliche codierte Bitrate in Bits pro Sekunde an. Wie für das MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND-Attribut im Ausgabemedientyp beschrieben.
CODECAPI _ AVEncMPACodingMode Gibt den MPEG-Audiocodierungsmodus an. Stereo für 2-Kanal-Audio oder ein Kanal für 1-Kanal-Audio.
Für 2-Kanal-Audio unterstützt der Encoder auch Dualkanal- und Gemeinsame Stereo.
CODECAPI _ AVEncMPACopyright Gibt an, ob das Copyrightbit im MPEG-Audiostream festgelegt werden soll. Kein Copyright.
CODECAPI _ AVEncMPAEmphasisType Gibt den Typ des Filters zur De-Hervorhebung an, der beim Decodieren des codierten Streams verwendet werden soll. Es wurde keine Hervorhebung angegeben.
AVEncMPAEnableRedundancyProtection Gibt an, ob dem Frameheader eine zyklische Redundanzprüfung (CRC) hinzugefügt werden soll. Eine CRC-Prüfsumme wird in den Bitstream geschrieben.
CODECAPI _ AVEncMPALayer Gibt die MPEG-Audioebene an. Layer 2-Audio.
CODECAPI _ AVEncMPAOriginalBitstream Gibt an, ob für das ursprüngliche Bit im MPEG-Audiostream festgelegt werden soll. Das "Original"-Bit ist deaktiviert.
CODECAPI _ AVEncMPAPrivateUserBit Gibt an, ob für das private Benutzerbit im MPEG-Audiostream festgelegt werden soll. Privates Benutzerbit ist deaktiviert.

Um einen Zeiger auf die ICodecAPI-Schnittstelle zu erhalten, rufen Sie QueryInterface auf dem MFT auf.

MFT implementiert die folgenden ICodecAPI-Methoden:

Alle anderen ICodecAPI-Methoden geben E _ NOTIMPL zurück.

Hinweise

Jeder MPEG-Audioframe enthält entweder 384 (Schicht 1) oder 1152 (Schicht 2) Audiobeispiele pro Kanal. Jeder Eingabepuffer für den Encoder kann jedoch eine beliebige Anzahl von PCM-Stichproben enthalten. Die Größe jedes Eingabepuffers muss ein Vielfaches der Blockausrichtung sein. Der Encoder speichert Eingabebeispiele zwischen, bis er für einen MPEG-Audioframe ausreichend ist.

Jeder Ausgabepuffer enthält einen unformatten MPEG-Frame. Die Größe der einzelnen Ausgabepuffer hängt von der Bitrate und der Abtastrate ab.

Konfigurieren des Encoders

Führen Sie die folgenden Schritte aus, um die Standardeinstellungen für den Encoder zu ändern:

  1. Erstellen Sie eine Instanz des Encoder-MFT.

  2. Rufen Sie DEN TYPNTRANSFORM::GetOutputAvailableType auf, um die Liste der bevorzugten Ausgabetypen zu erhalten. Der Encoder aufzählt alle Abtastraten für Mono und Stereo. Wählen Sie basierend auf der Abtastrate und der Anzahl der Kanäle einen dieser Medientypen aus. Das MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND-Attribut gibt die Standardbitrate in Bytes pro Sekunde an.

  3. Optional: Sie können die Standardbitrate überschreiben, indem Sie einen neuen Wert für MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND für den Ausgabemedientyp festlegen. Gültige Bitraten hängen von der Abtastrate, der Anzahl der Kanäle und der Audioebene ab.

    Hinweis

    An diesem Punkt des Konfigurationsprozesses verwendet der Encoder standardmäßig Layer 2-Audio und akzeptiert nur Layer-2-Bitraten. Sie können den Encoder in einem späteren Schritt auf Ebene 1 umschalten (siehe Schritt 7). Belasse in diesem Fall die Standardbitrate vorerst. Sie können ihn in Schritt 8 erneut ändern.

  4. Rufen Sie ZUM Festlegen des Ausgabemedientyps DEN WERTTRANSFORM::SetOutputType auf. Wenn Sie ihren eigenen Wert für MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND festlegen und der MFT den Ausgabemedientyp zurückweisen, liegt dies wahrscheinlich daran, dass Sie eine ungültige Bitrate angegeben haben.

  5. Rufen Sie DEN TYP DER EINGABETRANSFORM::GetInputAvailableType auf, um den Eingabemedientyp aufzählen. Da die Abtastrate und die Anzahl der Kanäle mit dem Ausgabetyp identisch sein müssen, werden nur zwei Optionen aufzählt: 32-Bit-PCM-Eingabe mit Gleitkomma und PCM-Eingabe mit 16-Bit-Ganzzahl. Wählen Sie eine dieser Beiden aus.

  6. Rufen Sie DEN EINGABETRANSFORM::SetInputType auf, um den Eingabemedientyp zu festlegen.

  7. Optional: Um Layer 1-Audio zu codieren, legen Sie die CODECAPI _ AVEncMPALayer-Eigenschaft auf eAVEncMPALayer _ 1 fest.

  8. Optional: Legen Sie zum Ändern der Bitrate die _ CODECAPI-Eigenschaft AVEncCommonMeanBitRate fest. Die Bitrate muss eine der gültigen Bitraten sein, die in den MPEG-1- oder MPEG-2-LSF-Spezifikationen aufgeführt sind. Alternativ können Sie ICodecAPI::GetParameterValues aufrufen, um basierend auf den aktuellen Einstellungen eine Liste gültiger Bitraten zu erhalten.

  9. Optional: Bei 2-Kanal-Audio können Sie die _ CODECAPI-Eigenschaft AVEncMPACodingMode festlegen, um den Codierungsmodus in Dual-Channel- oder Joint-Stereo zu ändern. Sie können ICodecAPI::GetParameterRange aufrufen, um die gültigen Optionen zu erhalten. (Für 1-Kanal-Audio ist mono die einzige Option.)

  10. Optional: Legen Sie eine der anderen zuvor aufgeführten ICodecAPI-Eigenschaften fest.

Es ist wichtig, die Reihenfolge dieser Schritte zu befolgen. Legen Sie insbesondere den Ausgabemedientyp fest, bevor Sie ICodecAPI-Eigenschaften ändern. Außerdem müssen Sie ICodecAPI-Eigenschaften festlegen, bevor MFT das erste Eingabebeispiel empfängt. Nachdem MFT Eingaben empfangen hat, sind die Codeceigenschaften schreibgeschützt, und ICodecAPI::SetValue gibt den Wert S FALSE _ zurück.

Unterstützte Bitraten

Der Encoder unterstützt die folgenden Bitraten.

MPEG-1

MPEG-2

Ebene 1

Layer 2-

Ebene 1

Layer 2-

32

32*

32

8

64

48*

38

16

96

56*

56

24

128

64

64

32

160

80*

80

40

192

96

96

48

224

112

112

56

256

128

128

64

288

160

144

80

320

192

160

96

352

224**

176

112

384

256**

192

128

416

230**

224

144

448

384**

256

160

\* Nur Mono \*\* Nur Stereo

Beispielmedientypen

Hier sehen Sie ein Beispiel für die Medientypen, die zum Codieren von 16-Bit-Ganzzahl-PCM-Stereoaudio mit 48 kHz mit der Standardbitrate erforderlich sind.

Ausgabemedientyp:

Attribut Wert
MF _ _ MT-HAUPTTYP _ MFMediaType _ Audio
MF _ _ MT-UNTERTYP MFAudioFormat _ MPEG
MF _ _ MT-AUDIOBEISPIELE _ _ PRO _ SEKUNDE 48000
MF _ MT _ AUDIO _ NUM _ CHANNELS 2

Eingabemedientyp:

Attribut Wert
MF _ _ MT-HAUPTTYP _ MFMediaType _ Audio
MF _ _ MT-UNTERTYP MFAudioFormat _ PCM
MF _ _ MT-AUDIOBITS _ _ PRO _ BEISPIEL 16
MF _ _ MT-AUDIOBEISPIELE _ _ PRO _ SEKUNDE 48000
MF _ MT _ AUDIO _ NUM _ CHANNELS 2
MF _ MT _ AUDIO _ BLOCK _ ALIGNMENT 4
MF _ MT _ AUDIO _ AVG _ BYTES _ PER _ SECOND 192000

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
[Windows 8 Nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Nicht unterstützt
DLL
Msmpeg2enc.dll

Weitere Informationen

Codec-Objekte