비디오 편집 프로젝트 관리
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
[이 API는 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다.]
다음 팁은 DirectShow Editing Services에서 프로젝트를 관리하는 데 도움이 됩니다.
타임라인 변경 내용
- 필터 그래프를 빌드한 후 타임라인 변경하는 경우 IRenderEngine::ConnectFrontEnd를 다시 호출하여 프런트 엔드를 다시 빌드합니다. 일반적으로 그래프의 나머지 부분에는 영향을 주지 않습니다. 그러나 경우에 따라 렌더링 엔진은 프런트 엔드를 다시 빌드하기 전에 전체 그래프를 삭제해야 합니다. 예를 들어 그룹을 추가하거나 제거하면 이 오류가 발생합니다. ConnectFrontEnd 메서드는 그래프를 삭제했음을 알리는 S_WARN_OUTPUTRESET 반환합니다. 이 경우 애플리케이션은 그래프의 렌더링 섹션을 다시 빌드해야 합니다.
- 타임라인 모든 개체를 완전히 제거하려면 IAMTimeline::ClearAllGroups 메서드를 호출합니다.
정리
- 렌더링 엔진 사용을 마치면 IRenderEngine::ScrapIt 메서드를 호출합니다. COM 개체와 마찬가지로 사용이 완료되면 모든 인터페이스 포인터를 해제해야 합니다.
- 렌더링 엔진은 타임라인 대한 참조 수를 유지하지 않습니다. 타임라인 사용하기 전에 해제하지 말고 항상 렌더링 엔진에서 ScrapIt를 먼저 호출합니다.
- 타임라인 대한 모든 참조를 해제하는 경우 참조 수를 보유하는 경우에도 해당 타임라인 개체를 사용하지 마세요.
여러 타임라인 인스턴스
- 타임라인 간에 타임라인 개체를 이동하지 마세요. 타임라인 모든 개체는 해당 타임라인 만들어야 합니다. 타임라인 만드는 개체에 대한 정보가 포함된 내부 캐시를 보유합니다. 타임라인 개체를 이동하면 캐시가 중단됩니다.
- 둘 이상의 타임라인 있는 렌더링 엔진의 동일한 instance 사용하지 마세요. 렌더링 엔진은 타임라인 대한 정보가 포함된 캐시를 보유합니다. 여러 타임라인으로 인해 캐시가 중단되고 예측할 수 없는 결과가 발생합니다. 두 개의 활성 타임라인이 필요한 경우 각 타임라인 대해 별도의 렌더링 엔진 인스턴스를 만듭니다.
- 타임라인 둘 이상의 렌더링 엔진을 사용할 수 있지만 동시에 사용할 수는 없습니다. 다른 렌더링 엔진을 사용하기 전에 이전 렌더링 엔진을 삭제합니다. (일반적으로 미리 보기용 기본 렌더링 엔진 사용에서 파일 쓰기를 위한 스마트 렌더링 엔진으로 전환할 때 이 작업을 수행합니다.)
지속성
- 프로젝트를 XML 파일에 저장할 때 필터 그래프가 영구적이지 않습니다. 따라서 스마트 압축, 압축 형식 또는 압축 매개 변수와 관련된 정보가 손실됩니다. 프로젝트를 로드한 후 이러한 매개 변수를 복원하는 것은 애플리케이션의 입니다.
관련 항목