다음을 통해 공유


프로젝트 파일 로드

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 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 함수를 호출하여 각 구성 요소를 만듭니다. 새 instance 만들면 인터페이스에서 참조 횟수가 증가합니다. 메모리 누수 방지를 위해 인터페이스를 처리할 때 항상 해제합니다. 이 예제에서는 IXml2Dex 에 대한 포인터가 더 이상 필요하지 않으므로 인터페이스를 해제할 수 있습니다. IAMTimeline에 대한 포인터는 여전히 타임라인 미리 보기에 필요합니다.

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

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

프로젝트 로드 및 미리 보기