다음을 통해 공유


프로젝트 파일 로드

[DirectShow 이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer, IMFMediaEngine, 그리고 Media Foundation오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. Microsoft는 가능하면 새로운 코드에서 MediaPlayer, IMFMediaEngineAudio/Video Capture를 DirectShow대신 Media Foundation 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

[이 API는 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다.]

프로젝트 파일을 로드하려면 XML 파서와 빈 타임라인이라는 두 가지 구성 요소가 필요합니다. XML 파서는 XML 프로젝트 파일을 읽고 파일에 정의된 각 개체를 만듭니다. 그런 다음, 타임라인에 개체를 삽입하고 기본 프레임 속도와 같은 타임라인 특성을 설정합니다. 다음 코드 예제에서는 파일을 로드합니다.

HRESULT         hr;
IAMTimeline     *pTL = NULL;
IXml2Dex        *pXML = NULL; 
hr = CoCreateInstance(CLSID_AMTimeline, NULL, CLSCTX_INPROC_SERVER, 
            IID_IAMTimeline, (void**)&pTL);
hr = CoCreateInstance(CLSID_Xml2Dex, NULL, CLSCTX_INPROC_SERVER, 
            IID_IXml2Dex, (void**)&pXML);
BSTR bstrFile = SysAllocStringLen(OLESTR("C:\\example.xtl"), 15);
hr = pXML->ReadXMLFile(pTL, bstrFile); 
SysFreeString(bstrFile);
pXML->Release();

파서는 프로젝트 파일을 로드하고 저장하는 메서드가 포함된 IXml2Dex 인터페이스를 노출합니다. 타임라인은 타임라인을 조작하고 새 타임라인 개체를 만드는 메서드를 포함하는 IAMTimeline 인터페이스를 노출합니다. 표시된 것처럼 CoCreateInstance 함수를 호출하여 각 구성 요소를 만듭니다. 새 인스턴스를 만들면 인터페이스에 대한 참조 수가 증가합니다. 완료 후에는 항상 인터페이스를 해제하여 메모리 누수를 방지하십시오. 이 예제에서는 IXml2Dex 대한 포인터가 더 이상 필요하지 않으므로 인터페이스를 해제할 수 있습니다. 타임라인을 미리 보려면 IAMTimeline 대한 포인터가 여전히 필요합니다.

IXml2Dex::ReadXMLFile 메서드는 지정된 파일을 읽고 타임라인을 파일에 정의된 개체로 채웁니다. 파일 이름은 BSTR 값을 사용하여 지정됩니다. 예제를 단축하기 위해 예제의 파일 이름은 리터럴 문자열로 지정됩니다. 일반적으로 파일 열기 대화 상자 또는 이와 유사한 항목에서 가져옵니다.

ReadXML 메서드가 성공하면 성공 코드를 반환합니다. 그렇지 않으면 VFW_E_INVALID_FILE_FORMAT 같은 오류 코드를 반환합니다. 오류 조건을 정상적으로 처리하려면 항상 반환 값을 확인합니다. 간단히 하기 위해 예제 코드는 오류를 확인하지 않습니다.

프로젝트 로드 및 미리 보기