DirectShow 中的 Web 串流播放

Microsoft DirectShow 支援 Web 串流 (請參閱 Web Streams ,以取得透過 WM ASF 讀取器 篩選在檔案播放案例中) 的詳細資訊,但您必須撰寫自己的 DirectShow 篩選器來擷取並保存資料流程。

注意

若要播放從執行Windows 媒體服務之伺服器串流的內容中的 Web 資料流程,請使用內嵌在網頁中的 Windows 媒體播放機 9 系列ActiveX ®控制項。

 

當指定包含類型資料流程的檔案WMMEDIATYPE_FileTransfer時,WM ASF 讀取器會為其建立輸出針腳。 格式區塊將會是 WMT_WEBSTREAM_FORMAT 結構。 如果沒有下游篩選可以處理該媒體類型,則針腳會維持未線上狀態,但檔案仍會播放音訊和/或視訊串流。

請務必瞭解 Web 資料流程中的每個媒體範例都包含 一個WMT_WEBSTREAM_SAMPLE_HEADER 結構,其長度取決於 其 wszURL 成員的長度。 範例資料的指標一開始指向這個結構,而且您必須將指標前進到 結構之後,才能存取資料流程中的實際資料。 您的 Web 資料流程處理常式篩選應該以 CBaseRenderer 類別為基礎。 在 DoRenderSample 方法中,篩選準則必須剖析結構以取得 Web 資料流程的相關資訊,然後執行適當的動作。 一般而言,這牽涉到將檔案儲存至磁片,然後呼叫 CommitUrlCacheEntryCreateUrlCacheEntry 將檔案放入 Internet Explorer 快取中。 篩選準則必須處理多部分檔案,也就是大於一個範例的檔案,也必須處理 由 WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType 成員指定的轉譯命令。 篩選準則會將 EC_OLE_EVENT 傳送至應用程式,以及包含要轉譯之檔案名的 WMT_WEBSTREAM_SAMPLE_HEADER.wszURL 字串文字。 然後,應用程式會讓瀏覽器顯示指定的頁面。 如果 Web 資料流程已正確撰寫,檔案應該已經位於快取中。

如需 CBaseRendererDoRenderSampleEC_OLE_EVENT的詳細資訊,請參閱 DirectShow SDK 檔。

Web 資料流程