DirectShow에서 ASF 웹 스트림 재생

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

Microsoft DirectShow는 WM ASF 판독 기 필터를 통해 파일 재생 시나리오에서 웹 스트림을 지원하지만 스트림을 캡처하고 유지하려면 고유한 DirectShow 필터를 작성해야 합니다.

참고

Windows Media Services를 실행하는 서버에서 스트리밍되는 콘텐츠의 웹 스트림을 재생하려면 웹 페이지에 포함된 Windows 미디어 플레이어 9 시리즈 ActiveX® 컨트롤을 사용합니다.

 

WMMEDIATYPE_FileTransfer 형식의 스트림이 포함된 파일이 제공되면 WM ASF 판독기가 출력 핀을 만듭니다. 형식 블록은 WMT_WEBSTREAM_FORMAT 구조체가 됩니다. (이 구조는 Windows Media Format SDK 설명서에 설명되어 있습니다.) 해당 미디어 유형을 처리할 수 있는 다운스트림 필터를 사용할 수 없는 경우 핀은 연결되지 않은 상태로 유지되지만 파일은 여전히 오디오 및/또는 비디오 스트림을 재생합니다.

웹 스트림의 각 미디어 샘플에는 Windows Media Format SDK 설명서에 설명된 WMT_WEBSTREAM_SAMPLE_HEADER 구조가 포함되어 있습니다. 구조체의 wszURL 멤버 길이에 따라 가변 길이가 있습니다. 샘플 데이터에 대한 포인터는 처음에 이 구조를 가리키며 스트림의 실제 데이터에 액세스하려면 구조체를 지나 포인터를 앞으로 나아가야 합니다.

웹 스트림 처리기 필터는 CBaseRenderer 클래스를 기반으로 해야 합니다. CBaseRenderer::D oRenderSample 메서드에서 필터는 웹 스트림에 대한 정보를 위해 구조를 구문 분석한 다음 적절한 작업을 수행해야 합니다. 일반적으로 파일을 디스크에 저장한 다음 CreateUrlCacheEntryCommitUrlCacheEntryW 또는 CommitUrlCacheEntryA 함수 를 호출하여 파일을 인터넷 Explorer 캐시에 배치합니다. 필터는 여러 파트 파일, 즉 샘플보다 큰 파일을 처리해야 하며 WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType 멤버에 의해 지정된 렌더링 명령도 처리해야 합니다. 필터는 렌더링할 파일의 이름을 포함하는 WMT_WEBSTREAM_SAMPLE_HEADER.wszURL 문자열의 텍스트와 함께 애플리케이션에 EC_OLE_EVENT 이벤트를 보냅니다. 그러면 애플리케이션이 브라우저에 지정된 페이지를 표시합니다. 웹 스트림이 올바르게 작성된 경우 파일이 이미 캐시에 있어야 합니다.

WMT_WEBSTREAM_FORMAT 및 WMT_WEBSTREAM_SAMPLE_HEADER 대한 자세한 내용은 Windows Media Format SDK 설명서를 참조하세요.

DirectShow에서 ASF 파일 읽기