Bagikan melalui


Mengatur Properti di Objek ContentInfo

Saat membuat file ASF, objek ContentInfo perlu mengetahui karakteristik konten media sehingga berbagai objek header diisi dengan nilai yang benar.

Pengaturan konfigurasi konten adalah pengaturan streaming, yang terkandung dalam profil dan menentukan pengidentifikasi aliran, jenis media, dan parameter wadah bocor untuk sink media. Setelah profil diatur pada objek ContentInfo dengan memanggil IMFASFContentInfo::SetProfile, nilai-nilai ini tercermin dalam Objek Header ASF yang dihasilkan. Untuk informasi tentang pengaturan ini, lihat Membuat dan Mengonfigurasi Aliran ASF.

Mengonfigurasi Objek ContentInfo dengan Pengaturan Encoder

Data audio atau video media digital rumit dan membutuhkan memori dalam jumlah besar. Dalam sebagian besar keadaan, audio dan video dikompresi dengan menggunakan encoder sebelum ditambahkan ke file ASF. Di Media Foundation, encoder diimplementasikan sebagai Media Foundation Transforms (MFTs) dengan satu input dan satu output. Anda harus memilih jenis media output tergantung pada jenis media aliran input dan jenis pengodean yang Anda pilih untuk memadatkan aliran.

Sebelum sesi pengodean, encoder harus dikonfigurasi dengan mengatur properti yang relevan tergantung pada jenis pengodean.

Setelah mengonfigurasi encoder, Anda harus mengonfigurasi objek ContentInfo dengan nilai encoder karena ASF Multiplexer dan ASF Media Sink, yang diinisialisasi dengan objek ContentInfo yang diisi, gunakan pengaturan seperti nilai wadah bocor, untuk menghasilkan paket data ASF. Nilai tidak disimpan di Objek Header ASF akhir. Pengaturan pengodean diekspos sebagai properti. Untuk mengonfigurasi objek ContentInfo dengan properti encoder, lakukan hal berikut:

  1. Dapatkan penunjuk ke penyimpanan properti encoder dengan mengkueri encoder (antarmuka IMFTransform ) langsung untuk antarmuka IPropertyStore .
  2. Panggil IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Untuk mengatur properti khusus aliran, tentukan pengidentifikasi aliran dalam parameter wStreamNumber ; untuk properti tingkat file, lewati 0. Parameter ppIStore menerima pointer ke antarmuka IPropertyStore . Penyimpanan properti yang diterima kosong.
  3. Panggil IPropertyStore::GetValue pada encoder dan dapatkan nilai properti dengan menentukan konstanta kunci properti. Untuk daftar lengkap properti pengodean, lihat Referensi Pemrograman Codec.
  4. Panggil IPropertyStore::SetValue pada objek ContentInfo untuk mengatur properti yang diperlukan di penyimpanan properti.
  5. Ulangi langkah 3 dan 4 untuk setiap properti yang ingin Anda atur.

Sink media ASF dapat dibuat dengan menggunakan objek aktivasi dengan memanggil MFCreateASFMediaSinkActivate. Objek sink media baru dikonfigurasi berdasarkan pengaturan khusus sink media yang dapat diatur di penyimpanan properti objek ContentInfo. Tabel berikut ini memperlihatkan konstanta properti sink media ASF.

Properti Deskripsi
MFPKEY_ASFMEDIASINK_BASE_SENDTIME Waktu pengiriman menunjukkan kapan payload di dalam wadah bocor akan dirilis. Nilai properti ini menunjukkan waktu pengiriman pertama. Multiplexer menggunakan nilai ini untuk menghitung waktu pengiriman berikutnya untuk paket yang dihasilkan dan memastikan bahwa data mengalir terus melalui wadah bocor.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE Nilai BOOL ini menunjukkan apakah multiplexer perlu menyesuaikan laju bit secara otomatis untuk memastikan bahwa data tidak meluapkan wadah bocor.
MFPKEY_ASFMEDIASINK_DRMACTION Ini menunjukkan tindakan DRM sink media ASF untuk pembuatan file. Dalam rilis ini, hanya transkode DRM yang didukung.
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET Properti ini harus diatur ketika encoder memutuskan jendela buffer dan laju bit mana yang akan digunakan. Untuk mengatur nilai-nilai ini, gunakan antarmuka IWMCodecLeakyBucket . Ini harus diatur untuk setiap aliran dalam file ASF.

 

Menulis Objek Header ASF untuk File Baru