Udostępnij za pośrednictwem


Pobieranie informacji z obiektów nagłówka ASF

Informacje nagłówka ASF są przechowywane w obiektach nagłówka ASF pliku multimedialnego. Program Media Foundation udostępnia obiekt ContentInfo ASF do pracy z obiektem nagłówka. Wypełniony obiekt ContentInfo jest wymagany, aby aplikacja odczytywała informacje nagłówkowe istniejącego pliku. Można to osiągnąć, wywołując IMFASFContentInfo::ParseHeader. Jeśli analizowanie zakończy się pomyślnie, biblioteka ASF pliku, która jest utrzymywana wewnętrznie przez program Media Foundation, zostanie wypełniona informacjami nagłówka z różnych obiektów nagłówka. Niektóre z tych właściwości są widoczne dla aplikacji, które aplikacja może pobrać za pomocą atrybutów deskryptora prezentacji, deskryptora strumienia, profilu i właściwości metadanych.

Aby uzyskać pełną listę atrybutów, zobacz Media Foundation Attributes for ASF Header Objects.

Pobieranie informacji nagłówka z deskryptora prezentacji

Obiekt deskryptora prezentacji zawiera opis określonego źródła multimediów, w tym przypadku źródło multimediów ASF. Jeśli wywołanie ParseHeader zakończy się pomyślnie, informacje na poziomie pliku z obiektu nagłówka są przechowywane jako atrybuty deskryptora prezentacji. Aby utworzyć deskryptor prezentacji, wywołaj metodę IMFASFContentInfo::GeneratePresentationDescriptor. Ta metoda zwraca wskaźnik do wypełnionego obiektu deskryptora prezentacji zawierającego te atrybuty dla pliku ASF skojarzonego z obiektem ContentInfo. Aby uzyskać wartości dla określonych atrybutów, wywołaj metodę IMFAttributes::Getxxx w deskryptorze prezentacji i określ atrybut MF_PD_ASF_xxx.

Poniższy przykładowy kod pobiera czas trwania odtwarzania pliku ASF określony przez obiekt 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;
}

Aby uzyskać więcej informacji na temat deskryptorów prezentacji w ogóle, zobacz Deskryptory prezentacji.

Aby uzyskać pełny zestaw atrybutów deskryptora prezentacji, zobacz Atrybuty deskryptora prezentacji.

Pozyskiwanie informacji nagłówka z deskryptora strumienia

Obiekt deskryptora strumienia uwidacznia interfejs IMFStreamDescriptor i opisuje cechy strumieni w pliku. Deskryptor prezentacji dla zawartości ASF zawiera co najmniej jeden deskryptor strumienia reprezentujący strumienie wymienione w obiekcie nagłówka. Po pomyślnym zakończeniu wywołania metody IMFASFContentInfo::GeneratePresentationDescriptor podstawowe deskryptory strumienia są wypełniane informacjami na poziomie strumienia z różnych obiektów nagłówka. Aby uzyskać deskryptor strumienia dla strumienia ASF, wywołaj metodę IMFPresentationDescriptor::GetStreamDescriptorByIndex na deskryptorze prezentacji wygenerowanym na podstawie obiektu ContentInfo.

Niektóre właściwości strumienia są ustawiane jako atrybuty deskryptorów strumienia. Wywołaj metody IMFAttributes::Getxxx w deskryptorze strumienia i określ atrybut MF_SD_ASF_xxx.

Aby uzyskać pełny zestaw atrybutów deskryptora strumienia, zobacz "atrybuty deskryptora strumieniaASF-Specific" wymienione w Atrybuty deskryptora strumienia.

Pobieranie informacji nagłówka z obiektu profilu

Oprócz deskryptorów strumienia obiekt profilu ASF opisuje również właściwości strumienia. Aby uzyskać profil istniejącego pliku ASF, wywołaj IMFASFContentInfo::GetProfile. Obiekt profilu ASF zwracany przez tę metodę nie zawiera żadnych z atrybutów MF_PD_ASF_xxx. Te atrybuty są dostępne dla aplikacji dopiero po wywołaniu MFCreateASFProfileFromPresentationDescriptor w celu wygenerowania obiektu profilu na podstawie deskryptora prezentacji. Profil służy do uzyskiwania wskazówek do obiektów wzajemnego wykluczania i priorytetyzowania strumieni.

Aby uzyskać informacje na temat obiektu profilu, zobacz profil ASF .

Pobieranie metadanych z obiektów nagłówka

Plik ASF może zawierać kilka właściwości metadanych ustawionych podczas kodowania pliku. Aplikacja może wyliczyć te właściwości za pomocą obiektu ContentInfo. Niektóre z tych właściwości, takie jak informacje o zmiennej szybkości transmisji bitów (VBR), są dostępne dla aplikacji za pośrednictwem atrybutów deskryptora prezentacji, deskryptorów strumienia i typów multimediów dla pliku multimedialnego. Te atrybuty są ustawiane na obiekcie ContentInfo podczas inicjowania za pośrednictwem wywołania ParseHeader.

obiektu ASF ContentInfo