Bagikan melalui


Pengode Video H.264

Encoder video H.264 Microsoft Media Foundation adalah transformasi Media Foundation yang mendukung profil H.264 berikut:

  • Profil Garis Besar
  • Profil Utama
  • Profil tinggi (memerlukan Windows 8)

Encoder video H.264 mengekspos antarmuka berikut:

Jenis Input

Jenis media input harus memiliki salah satu subjenis berikut:

  • MFVideoFormat_I420
  • MFVideoFormat_IYUV
  • MFVideoFormat_NV12
  • MFVideoFormat_YUY2
  • MFVideoFormat_YV12

Untuk informasi selengkapnya tentang subjenis ini, lihat GUID Subjenis Video.

Jenis output harus diatur sebelum jenis input. Hingga jenis output diatur, metode IMFTransform::SetInputType encoder mengembalikan MF_E_TRANSFORM_TYPE_NOT_SET.

Jenis output

Encoder mendukung subjenis output tunggal:

  • MFVideoFormat_H264

Atur atribut berikut pada jenis media output.

Atribut Deskripsi
MF_MT_MAJOR_TYPE Jenis utama. Pasti MFMediaType_Video.
MF_MT_SUBTYPE Subjenis video. Pasti MFVideoFormat_H264.
MF_MT_AVG_BITRATE Laju bit yang dikodekan rata-rata, dalam bit per detik. Harus lebih besar dari nol.
MF_MT_FRAME_RATE Kecepatan bingkai.
MF_MT_FRAME_SIZE Ukuran bingkai.
MF_MT_INTERLACE_MODE Mode interlace.
MF_MT_MPEG2_PROFILE Profil pengodean H.264.
Nilai yang didukung adalah:
  • eAVEncH264VProfile_Base (default)
  • eAVEncH264VProfile_Main
  • eAVEncH264VProfile_High (memerlukan Windows 8)
MF_MT_MPEG2_LEVEL Pilihan. Menentukan tingkat pengodean H.264.
Nilai defaultnya adalah –1, menunjukkan bahwa encoder akan memilih tingkat pengodean.
Disarankan untuk tidak mengatur tingkat dalam jenis media, dan memungkinkan encoder untuk memilih tingkat. Encoder dapat memperoleh tingkat yang tepat untuk streaming video tertentu, dengan mempertimbangkan batasan format dan karakteristik video. Untuk informasi selengkapnya tentang batasan profil dan tingkat, lihat Annex A dari ITU-T H.264.
MF_MT_PIXEL_ASPECT_RATIO Pilihan. Menentukan rasio aspek piksel. Nilai defaultnya adalah 1:1.

 

Setelah jenis output diatur, encoder video memperbarui jenis dengan menambahkan atribut MF_MT_MPEG_SEQUENCE_HEADER . Atribut ini berisi header urutan.

Properti Codec

Encoder H.264 mengimplementasikan antarmuka ICodecAPI untuk mengatur parameter pengodean. Ini mendukung properti berikut.

Untuk persyaratan codec untuk sertifikasi encoder HCK, lihat bagian Encoder Perangkat Keras Bersertifikat di bawah ini.

Properti berikut ini didukung di Windows 7.

Properti Deskripsi
CODECAPI_AVEncCommonRateControlMode Mengatur mode kontrol laju. Lihat Keterangan. Mode default adalah laju bit variabel (VBR) yang tidak dibatasi.
CODECAPI_AVEncCommonQuality Mengatur tingkat kualitas. Properti ini berlaku ketika mode kontrol laju adalah VBR berbasis kualitas (eAVEncCommonRateControlMode_Quality). Rentang yang valid adalah 1–100. Nilai defaultnya adalah 70.
Untuk mengatur parameter ini, atur properti sebelum memanggil IMFTransform::SetOutputType.
Untuk mengatur parameter ini di Windows 7, atur properti sebelum memanggil IMFTransform::SetOutputType. Encoder mengabaikan perubahan setelah jenis output diatur.
Dalam Windows 8, properti ini dapat diatur kapan saja selama pengodean. Perubahan diterapkan mulai dari bingkai input berikutnya.
Secara internal, encoder mengonversi properti ini menjadi nilai AVEncVideoEncodeQP .

 

Properti berikut memerlukan Windows 8.

Properti Deskripsi
CODECAPI_AVEncAdaptiveMode Mengatur mode pengodean adaptif. Encoder H.264 mendukung mode berikut dalam Windows 8:
  • eAVEncAdaptiveMode_None. Tidak ada pengodean adaptif. (Default.)
  • eAVEncAdaptiveMode_FrameRate. Ubah kecepatan bingkai secara adaptif.

CODECAPI_AVEncCommonBufferSize Mengatur ukuran buffer, dalam byte, untuk pengodean laju bit konstan (CBR).
Rentang yang valid adalah [1 ... 2³²–1].
Membutuhkan Windows 8.
CODECAPI_AVEncCommonMaxBitRate Untuk pengodean VBR yang dibatasi, menentukan tingkat di mana "wadah bocor" dikosongkan, dalam bit per detik. Properti ini berlaku ketika mode kontrol laju eAVEncCommonRateControlMode_PeakConstrainedVBR.
Rentang yang valid adalah [1 ... 2³²–1].
CODECAPI_AVEncCommonMeanBitRate Mengatur laju bit rata-rata untuk aliran bit yang dikodekan, dalam bit per detik. Properti ini diabaikan jika mode kontrol laju eAVEncCommonRateControlMode_Quality.
Rentang yang valid adalah [1 ... 2³²–1].
Dalam mode CBR dan VBR yang tidak dibatasi, laju bit rata-rata menentukan ukuran akhir file. Dalam mode CBR, laju bit rata-rata juga merupakan laju di mana bit terkompresi dikosongkan dari "wadah bocor." (Untuk informasi selengkapnya, lihat Model Buffer Wadah Bocor.)
Di Windows 7, laju bit rata-rata ditentukan oleh atribut MF_MT_AVG_BITRATE pada jenis media.
Dalam Windows 8, Anda dapat mengatur laju bit rata-rata menggunakan atribut MF_MT_AVG_BITRATE atau properti CODECAPI_AVEncCommonMeanBitRate. Jika keduanya diatur, CODECAPI_AVEncCommonMeanBitRate mengambil alih. Dalam Windows 8, Anda dapat mengatur laju bit rata-rata selama pengodean. Jika laju bit berubah, encoder menggunakan pengodean adaptif.
CODECAPI_AVEncCommonQualityVsSpeed Mengatur tradeoff kualitas/kecepatan. Rentang yang valid:
  • 0–33: Kompleksitas rendah
  • 34–66: Kompleksitas sedang (default)
  • 67–100: Kompleksitas tinggi

Nilai ini memengaruhi bagaimana encoder melakukan berbagai operasi pengodean, seperti kompensasi gerakan. Pada tingkat kompleksitas yang lebih tinggi, encoder berjalan lebih lambat tetapi menghasilkan kualitas yang lebih baik pada laju bit yang sama.
CODECAPI_AVEncH264CABACEnable Mengaktifkan atau menonaktifkan CABAC (pengodean aritmatika biner adaptif konteks) untuk pengodean entropi H.264. Nilai defaultnya adalah VARIANT_FALSE.
CABAC tidak digunakan untuk profil Garis Besar.
CODECAPI_AVEncH264SPSID Menetapkan nilai seq_parameter_set_id di unit SPS NAL dari bitstream H.264.
CODECAPI_AVEncMPVDefaultBPictureCount Mengatur jumlah maksimum bingkai B berturut-turut dalam bitstream output. Nilai yang valid adalah:
  • 0: Jangan gunakan bingkai B (default).
  • 1: Gunakan satu bingkai B.
  • 2: Gunakan dua bingkai B.
Untuk mengatur parameter ini, atur properti sebelum memanggil IMFTransform::SetOutputType.
Untuk profil Garis Besar, jumlah bingkai B selalu nol. Encoder akan mengambil alih nilai bukan nol.
Untuk profil H.264 lainnya, jika properti ini bukan nol, pola pengodeannya adalah IBBPBBP, di mana jumlah maksimum bingkai B berturut-turut sama dengan CODECAPI_AVEncMPVDefaultBPictureCount.
CODECAPI_AVEncMPVGOPSize Mengatur jumlah gambar dari satu header GOP ke header berikutnya, termasuk jangkar utama tetapi bukan yang berikut ini.
Rentang yang valid adalah [0 ... 2³²–1]. Jika nol, encoder memilih ukuran GOP. Nilai defaultnya adalah nol.
CODECAPI_AVEncNumWorkerThreads Mengatur jumlah utas pekerja yang digunakan oleh encoder.
Rentang yang valid adalah 0–16. Jika nol, encoder memilih jumlah utas.
CODECAPI_AVEncVideoContentType Menunjukkan jenis konten video.
CODECAPI_AVEncVideoEncodeQP Rentang yang valid: 16–51. Nilai defaultnya adalah 24.
Properti ini berlaku ketika mode kontrol laju eAVEncCommonRateControlMode_Quality.
Properti ini mengonfigurasi pengaturan pengodean yang sama dengan AVEncCommonQuality. Namun, AVEncVideoEncodeQP memungkinkan aplikasi menentukan nilai QP secara langsung. Jika kedua properti diatur, AVEncVideoEncodeQP akan mengambil alih.
Nilai default 24 sesuai dengan nilai default 70 untuk pengaturan AVEncCommonQuality .
CODECAPI_AVEncVideoForceKeyFrame Memaksa encoder untuk membuat kode bingkai berikutnya sebagai bingkai kunci.
CODECAPI_AVEncVideoMinQP Rentang valid: 0–51. Nilai default adalah 0.
Properti ini berlaku untuk semua mode kontrol laju. Encoder tidak boleh menghasilkan nilai QP yang lebih rendah dari apa yang ditentukan oleh properti CODECAPI_AVEncVideoMinQP .
CODECAPI_AVLowLatencyMode Mengaktifkan atau menonaktifkan mode latensi rendah. Lihat "Multithreading" di bagian Keterangan.

 

Keterangan

Encoder mendukung mode kontrol laju berikut.

Mode Terus-menerus Deskripsi
Laju bit konstan (CBR) eAVEncCommonRateControlMode_CBR Encoder mencoba mencapai laju bit yang konstan, menggunakan model "wadah bocor". Laju bit target diberikan oleh properti CODECAPI_AVEncCommonMeanBitRate .
Membutuhkan Windows 8.
Laju bit variabel yang dibatasi (VBR) eAVEncCommonRateControlMode_PeakConstrainedVBR Encoder menggunakan model "wadah bocor" dengan laju bit puncak. Tingkat pengurasan untuk wadah bocor diberikan oleh properti CODECAPI_AVEncCommonMaxBitRate .
Membutuhkan Windows 8.
Laju bit variabel berbasis kualitas (VBR) eAVEncCommonRateControlMode_Quality Encoder mencoba mencapai tingkat kualitas yang konstan, yang diberikan oleh properti AVEncCommonQuality .
VBR tidak dibatasi eAVEncCommonRateControlMode_UnconstrainedVBR Encoder mencoba mencapai laju bit target yang diberikan oleh atribut MF_MT_AVG_BITRATE dalam jenis media output. Ini adalah mode default.

 

Mode CBR dan VBR yang dibatasi memerlukan Windows 8.

Dalam Windows 8, encoder mengatur atribut berikut pada sampel output:

Catatan

Versi dokumentasi sebelumnya salah menyatakan bahwa encoder didukung pada Windows Server 2008 R2.

 

Multiutas

Dalam Windows 8, encoder mendukung dua mode pengodean:

  • Pengodean ilis. Dalam mode ini, irisan dikodekan secara paralel. Setiap ikatan dikodekan pada utas yang berbeda. Mode ini memiliki latensi rendah, karena satu gambar dikodekan secara paralel. Namun, pendekatan ini tidak menskalakan karena jumlah inti meningkat, karena jumlah irisan dibatasi oleh jumlah baris makroblock dalam gambar input.
  • Pengodean multi-bingkai. Dalam mode ini, encoder menerima beberapa bingkai input dan mengodekannya secara paralel. Mode ini menskalakan lebih baik di lingkungan multicore, tetapi memperkenalkan lebih banyak latensi.

Encoder default untuk mengodekan, untuk meminimalkan latensi. Untuk mengaktifkan pengodean multi-bingkai, atur properti CODECAPI_AVLowLatencyMode ke VARIANT_FALSE.

Untuk mengatur jumlah utas pekerja yang digunakan oleh encoder, atur properti CODECAPI_AVEncNumWorkerThreads .

Di Windows 7, encoder selalu menggunakan pengodean ikatan.

Encoder Perangkat Keras Bersertifikat

Jika ada encoder perangkat keras bersertifikat, umumnya akan digunakan alih-alih encoder sistem kotak masuk untuk skenario terkait Media Foundation. Encoder bersertifikat diperlukan untuk mendukung sekumpulan properti ICodecAPI tertentu dan dapat secara opsional mendukung serangkaian properti lain. Proses sertifikasi harus menjamin bahwa properti yang diperlukan didukung dengan benar dan, jika properti opsional didukung, properti tersebut juga didukung dengan benar.

Berikut ini adalah sekumpulan properti ICodecAPI yang diperlukan dan opsional untuk encoder untuk meneruskan sertifikasi encoder HCK.

Properti ICodecAPI Windows 8 dan Windows 8.1 berikut diperlukan:

Properti ICodecAPI Windows 8.1 berikut bersifat opsional, tetapi diuji di HCK jika didukung.

Properti ICodecAPI Windows 8 dan Windows 8.1 berikut bersifat opsional, tetapi diuji di HCK jika didukung.

Properti ICodecAPI berikut bersifat opsional. Mereka tidak diuji di HCK.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung
Tidak ada yang didukung
DLL
Mfh264enc.dll

Lihat juga

Objek Codec

Dukungan MPEG-4 di Media Foundation

Format Media yang Didukung di Media Foundation

Tipe Media Video