共用方式為


AAC 編碼器

Microsoft Media Foundation AAC 編碼器是一種 媒體基礎轉換 ,可編碼進階音訊編碼 (AAC) 低複雜度 (LC) 設定檔,如 ISO/IEC 13818-7 (MPEG-2 音訊第 7 部分) 所定義。

AAC 編碼器不支援編碼至任何其他 AAC 設定檔,例如 Main、SSR 或 LTP。

類別識別碼

AAC 編碼器的類別識別碼 (CLSID ) 是在頭檔 wmcodecdsp.h 中定義的CLSID_AACMFTEncoder。

媒體類型

AAC 編碼器支援下列媒體類型。 您可以先依順序輸入類型或輸出類型先設定類型。

輸入類型

在輸入媒體類型上設定下列屬性。

屬性 描述 備註
MF_MT_MAJOR_TYPE 主要類型。 必須 MFMediaType_Audio
MF_MT_SUBTYPE 亞。 必須是 MFAudioFormat_PCM
MF_MT_AUDIO_BITS_PER_SAMPLE 每個範例的位數。 必須是 16。
MF_MT_AUDIO_SAMPLES_PER_SECOND 每秒範例數。 支援下列值:
  • 44100 (44.1 KHz)
  • 48000 (48 KHz)
MF_MT_AUDIO_NUM_CHANNELS 通道數目。 必須是 1 (單聲道) 或 2 個 (立體) ,或 6 (5.1) 。 注意:6 個音訊通道的支援是透過 Windows 10 引進,不適用於舊版 Windows。

設定輸入類型之後,編碼器會衍生下列值,並將其新增至媒體類型:

輸出型別

在輸出媒體類型上設定下列屬性。

屬性 描述 備註
MF_MT_MAJOR_TYPE 主要類型。 必須 MFMediaType_Audio
MF_MT_SUBTYPE 音訊子類型。 必須 MFAudioFormat_AAC
MF_MT_AUDIO_BITS_PER_SAMPLE 每個範例的位數。 必須是 16。
MF_MT_AUDIO_SAMPLES_PER_SECOND 每秒範例數。 必須符合輸入類型。
MF_MT_AUDIO_NUM_CHANNELS 通道數目。 必須符合輸入類型。
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 編碼 AAC 資料流程的位元速率,每秒以位元組為單位。 支援下列值:
  • 12000
  • 16000
  • 20000
  • 24000
如果使用 6 個通道,請將這些值乘以 6。
單聲道和身歷聲的預設值為 12000 (96 Kbps) 。 6 個通道的預設值為 60000。
MF_MT_AAC_PAYLOAD_TYPE AAC 承載類型。 選擇性。 如果設定,該值必須是零,表示資料流程只包含raw_data_block元素。
選擇性。 如果未設定屬性,則預設值為零,表示資料流程只包含原始 AAC) (元素raw_data_block。
在 Windows 7 中,如果設定這個屬性,此值必須是零。
從 Windows 8 開始,此值可以是 0 (原始 AAC) 或 1 (ADTS AAC) 。
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION AAC 音訊設定檔和層級。 選擇性。 支援下列值:
  • 0x29 (預設)
  • 0x2A
  • 0x2B
  • 0x2C
  • 0x2E
  • 0x2F
  • 0x30
  • 0x31
  • 0x32
  • 0x33

下表列出可用於 MF_MT_AAC_PROFILE_LEVEL_INDICATION 屬性的值。

MF_MT_AAC_PROFILE_LEVEL_INDICATION值 設定檔
0x29 AAC 設定檔 L2
0x2A AAC 設定檔 L4
0x2B AAC 設定檔 L5
0x2C 高效能 v1 AAC 設定檔 L2
0x2E 高效能 v1 AAC 設定檔 L4
0x2F 高效能 v1 AAC 設定檔 L5
0x30 高效能 v2 AAC 設定檔 L2
0x31 高效能 v2 AAC 設定檔 L3
0x32 高效能 v2 AAC 設定檔 L4
0x33 高效能 v2 AAC 設定檔 L5

設定輸出類型之後,AAC 編碼器會藉由新增 MF_MT_USER_DATA 屬性來更新類型。 這個屬性包含HEAACWAVEINFO結構的部分,該結構出現在在Wfx成員) 之後的WAVEATEX結構 (之後。 後面接著 AudioSpecificConfig () 資料,如 ISO/IEC 14496-3 所定義。

每個輸出範例都包含一個沒有標頭的壓縮 AAC 框架。 此格式相當於 MPEG-2 所定義的 raw_data_block () 元素。 如果存在於輸出類型中, MF_MT_AAC_PAYLOAD_TYPE 屬性必須設定為零,才能指出此承載類型。

每個輸出範例都包含一個對應至 1024 PCM 範例的壓縮 AAC 框架。 例如,在 48 Khz 取樣率中,一個壓縮框架的持續時間是 21.33 毫秒。

如果 MF_MT_AAC_PAYLOAD_TYPE 為零 (預設值) ,則每個輸出範例都包含 ISO/IEC 13818-7 所定義的一個raw_data_block () 元素。

範例媒體類型

以下是從 44.1-kHz 編碼所需的媒體類型範例,160-Kbps 立體音訊到原始 AAC

輸入媒體類型:

屬性
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_PCM
MF_MT_AUDIO_BITS_PER_SAMPLE 16
MF_MT_AUDIO_SAMPLES_PER_SECOND 44100
MF_MT_AUDIO_NUM_CHANNELS 2
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 176400 (選擇性)
MF_MT_AUDIO_BLOCK_ALIGNMENT 4 (選擇性)
MF_MT_ALL_SAMPLES_INDEPENDENT 1 (選擇性)
MF_MT_AVG_BITRATE 1411200 (選擇性)
MF_MT_FIXED_SIZE_SAMPLES 1 (選擇性)

輸出媒體類型:

屬性
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_AAC
MF_MT_AUDIO_BITS_PER_SAMPLE 16
MF_MT_AUDIO_SAMPLES_PER_SECOND 44100
MF_MT_AUDIO_NUM_CHANNELS 2
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 20000
MF_MT_AAC_PAYLOAD_TYPE 0 (選擇性)
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 0x29 (選擇性)
MF_MT_AUDIO_BLOCK_ALIGNMENT 1 (選擇性)
MF_MT_ALL_SAMPLES_INDEPENDENT 0 (選擇性)
MF_MT_AVG_BITRATE 160000 (選擇性)
MF_MT_USER_DATA {0x00、0x00、0x29、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x12、0x10} (選擇性)

備註

在目前的實作中,每個輸入範例都必須有有效的時間和持續時間。 若要設定範例時間,請呼叫 IMFSample::SetSampleTime。 若要設定範例持續時間,請呼叫 IMFSample::SetSampleDuration

如果未設定取樣時間,編碼器的 IMFTransform::P rocessInput 方法會傳回 MF_E_NO_SAMPLE_TIMESTAMP。 如果未設定範例持續時間, ProcessInput 方法會傳回 MF_E_NO_SAMPLE_DURATION

範例持續時間的計算方式如下:

LONGLONG hnsSampleDuration = 
    ( nAudioSamplesPerChannel * (LONGLONG)10000000 )/nSamplesPerSec;

其中 nAudioSamplesPerChannel 是輸入緩衝區中每個通道的 PCM 音訊樣本數目, 而 nSamplesPerSec 是每秒樣本的取樣率。

注意

由於目前實作中的 Bug,如果範例持續時間設定為零, ProcessInput 呼叫會成功,但對 IMFTransform::P rocessOutput 的後續呼叫將會擲回零除例外狀況。 若要避免此錯誤,請在每個輸入範例上設定有效的非零持續時間。

規格需求

需求
最低支援的用戶端
Windows 7 [僅限傳統型應用程式]
最低支援的伺服器
Windows Server 2008 R2 [僅限傳統型應用程式]
DLL
Mfaacenc.dll

另請參閱

編解碼器物件

AAC 解碼器

AAC 媒體類型

音訊媒體類型

媒體基礎中的 MPEG-4 支援

媒體基礎中支援的媒體格式