DirectShow 中的 Web 串流播放

[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows 媒體格式 11 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

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 資料流程