MPEG-2 Audio-Encoder

Der Mpeg-2-Audioencoder von Microsoft Media Foundation 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(MP3)-Audio wird nicht unterstützt. Für MPEG-2 unterstützt der Encoder den LSF-Teil (Low Sampling Frequencies) von MPEG-2-Audio. Die Multichannel-Erweiterungen werden nicht unterstützt. Der MFT gibt einen MPEG-Elementardatenstrom aus. Paketierte Elementardatenströme, Programmdatenströme oder Transportdatenströme können nicht 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.

attribute BESCHREIBUNG Bemerkungen
MF_MT_MAJOR_TYPE Haupttyp. Erforderlich. Muss MFMediaType_Audio sein.
MF_MT_SUBTYPE Audiountertyp. Erforderlich. Muss MFAudioFormat_MPEG sein. Dieser Untertyp wird sowohl für MPEG-1- als auch für MPEG-2-Audio verwendet.
MF_MT_AUDIO_SAMPLES_PER_SECOND Beispiele 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 Lautsprecherpositionen an. Optional. Wenn festgelegt, muss der Wert für Stereo (vorderer linker und rechter Kanal) oder 0x4 für Mono (Front center Channel) 0x3 werden.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Bitrate des codierten MPEG-Datenstroms 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 Audioebene (1 oder 2).
Der Encoder verwendet standardmäßig Layer 2-Audio. Wenn das attribut MF_MT_AUDIO_AVG_BYTES_PER_SECOND 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 nicht gü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.

attribute BESCHREIBUNG Bemerkungen
MF_MT_MAJOR_TYPE Haupttyp. Erforderlich. Muss MFMediaType_Audio sein.
MF_MT_SUBTYPE Audiountertyp. Erforderlich. Muss MFAudioFormat_PCM oder MFAudioFormat_Float sein.
MF_MT_AUDIO_BITS_PER_SAMPLE Anzahl der Bits pro Audiobeispiel. Erforderlich. Der Wert muss 16 sein, wenn der Untertyp MFAudioFormat_PCM ist, oder 32, wenn der Untertyp MFAudioFormat_Float ist.
MF_MT_AUDIO_SAMPLES_PER_SECOND Beispiele 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 gleich Blockausrichtung × Beispielen pro Sekunde sein.
MF_MT_AUDIO_CHANNEL_MASK Gibt die Zuweisung von Audiokanälen zu Lautsprecherpositionen an. Optional. Wenn festgelegt, muss der Wert mit dem Ausgabetyp übereinstimmen.
MF_MT_AUDIO_VALID_BITS_PER_SAMPLE Anzahl gültiger Audiodatenbits in jedem Audiobeispiel. Optional. Wenn festgelegt, muss der Wert mit MF_MT_AUDIO_BITS_PER_SAMPLE identisch sein.

 

Der Encoder unterstützt keine Abtastratekonvertierung 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 Einzelkanal für 1-Kanal-Audio.
Für 2-Kanal-Audio unterstützt der Encoder auch duale Kanäle und gemeinsame Stereo.
CODECAPI_AVEncMPACopyright Gibt an, ob das Copyrightbit im MPEG-Audiodatenstrom festgelegt werden soll. Kein Copyright.
CODECAPI_AVEncMPAEmphasisType Gibt den Typ des Debetonierungsfilters an, der verwendet werden soll, wenn der codierte Datenstrom decodiert wird. Keine Betonung angegeben.
AVEncMPAEnableRedundancyProtection Gibt an, ob dem Frameheader eine zyklische Redundanzprüfung (CRC) hinzugefügt werden soll. Eine CRC-Prüfsumme wird in den Bitdatenstrom geschrieben.
CODECAPI_AVEncMPALayer Gibt die MPEG-Audioebene an. Layer-2-Audio.
CODECAPI_AVEncMPAOriginalBitstream Gibt an, ob für das ursprüngliche Bit im MPEG-Audiodatenstrom festgelegt werden soll. Das Bit "Original" ist deaktiviert.
CODECAPI_AVEncMPAPrivateUserBit Gibt an, ob für das bit des privaten Benutzers im MPEG-Audiodatenstrom festgelegt werden soll. Das Bit des privaten Benutzers ist deaktiviert.

 

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

Das MFT implementiert die folgenden ICodecAPI-Methoden :

Alle anderen ICodecAPI-Methoden geben E_NOTIMPL zurück.

Bemerkungen

Jeder MPEG-Audioframe enthält entweder 384 (Layer 1) oder 1152 (Layer 2) Audiobeispiele pro Kanal. Jeder Eingabepuffer für den Encoder kann jedoch eine beliebige Anzahl von PCM-Beispielen 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 unformatierten 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 eine der Standardeinstellungen für den Encoder zu ändern:

  1. Erstellen Sie eine instance des Encoder-MFT.

  2. Rufen Sie IMFTransform::GetOutputAvailableType auf, um die Liste der bevorzugten Ausgabetypen abzurufen. Der Encoder listet alle Abtastraten für Mono und Stereo auf. Wählen Sie einen dieser Medientypen basierend auf der Abtastrate und der Anzahl der Kanäle aus. Das attribut MF_MT_AUDIO_AVG_BYTES_PER_SECOND gibt die Standardbitrate in Byte 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 Layer 1 umstellen (siehe Schritt 7). Behalten Sie in diesem Fall vorerst die Standardbitrate bei. Sie können es in Schritt 8 erneut ändern.

     

  4. Rufen Sie IMFTransform::SetOutputType auf, um den Ausgabemedientyp festzulegen. Wenn Sie einen eigenen Wert für MF_MT_AUDIO_AVG_BYTES_PER_SECOND festlegen und der Ausgabemedientyp vom MFT abgelehnt wird, liegt dies wahrscheinlich daran, dass Sie eine ungültige Bitrate angegeben haben.

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

  6. Rufen Sie IMFTransform::SetInputType auf, um den Eingabemedientyp festzulegen.

  7. Optional: Legen Sie zum Codieren von Layer 1-Audio die eigenschaft CODECAPI_AVEncMPALayer auf eAVEncMPALayer_1 fest.

  8. Optional: Um die Bitrate zu ändern, legen Sie die CODECAPI_ AVEncCommonMeanBitRate-Eigenschaft 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 der gültigen Bitraten zu erhalten.

  9. Optional: Bei 2-Kanal-Audio können Sie die CODECAPI_ AVEncMPACodingMode-Eigenschaft festlegen, um den Codierungsmodus in dualen Kanälen oder gemeinsames Stereo zu ändern. Sie können ICodecAPI::GetParameterRange aufrufen, um die gültigen Optionen abzurufen. (Für 1-Kanal-Audio ist die einzige Option mono.)

  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 der MFT die Eingabe 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-ganzzahligem PCM und 48-kHz-Stereoaudio mit der Standardbitrate benötigt werden.

Ausgabemedientyp:

attribute Wert
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_MPEG
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 2

 

Eingabemedientyp:

attribute Wert
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_PCM
MF_MT_AUDIO_BITS_PER_SAMPLE 16
MF_MT_AUDIO_SAMPLES_PER_SECOND 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

Siehe auch

Codec-Objekte