Bagikan melalui


AAC Encoder

Encoder AAC Microsoft Media Foundation adalah Transformasi Yayasan Media yang mengodekan profil Advanced Audio Coding (AAC) Low Complexity (LC), sebagaimana didefinisikan oleh ISO/IEC 13818-7 (MPEG-2 Audio Part 7) .

Encoder AAC tidak mendukung pengodean ke profil AAC lainnya, seperti Main, SSR, atau LTP.

Pengidentifikasi Kelas

Pengidentifikasi kelas (CLSID) dari encoder AAC CLSID_AACMFTEncoder, didefinisikan dalam file header wmcodecdsp.h.

Jenis Media

Encoder AAC mendukung jenis media berikut. Anda dapat mengatur jenis dalam jenis input urutan terlebih dahulu, atau jenis output terlebih dahulu.

Jenis Input

Atur atribut berikut pada jenis media input.

Atribut Deskripsi Keterangan
MF_MT_MAJOR_TYPE Jenis utama. Harus MFMediaType_Audio.
MF_MT_SUBTYPE Subtipe. Pasti MFAudioFormat_PCM.
MF_MT_AUDIO_BITS_PER_SAMPLE Bit per sampel. Harus 16.
MF_MT_AUDIO_SAMPLES_PER_SECOND Sampel per detik. Nilai berikut ini didukung:
  • 44100 (44,1 KHz)
  • 48000 (48 KHz)
MF_MT_AUDIO_NUM_CHANNELS Jumlah saluran. Harus 1 (mono) atau 2 (stereo), atau 6 (5,1). Catatan: Dukungan untuk 6 saluran audio diperkenalkan dengan Windows 10 dan tidak tersedia untuk versi Windows sebelumnya.

Setelah jenis input diatur, encoder memperoleh nilai berikut dan menambahkannya ke jenis media:

Jenis output

Atur atribut berikut pada jenis media output.

Atribut Deskripsi Keterangan
MF_MT_MAJOR_TYPE Jenis utama. Harus MFMediaType_Audio.
MF_MT_SUBTYPE Subjenis audio. Pasti MFAudioFormat_AAC.
MF_MT_AUDIO_BITS_PER_SAMPLE Bit per sampel. Harus 16.
MF_MT_AUDIO_SAMPLES_PER_SECOND Sampel per detik. Harus cocok dengan jenis input.
MF_MT_AUDIO_NUM_CHANNELS Jumlah saluran. Harus cocok dengan jenis input.
MF_MT_AUDIO_AVG_BYTES_PER_SECOND Laju bit aliran AAC yang dikodekan, dalam byte per detik. Nilai berikut ini didukung:
  • 12000
  • 16000
  • 20000
  • 24000
Jika menggunakan 6 saluran, kalikan nilai ini dengan 6.
Nilai default untuk mono dan stereo adalah 12000 (96 Kbps). Nilai default untuk 6 saluran adalah 60000.
MF_MT_AAC_PAYLOAD_TYPE Jenis payload AAC. Pilihan. Jika diatur, nilainya harus nol, menunjukkan bahwa aliran hanya berisi elemen raw_data_block.
Pilihan. Jika atribut tidak diatur, nilai defaultnya adalah nol, menunjukkan bahwa aliran hanya berisi elemen raw_data_block (AAC mentah).
Di Windows 7, jika atribut ini diatur, nilainya harus nol.
Mulai windows 8, nilainya bisa 0 (AAC mentah) atau 1 (ADTS AAC).
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Profil dan tingkat audio AAC. Pilihan. Nilai berikut ini didukung:
  • 0x29 (default)
  • 0x2A
  • 0x2B
  • 0x2C
  • 0x2E
  • 0x2F
  • 0x30
  • 0x31
  • 0x32
  • 0x33

Tabel berikut mencantumkan nilai yang bisa digunakan untuk atribut MF_MT_AAC_PROFILE_LEVEL_INDICATION.

nilai MF_MT_AAC_PROFILE_LEVEL_INDICATION Profil
0x29 Profil AAC L2
0x2A Profil AAC L4
0x2B Profil AAC L5
0x2C Profil AAC L2 Efisiensi Tinggi v1
0x2E Profil AAC V1 Efisiensi Tinggi L4
0x2F Efisiensi Tinggi v1 Profil AAC L5
0x30 Profil AAC V2 Efisiensi Tinggi L2
0x31 Profil AAC V2 Efisiensi Tinggi L3
0x32 Profil AAC V2 Efisiensi Tinggi L4
0x33 Profil AAC V2 Efisiensi Tinggi L5

Setelah jenis output diatur, encoder AAC memperbarui jenis dengan menambahkan atribut MF_MT_USER_DATA . Atribut ini berisi bagian dari struktur HEAACWAVEINFO yang muncul setelah struktur WAVEFORMATEX (yaitu, setelah anggota wfx ). Ini diikuti oleh data AudioSpecificConfig(), seperti yang didefinisikan oleh ISO/IEC 14496-3.

Setiap sampel output berisi satu bingkai AAC terkompresi tanpa header. Format ini setara dengan elemen raw_data_block() yang ditentukan oleh MPEG-2. Atribut MF_MT_AAC_PAYLOAD_TYPE , jika ada dalam jenis output, harus diatur ke nol untuk menunjukkan jenis payload ini.

Setiap sampel output berisi satu bingkai AAC terkompresi yang sesuai dengan 1024 sampel PCM. Misalnya, pada laju pengambilan sampel 48 Khz, durasi satu bingkai terkompresi adalah 21,33 msec.

Jika MF_MT_AAC_PAYLOAD_TYPE adalah nol (nilai default), setiap sampel output berisi satu elemen raw_data_block() seperti yang ditentukan oleh ISO/IEC 13818-7.

Contoh Jenis Media

Berikut adalah contoh jenis media yang diperlukan untuk mengodekan dari 44,1-kHz, audio stereo 160-Kbps ke AAC mentah

Jenis media input:

Atribut Nilai
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 (opsional)
MF_MT_AUDIO_BLOCK_ALIGNMENT 4 (opsional)
MF_MT_ALL_SAMPLES_INDEPENDENT 1 (opsional)
MF_MT_AVG_BITRATE 1411200 (opsional)
MF_MT_FIXED_SIZE_SAMPLES 1 (opsional)

Jenis media output:

Atribut Nilai
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 (opsional)
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 0x29 (opsional)
MF_MT_AUDIO_BLOCK_ALIGNMENT 1 (opsional)
MF_MT_ALL_SAMPLES_INDEPENDENT 0 (opsional)
MF_MT_AVG_BITRATE 160000 (opsional)
MF_MT_USER_DATA {0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10} (opsional)

Keterangan

Dalam implementasi saat ini, setiap sampel input harus memiliki waktu dan durasi yang valid. Untuk mengatur waktu sampel, panggil IMFSample::SetSampleTime. Untuk mengatur durasi sampel, panggil IMFSample::SetSampleDuration.

Jika waktu sampel tidak diatur, metode IMFTransform::P rocessInput encoder mengembalikan MF_E_NO_SAMPLE_TIMESTAMP. Jika durasi sampel tidak diatur, metode ProcessInput mengembalikan MF_E_NO_SAMPLE_DURATION.

Durasi sampel dapat dihitung sebagai berikut:

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

di mana nAudioSamplesPerChannel adalah jumlah sampel audio PCM per saluran dalam buffer input, dan nSamplesPerSec adalah laju pengambilan sampel, dalam sampel per detik.

Catatan

Karena bug dalam implementasi saat ini, jika durasi sampel diatur ke nol, panggilan ProcessInput berhasil, tetapi panggilan berikutnya ke IMFTransform::P rocessOutput akan memberikan pengecualian bagi-demi-nol. Untuk menghindari kesalahan ini, atur durasi bukan nol yang valid pada setiap sampel input.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2008 R2 [hanya aplikasi desktop]
DLL
Mfaacenc.dll

Lihat juga

Objek Codec

Dekoder AAC

Jenis Media AAC

Tipe Media Audio

Dukungan MPEG-4 di Media Foundation

Format Media yang Didukung di Media Foundation