다음을 통해 공유


비디오 편집 프로젝트 관리

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

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

다음 팁은 DirectShow Editing Services프로젝트를 관리하는 데 도움이 됩니다.

타임라인 변경 내용

  • 필터 그래프를 빌드한 후 타임라인을 변경하는 경우 IRenderEngine::ConnectFrontEnd 다시 호출하여 프런트 엔드를 다시 빌드합니다. 일반적으로 그래프의 나머지 부분에는 영향을 주지 않습니다. 그러나 경우에 따라 렌더링 엔진은 프런트 엔드를 다시 빌드하기 전에 전체 그래프를 삭제해야 합니다. (예를 들어 그룹을 추가하거나 제거하는 경우 발생합니다.) ConnectFrontEnd 메서드는 그래프를 삭제했음을 알리는 S_WARN_OUTPUTRESET 반환합니다. 이 경우 애플리케이션은 그래프의 렌더링 섹션을 다시 빌드해야 합니다.
  • 타임라인에서 모든 개체를 완전히 제거하려면 IAMTimeline::ClearAllGroups 메서드를 호출합니다.

정리

  • 렌더링 엔진 사용을 마치면 IRenderEngine::ScrapIt 메서드를 호출합니다. COM 개체와 마찬가지로 사용이 완료되면 모든 인터페이스 포인터를 해제해야 합니다.
  • 렌더링 엔진은 타임라인에 대한 참조 횟수를 유지하지 않습니다. 타임라인을 사용하기 전에 릴리스하지 마세요. 항상 렌더링 엔진에서 ScrapIt 먼저 호출합니다.
  • 타임라인에 대한 모든 참조를 해제했을 때, 해당 타임라인의 개체를 사용하지 마세요, 비록 그것들에 대한 참조 횟수를 보유하고 있을지라도.

여러 타임라인 인스턴스

  • 타임라인 개체를 타임라인 간에 이동하지 마세요. 타임라인의 모든 개체는 해당 타임라인에서 만들어야 합니다. 타임라인은 만든 개체에 대한 정보가 포함된 내부 캐시를 보유합니다. 타임라인 개체를 이동하면 캐시가 중단됩니다.
  • 둘 이상의 타임라인이 있는 렌더링 엔진의 동일한 인스턴스를 사용하지 마세요. 렌더링 엔진은 타임라인에 대한 정보가 포함된 캐시를 보유합니다. 여러 타임라인으로 인해 캐시가 중단되고 예기치 않은 결과가 발생합니다. 두 개의 활성 타임라인이 필요한 경우 각 타임라인에 대해 별도의 렌더링 엔진 인스턴스를 만듭니다.
  • 타임라인은 둘 이상의 렌더링 엔진을 사용할 수 있지만 동시에 사용할 수는 없습니다. 다른 렌더링 엔진을 사용하기 전에 이전 렌더링 엔진을 삭제합니다. (일반적으로 미리 보기에 기본 렌더링 엔진을 사용하는 것에서 파일 쓰기를 위한 스마트 렌더링 엔진으로 전환하는 경우 이 작업을 수행합니다.)

지속성

  • 프로젝트를 XML 파일에 저장할 때 필터 그래프가 영구적이지 않습니다. 따라서 스마트 압축, 압축 형식 또는 압축 매개 변수와 관련된 정보가 손실됩니다. 프로젝트를 로드한 후 이러한 매개 변수를 복원하는 것은 애플리케이션에 달려 있습니다.

DirectShow 편집 서비스 사용하기