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.
Tematy pokrewne
-
obiektu ASF ContentInfo