音频子类型

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

下表列出了音频的媒体子类型 GUID。 如果适用,每个表都会列出在 Mmreg.h 中声明的等效格式标记。

未压缩的音频类型

GUID 说明 标头 等效格式标记
MEDIASUBTYPE_IEEE_FLOAT IEEE 浮点音频。 uuids.h WAVE_FORMAT_IEEE_FLOAT (0x0003)
MEDIASUBTYPE_PCM PCM 音频。 uuids.h WAVE_FORMAT_PCM (0x0001)

MPEG-4 和 AAC 音频类型

GUID 说明 标头 等效格式标记
MEDIASUBTYPE_MPEG_ADTS_AAC 高级音频编码 (AAC) 音频数据传输流 (ADTS) 格式的音频。
格式块是 wFormatTag 等于WAVE_FORMAT_MPEG_ADTS_AACWAVEFORMATEX 结构。
在 (SBR) 或参数立体声 (PS) 工具(如果存在)应用光谱带复制之前, WAVEFORMATEX 结构指定核心 AAC-LC 采样率和通道数。
在 WAVEFORMATEX 结构之后不需要其他数据。
wmcodecdsp.h WAVE_FORMAT_MPEG_ADTS_AAC (0x1600)
MEDIASUBTYPE_MPEG_HEAAC High-Efficiency高级音频编码 (HE-AAC) 流。
格式块是 HEAACWAVEFORMAT 结构。
wmcodecdsp.h WAVE_FORMAT_MPEG_HEAAC (0x1610)
MEDIASUBTYPE_MPEG_LOAS MPEG-4 音频传输流,其同步层 (LOAS) 和多路复用层 (LATM) 。
格式块是 wFormatTag 等于WAVE_FORMAT_MPEG_LOASWAVEFORMATEX 结构。
在应用光谱 SBR 或 PS 工具之前, WAVEFORMATEX 结构指定核心 AAC-LC 采样率和通道数(如果存在)。
在 WAVEFORMATEX 结构之后不需要其他数据。
wmcodecdsp.h WAVE_FORMAT_MPEG_LOAS (0x1602)
MEDIASUBTYPE_RAW_AAC1 原始 AAC。
格式块是 wFormatTag 等于 WAVE_FORMAT_RAW_AAC1WAVEFORMATEX 结构。
WAVEFORMATEX 结构指定在应用 SBR 和 PS 工具后解码的音频中的采样率和通道数(如果存在)。
根据 ISO/IEC 14496-3 (MPEG-4 音频) 定义, 在 WAVEFORMATEX 结构后跟包含 AudioSpecificConfig () 数据的其他字节。
对于采用 SBR/PS 隐式信号的 AAC-LC 或 HE-AAC,AudioSpecificConfig () 数据的长度为 2 字节。 对于具有 SBR/PS 显式信号的 HE-AAC,它超过 2 个字节。
wmcodecdps.h WAVE_FORMAT_RAW_AAC1 (0x00FF)

杜比音频类型

GUID 说明 标头 等效格式标记
MEDIASUBTYPE_DOLBY_DDPLUS Dolby Digital Plus 音频。 wmcodecdsp.h 不适用
MEDIASUBTYPE_DOLBY_AC3 杜比数字 (AC-3) 音频。 ksuuids.h 不适用
MEDIASUBTYPE_DOLBY_AC3_SPDIF Dolby AC-3 over S/PDIF。 uuids.h WAVE_FORMAT_DOLBY_AC3_SPDIF (0x0092)
MEDIASUBTYPE_DVM DVM AC-3 编解码器。 使用 Dolby Digital 音频播放 AVI 文件时使用。
格式块是一个 WAVEFORMATEX 结构,其格式标记等于 WAVE_FORMAT_DVM
wmcodecdsp.h WAVE_FORMAT_DVM (0x2000)
MEDIASUBTYPE_RAW_SPORT AC-3 over S/PDIF;请参阅备注。 uuids.h WAVE_FORMAT_RAW_SPORT (0x0240)
MEDIASUBTYPE_SPDIF_TAG_241h AC-3 over S/PDIF;请参阅备注。 uuids.h WAVE_FORMAT_ESST_AC3 (0x0241)

若要指定填充 AC-3,请使用子类型 MEDIASUBTYPE_DOLBY_AC3_SPDIF,它对应于格式标记 0x0092 (WAVE_FORMAT_DOLBY_AC3_SPDIF) 。 0x240和0x241的值也用于指示填充 AC-3,但 Microsoft 鼓励使用0x0092。

其他音频类型

GUID 说明 标头 等效格式标记
MEDIASUBTYPE_DRM_Audio 具有数字版权管理的音频 (DRM) 保护。 uuids.h WAVE_FORMAT_DRM (0x0009)
MEDIASUBTYPE_DTS 数字影院系统 (DTS) 音频。
格式块是 FORMATATEX 结构,其格式标记等于 WAVE_FORMAT_UNKNOWN
ksuuids.h 不适用
MEDIASUBTYPE_DTS2 数字影院系统 (DTS) 音频。
格式块是一个 WAVEFORMATEX 结构,其格式标记等于 WAVE_FORMAT_DTS2
此子类型等效于 MEDIASUBTYPE_DTS 但使用不同的格式标记。
wmcodecdsp.h WAVE_FORMAT_DTS2 (0x2001)
MEDIASUBTYPE_DVD_LPCM_AUDIO DVD 音频数据。 ksuuids.h 不适用
MEDIASUBTYPE_MPEG1AudioPayload MPEG-1 音频有效负载。 uuids.h WAVE_FORMAT_MPEG (0x0050)
MEDIASUBTYPE_MPEG1Packet MPEG1 音频数据包。 uuids.h 不适用
MEDIASUBTYPE_MPEG1Payload MPEG1 音频有效负载。 uuids.h 不适用
MEDIASUBTYPE_MPEG2_AUDIO MPEG-2 音频数据。 ksuuids.h 不适用

音频格式标记

WAVEFORMATEX 结构中的 wFormatTag 字段指定音频格式类型。 媒体样本通常是在 WAVEFORMATEX 结构的 wBitsPerSample 字段中指定的样本数。 对于可能来自数据包化流的 MPEG 音频样本不一定如此,因此不一定打包在示例/帧边界上。 对于 MPEG 音频,媒体示例中的时间戳是第一个字节包含在媒体示例中的第一个帧的时间戳。

为每个 wFormatTag 定义媒体子类型,如下所示:

  • 子类型 GUID 的 Data1 子字段与 wFormatTag 值相同。
  • “数据 2”字段为 0。
  • “数据 3”字段0x0010。
  • “数据 4”字段为0x80、0x00、0x00、0xAA、0x00、0x38、0x9B 0x71。

因此,对于 PCM 音频,uuids.h 中定义的子类型 GUID (MEDIASUBTYPE_PCM) 为:

{00000001-0000-0010-8000-00AA00389B71}

CreateAudioMediaType 函数可用于从 WAVEFORMATEX 结构创建AM_MEDIA_TYPE结构。

已过时的音频类型

以下音频子类型已过时,不应使用:

  • MEDIASUBTYPE_MPEG_RAW_AAC
  • MEDIASUBTYPE_PCMAudioObsolete

另请参阅

AM_MEDIA_TYPE

媒体类型