共用方式為


DirectShow 中的 ASF Web 串流播放

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

Microsoft DirectShow 透過 WM ASF 讀取器 篩選在檔案播放案例中支援 Web 串流,但您必須撰寫自己的 DirectShow 篩選來擷取並保存資料流程。

注意

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

 

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

Web 資料流程中的每個媒體範例都包含 WMT_WEBSTREAM_SAMPLE_HEADER 結構,其記載于 Windows 媒體格式 SDK 檔中。 結構具有可變長度,視 其 wszURL 成員的長度而定。 範例資料的指標一開始指向這個結構,而且您必須將指標前進到 結構之後,才能存取資料流程中的實際資料。

您的 Web 資料流程處理常式篩選應該以 CBaseRenderer 類別為基礎。 在 CBaseRenderer::D oRenderSample 方法中,篩選必須剖析結構以取得 Web 資料流程的相關資訊,然後執行適當的動作。 這通常涉及將檔案儲存至磁片,然後呼叫CreateUrlCacheEntry 和 CommitUrlCacheEntryWCommitUrlCacheEntryA函式,將檔案放入 Internet Explorer 快取中。 篩選準則必須處理多部分檔案,也就是大於一個範例的檔案,也必須處理 由 WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType 成員指定的轉譯命令。 篩選會將 EC_OLE_EVENT 事件傳送至應用程式,以及包含要轉譯之檔案名的 WMT_WEBSTREAM_SAMPLE_HEADER.wszURL 字串文字。 然後,應用程式會讓瀏覽器顯示指定的頁面。 如果 Web 資料流程已正確撰寫,檔案應該已經位於快取中。

如需WMT_WEBSTREAM_FORMAT和WMT_WEBSTREAM_SAMPLE_HEADER的詳細資訊,請參閱 Windows 媒體格式 SDK 檔。

在 DirectShow 中讀取 ASF 檔案