2012-09-19 67 views
0

我正在使用directshow過濾器來混合vp8和vorbis。 最重要的是我正在實時發送(試圖發送實際的)webm文件。 所以沒有創建文件。 當編碼器將數據發送到套接字後,數據被打包到webm中。webmmux directshow尋找隊列IStream

文件鏈接過濾器使用IStream來執行文件IO。它大量使用搜索操作。 我無法使用。因爲我無法在套接字上尋找。

有沒有人實現或知道如何使用這個複用器,以便在沒有調用的操作。 或者也許是一個帶有隊列的複用器上的版本,以便它支持分片。

感謝

我使用的是DirectShow過濾器providede通過www.webmproject.org

回答

1

寫手實施IStream允許寫入數據流/文件多路複用器更新交叉引用。所以他們不需要順序寫入,這對大多數容器格式來說都是不可能的,而不需要創建巨大的緩衝區或臨時文件。

現在,如果您正在運行時創建文件以漸進地發送網絡,我認爲您正試圖實現這一目標,但您不知道在何處何時多路複用器要更新以關閉文件。是否要重新訪問文件開始處的數據以及更新引用,標題等。

您應該首先創建完整文件,然後將其傳遞。或者你需要替換整個作者的東西,並將所有的寫入交付給套接字,包括覆蓋已經存在的數據。然而,通過網絡傳遞實時數據的最合適的方法並不是根本不傳輸文件。發送者發送單獨的流和接收器或者使用它們,或者在接收後多路複用到文件中然後是必要的。

+0

謝謝羅馬人。是的,我看着這個。 不幸的是,架構必須按照我提到的方式來實現,並且我無法控制客戶端重寫某個部分。 但事實證明,OGG muxer寫入「頁」。而且從不尋求。 再次感謝您的幫助。基本上我想寫一種視頻代理,以便人們不必爲不同的HTML瀏覽器手動轉換文件。您請求文件a並根據瀏覽器文件轉換ogg/webm/mp4原來,ogg是隻有一個可以實時做到這一點(由於提供了muxers)。謝謝 –

+0

對於這樣的代理工作良好,我認爲你需要在開始流式傳輸字節之前轉換服務器上的整個文件。 –