ASF 헤더 개체에서 정보 가져오기
ASF 헤더 정보는 미디어 파일의 ASF 헤더 개체에 저장됩니다. Media Foundation은 헤더 개체와 함께 사용할 ASF ContentInfo 개체를 제공합니다. 애플리케이션이 기존 파일의 헤더 정보를 읽으려면 채워진 ContentInfo 개체가 필요합니다. 이는 IMFASFContentInfo::P arseHeader를 호출하여 수행됩니다. 구문 분석이 성공적으로 완료되면 Media Foundation에서 내부적으로 유지 관리하는 파일에 대한 ASF 라이브러리가 다양한 헤더 개체의 헤더 정보로 채워집니다. 이러한 속성 중 일부는 프레젠테이션 설명자, 스트림 설명자, 프로필 및 메타데이터 속성의 특성을 통해 검색할 수 있는 애플리케이션에 노출됩니다.
특성의 전체 목록은 ASF 헤더 개체에 대한 Media Foundation 특성을 참조하세요.
프레젠테이션 설명자에서 헤더 정보 검색
프레젠테이션 설명자 개체에는 특정 미디어 원본(이 경우 ASF 미디어 원본)에 대한 설명이 포함됩니다. ParseHeader 호출이 성공적으로 완료되면 Header 개체의 파일 수준 정보가 프레젠테이션 설명자에 특성으로 저장됩니다. 프레젠테이션 설명자를 만들려면 IMFASFContentInfo::GeneratePresentationDescriptor를 호출합니다. 이 메서드는 ContentInfo 개체와 연결된 ASF 파일에 대한 이러한 특성을 포함하는 채워진 프레젠테이션 설명자 개체에 대한 포인터를 반환합니다. 특정 특성에 대한 값을 얻으려면 프레젠테이션 설명자에서 IMFAttributes::Getxxx 메서드를 호출하고 MF_PD_ASF_xxx 특성을 지정합니다.
다음 예제 코드는 ContentInfo 개체로 지정된 ASF 파일의 재생 기간을 검색합니다.
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;
}
일반적으로 프레젠테이션 설명자에 대한 자세한 내용은 프레젠테이션 설명자를 참조하세요.
프레젠테이션 설명자 특성의 전체 집합은 프레젠테이션 설명자 특성을 참조하세요.
스트림 설명자에서 헤더 정보 검색
스트림 설명자 개체는 IMFStreamDescriptor 인터페이스를 노출하고 파일의 스트림 특성을 설명합니다. ASF 콘텐츠의 프레젠테이션 설명자에는 Header 개체에 나열된 스트림을 나타내는 하나 이상의 스트림 설명자가 포함되어 있습니다. IMFASFContentInfo::GeneratePresentationDescriptor에 대한 호출이 성공적으로 완료되면 기본 스트림 설명자가 다양한 헤더 개체의 스트림 수준 정보로 채워집니다. ASF 스트림에 대한 스트림 설명자를 얻으려면 ContentInfo 개체에서 생성된 프레젠테이션 설명자에서 IMFPresentationDescriptor::GetStreamDescriptorByIndex 를 호출합니다.
일부 스트림 속성은 스트림 설명자에 특성으로 설정됩니다. 스트림 설명자에서 IMFAttributes::Getxxx 메서드를 호출하고 MF_SD_ASF_xxx 특성을 지정합니다.
스트림 설명자 특성의 전체 집합은 스트림 설명자 특성에 나열된 "ASF 특정 스트림 설명자" 특성을 참조하세요.
프로필 개체에서 헤더 정보 검색
ASF 프로필 개체는 스트림 설명자 외에도 스트림 속성에 대해서도 설명합니다. 기존 ASF 파일의 프로필을 얻으려면 IMFASFContentInfo::GetProfile을 호출합니다. 이 메서드에서 반환된 ASF 프로필 개체에는 MF_PD_ASF_xxx 특성이 포함되지 않습니다. 이러한 특성은 MFCreateASFProfileFromPresentationDescriptor 를 호출하여 프레젠테이션 설명자에서 프로필 개체를 생성한 후에만 애플리케이션에서 사용할 수 있습니다. 프로필을 사용하여 상호 제외 및 스트림 우선 순위 지정 개체에 대한 포인터를 가져올 수 있습니다.
프로필 개체에 대한 자세한 내용은 ASF 프로필을 참조하세요.
헤더 개체에서 메타데이터 검색
ASF 파일에는 파일 인코딩 중에 설정된 여러 메타데이터 속성이 포함될 수 있습니다. 애플리케이션은 ContentInfo 개체를 사용하여 이러한 속성을 열거할 수 있습니다. VBR(가변 비트 전송률) 정보와 같은 이러한 속성 중 일부는 프레젠테이션 설명자, 스트림 설명자 및 미디어 파일의 미디어 형식에 대한 특성을 통해 애플리케이션에서 사용할 수 있습니다. 이러한 특성은 ParseHeader 호출을 통해 초기화하는 동안 ContentInfo 개체에 설정됩니다.
관련 항목