Mendapatkan Informasi dari Objek Header ASF

Informasi header ASF disimpan di Objek Header ASF dari file media. Media Foundation menyediakan Objek ContentInfo ASF untuk bekerja dengan Objek Header. Objek ContentInfo yang diisi diperlukan agar aplikasi dapat membaca informasi header dari file yang ada. Hal ini dicapai dengan memanggil IMFASFContentInfo::P arseHeader. Jika penguraian berhasil diselesaikan, pustaka ASF untuk file, yang dikelola secara internal oleh Media Foundation, diisi dengan informasi header dari berbagai Objek Header. Beberapa properti ini diekspos ke aplikasi, yang dapat diambil melalui atribut pada deskriptor presentasi, deskriptor aliran, profil, dan properti metadata.

Untuk daftar lengkap atribut, lihat Atribut Media Foundation untuk Objek Header ASF.

Mengambil Informasi Header dari Deskriptor Presentasi

Objek deskriptor presentasi berisi deskripsi sumber media tertentu, dalam hal ini sumber media ASF. Jika panggilan ParseHeader berhasil diselesaikan, informasi tingkat file dari Objek Header disimpan sebagai atribut pada deskriptor presentasi. Untuk membuat deskriptor presentasi, panggil IMFASFContentInfo::GeneratePresentationDescriptor. Metode ini mengembalikan penunjuk ke objek deskriptor presentasi yang diisi yang berisi atribut ini untuk file ASF yang terkait dengan objek ContentInfo. Untuk mendapatkan nilai untuk atribut tertentu, panggil metode IMFAttributes::Getxxx pada deskriptor presentasi dan tentukan atribut MF_PD_ASF_xxx .

Contoh kode berikut mengambil durasi pemutaran file ASF, yang ditentukan oleh objek ContentInfo.

HRESULT GetPlayDuration(
    IMFASFContentInfo *pContentInfo,  // An initialized ContentInfo object. 
    UINT64 *pcbPlayDuration           // Receives the play duration.
    )
{
    IMFPresentationDescriptor* pPD = NULL;

    HRESULT hr = pContentInfo->GeneratePresentationDescriptor(&pPD);
    if (SUCCEEDED(hr))
    {
        hr = pPD->GetUINT64(MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION, pcbPlayDuration);
        pPD->Release();
    }
    return hr;
}

Untuk informasi selengkapnya tentang deskriptor presentasi secara umum, lihat Deskriptor Presentasi.

Untuk set lengkap atribut deskriptor presentasi, lihat Atribut Deskriptor Presentasi.

Mengambil Informasi Header dari Deskriptor Aliran

Objek deskriptor aliran mengekspos antarmuka IMFStreamDescriptor dan menjelaskan karakteristik aliran dalam file. Deskriptor presentasi untuk konten ASF berisi satu atau beberapa deskriptor aliran yang mewakili aliran yang tercantum dalam Objek Header. Setelah panggilan ke IMFASFContentInfo::GeneratePresentationDescriptor berhasil diselesaikan, deskriptor aliran yang mendasar diisi dengan informasi tingkat aliran dari berbagai Objek Header. Untuk mendapatkan deskriptor aliran untuk aliran ASF, panggil IMFPresentationDescriptor::GetStreamDescriptorByIndex pada deskriptor presentasi yang dihasilkan dari objek ContentInfo.

Beberapa properti aliran diatur sebagai atribut pada deskriptor aliran. Panggil metode IMFAttributes::Getxxx pada deskriptor aliran dan tentukan atribut MF_SD_ASF_xxx .

Untuk set lengkap atribut deskriptor aliran, lihat atribut "Deskriptor Aliran Khusus ASF" yang tercantum dalam Atribut Deskriptor Aliran.

Mengambil Informasi Header dari Objek Profil

Selain deskriptor aliran, objek profil ASF juga menjelaskan properti aliran. Untuk mendapatkan profil file ASF yang ada, panggil IMFASFContentInfo::GetProfile. Objek profil ASF yang dikembalikan oleh metode ini tidak menyertakan salah satu atribut MF_PD_ASF_xxx . Atribut ini tersedia untuk aplikasi hanya setelah memanggil MFCreateASFProfileFromPresentationDescriptor untuk menghasilkan objek profil dari deskriptor presentasi. Anda dapat menggunakan profil untuk mendapatkan penunjuk ke objek pengecualian timbal balik dan prioritas streaming.

Untuk informasi tentang objek profil, lihat Profil ASF .

Mengambil Metadata dari Objek Header

File ASF dapat berisi beberapa properti metadata yang diatur selama pengodean file. Aplikasi dapat menghitung properti ini dengan objek ContentInfo. Beberapa properti ini, seperti informasi laju bit variabel (VBR), tersedia untuk aplikasi melalui atribut pada deskriptor presentasi, deskriptor aliran, dan jenis media untuk file media. Atribut ini diatur pada objek ContentInfo selama inisialisasi melalui panggilan ParseHeader .

Objek ASF ContentInfo