이벤트
11월 19일 오후 11시 - 11월 21일 오후 11시
Microsoft Ignite 온라인에 참석하여 강력한 AI 및 클라우드 솔루션으로 필요한 경쟁 우위를 확보하세요.
지금 등록[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
필터 그래프는 현재 위치와 중지 위치의 두 위치 값을 유지합니다. 다음과 같이 정의됩니다.
이러한 값을 검색하려면 IMediaSeeking::GetPositions 메서드를 호출합니다 . 반환된 값은 항상 원본 미디어 원본을 기준으로 합니다. 기본적으로 값은 참조 시간 단위에 있습니다. 경우에 따라 시간 단위를 변경할 수 있습니다. 자세한 내용은 Seek 명령의 시간 형식을 참조하세요.
새 위치를 찾거나 새 중지 위치를 설정하려면 다음 예제와 같이 IMediaSeeking::SetPositions 메서드를 호출합니다.
#define ONE_SECOND 10000000
REFERENCE_TIME rtNow = 2 * ONE_SECOND,
rtStop = 5 * ONE_SECOND;
hr = pSeek->SetPositions(
&rtNow, AM_SEEKING_AbsolutePositioning,
&rtStop, AM_SEEKING_AbsolutePositioning
);
참고
1초는 참조 시간 10,000,000단위입니다. 편의를 위해 이 값은 ONE_SECOND 정의합니다. DirectShow 기본 클래스 라이브러리를 사용하는 경우 상수 UNITS의 값은 동일합니다.
rtNow 매개 변수는 새 현재 위치를 지정합니다. 두 번째 매개 변수는 rtNow를 해석하는 방법을 정의하는 플래그입니다. 이 예제에서 AM_SEEKING_AbsolutePositioning 플래그는 rtNow 가 원본에서 절대 위치를 지정한다는 것을 나타냅니다. 따라서 필터 그래프는 스트림 시작 2초 후의 위치를 찾습니다. rtStop 매개 변수는 중지 시간을 제공합니다. 마지막 매개 변수는 rtStop 도 절대 위치임을 지정합니다.
이전 위치 값을 기준으로 위치를 지정하려면 AM_SEEKING_RelativePositioning 플래그를 사용합니다. 위치 값 중 하나를 변경하지 않은 상태로 두려면 AM_SEEKING_NoPositioning 플래그를 사용합니다. 이 경우 해당 시간 매개 변수는 NULL 일 수 있습니다. 다음 예제에서는 10초 앞으로 이동하지만 중지 위치는 변경되지 않습니다.
REFERENCE_TIME rtNow = 10 * ONE_SECOND;
hr = pSeek->SetPositions(
&rtNow, AM_SEEKING_RelativePositioning,
NULL, AM_SEEKING_NoPositioning
);
필터 그래프가 중지된 경우 비디오 렌더러는 검색 작업 후에 이미지를 업데이트하지 않습니다. 사용자에게는 검색이 수행되지 않은 것처럼 표시됩니다. 이미지를 업데이트하려면 검색 작업 후 그래프를 일시 중지합니다. 그래프를 일시 중지하면 비디오 렌더러에 대한 새 비디오 프레임이 표시됩니다. 그래프를 일시 중지한 다음 중지하는 IMediaControl::StopWhenReady 메서드를 사용할 수 있습니다.
이벤트
11월 19일 오후 11시 - 11월 21일 오후 11시
Microsoft Ignite 온라인에 참석하여 강력한 AI 및 클라우드 솔루션으로 필요한 경쟁 우위를 확보하세요.
지금 등록