다음을 통해 공유


DirectShow Editing Services의 시간

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

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

비디오를 편집하려면 몇 가지 중요한 타이밍 개념을 사용해야 합니다. 예를 들면 다음과 같습니다.

  • 각 클립에는 기간이 있습니다.
  • 클립, 전환 및 효과는 프로젝트의 특정 시간에 표시됩니다.
  • 비디오의 프레임 속도는 초당 프레임 수(fps)로 표시됩니다.

DES(DirectShow Editing Services )는 시간과 프레임 속도를 설정하거나 검색하는 다양한 메서드를 제공합니다. 이러한 값의 의미는 컨텍스트에 따라 달라집니다.

시간 값

매개 변수가 시간을 표현하면 다음과 같은 세 가지 고유한 의미가 가능합니다.

  • 타임라인 시간: 타임라인 시작을 기준으로 하는 시간입니다. 예를 들어 클립이 타임라인 2초 동안 시작되거나 타임라인 15초 동안 전환이 발생할 수 있습니다. 타임라인 최종 렌더링된 프로젝트를 결정하므로 타임라인 시간을 "프로젝트 시간"으로 생각할 수도 있습니다.
  • 미디어 시간: 일반 재생 중에 도달한 파일의 시작을 기준으로 소스 파일의 지점입니다. 예를 들어 10초 비디오 파일이 있는 경우 파일 중간 지점은 미디어 시간으로 표현된 5초에 발생합니다.
  • 부모 시간: 타임라인 개체를 기준으로 하는 시간입니다. 예를 들어 개체가 타임라인 8초에서 시작하고 타임라인 10초에서 시작하는 다른 개체를 포함하는 경우 자식 개체는 부모에 비해 2초에서 시작됩니다. 가상 트랙은 모두 타임라인 기준으로 시간 0에서 시작됩니다. 따라서 가상 트랙의 모든 개체에 대해 부모 시간은 타임라인 시간과 같습니다.

미디어 시간은 원본 개체에만 적용됩니다. 각 원본 개체에는 미디어 시작 시간과 미디어 중지 시간이 있습니다. 예를 들어 10초 비디오 클립이 있고 클립 가운데에서 5초만 사용하여 클립에서 처음 2초와 마지막 3초를 트리밍한다고 가정합니다. 클립이 프로젝트에 20초 표시되도록 하려면(정상적인 재생 속도를 가정) 다음 시작 및 중지 시간을 지정합니다.

  • 미디어 시작: 2초

  • 미디어 중지: 7초

  • 타임라인 시작: 20초

  • 타임라인 중지: 25초

    타임라인 원본 클립 삽입

프레임 속도

프레임 속도는 초당 프레임 단위로 측정되는 미디어 스트림의 "속도"입니다. 시간 값과 마찬가지로 프레임 속도의 의미는 컨텍스트에 따라 달라집니다.

  • 출력 프레임 속도: 그룹에서 정의한 최종 렌더링된 프로젝트의 프레임 속도입니다. 프로젝트를 렌더링하면 각 그룹은 자체 프레임 속도로 별도의 미디어 스트림이 됩니다.
  • 원본 프레임 속도: 원본 파일이 원래 작성된 프레임 속도입니다. 작성된 프레임 속도는 그룹의 출력 프레임 속도와 일치할 필요가 없습니다. DES는 필요에 따라 파일을 자동으로 업샘플링하거나 다운샘플링합니다. 대부분의 미디어 형식에서 DES는 형식을 검사하여 프레임 속도를 결정할 수 있습니다. DIB 시퀀스는 예외입니다. DIB 시퀀스의 프레임 속도를 지정해야 합니다. 자세한 내용은 원본 작업을 참조하세요.

재생 속도: 원본 클립이 프로젝트에 나타날 때의 명백한 속도입니다. 예를 들어 10초의 비디오는 타임라인 5초로 맞출 수 있습니다. 따라서 다음 다이어그램과 같이 클립의 속도가 2단계씩 증가합니다.

소스 재생을 더 빠르게 만들기

(오디오 원본을 사용하면 피치도 바뀝니다.) 다음 수식은 원본 클립의 재생 속도를 결정합니다.

  • 재생 속도 = (미디어 중지 – 미디어 시작) / (타임라인 중지 – 타임라인 시작)

이러한 세 가지 요금은 각각 다른 요금과 독립적입니다.

  • 미디어 시간을 조정하여 클립 속도를 늦출 수 있습니다. 최종 출력의 프레임 속도에는 영향을 주지 않습니다.
  • 파일 재생 속도에 영향을 주지 않고 출력 프레임 속도를 늘리거나 줄일 수 있습니다.
  • 동일한 그룹 내에서 작성 프레임 속도가 다른 소스 파일을 혼합할 수 있으며 DES는 각 클립을 업샘플링하거나 다운샘플링하여 그룹의 프레임 속도와 일치합니다.

프로젝트를 렌더링하면 모든 시간이 그룹 프레임 속도에 따라 결정되는 가장 가까운 프레임 경계로 반올림됩니다. 예를 들어 비디오 그룹의 프레임 속도가 30fps라고 가정합니다. 각 프레임은 약 33밀리초(밀리초)입니다. 시간 0부터 시작하여 타임라인 1.68초 원본 클립을 추가한다고 가정합니다. 원본이 프레임 경계에서 정확히 끝나지 않으므로 DES는 중지 시간을 1.6666초(50프레임)로 반올림합니다. 렌더링된 프로젝트에서 1.68초를 찾으려는 경우 실제로 원본의 끝을 지나 51번째 프레임까지 검색합니다.

그러나 DES는 원본의 중지 시간을 덮어쓰지 않습니다. 나중에 그룹 프레임 속도를 변경하거나 소스가 다르게 반올림되는 타임라인 새 지점으로 이동할 수 있습니다. 따라서 DES는 원래 중지 시간을 유지하고 필요한 경우에만 반올림합니다. 자세한 내용은 IAMTimelineObj::FixTimes를 참조하세요.

DirectShow Editing Services를 사용하여 시작