Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
|
| 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:
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:
|
| 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:
Erstellen Sie eine instance des Encoder-MFT.
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.
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.
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.
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.
Rufen Sie IMFTransform::SetInputType auf, um den Eingabemedientyp festzulegen.
Optional: Legen Sie zum Codieren von Layer 1-Audio die eigenschaft CODECAPI_AVEncMPALayer auf eAVEncMPALayer_1 fest.
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.
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.)
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 |
|
Siehe auch