我正在用 C 撰寫一個小型 DirectShow 應用程式,
而且我在獲取錄制的音頻資料時遇到了很多麻煩。
我想要實作的目標:
麥克風->Avi MUX 過濾器->資料緩沖區->將緩沖區發送到服務器-> 將資料寫入 Avi 檔案
如何才能做到這一點 ?如何從 Avi Mux 過濾器中獲取原始緩沖區?
幫助將不勝感激
我當前的過濾器圖構建如下,它可以作業:
麥克風 -> Avi MUX 過濾器 -> 檔案寫入器
此過濾器圖形流程作業正常,我可以聽到錄音。
uj5u.com熱心網友回復:
您的問題缺少一個重要方面。您是要在生成內容時將資料發送到服務器,還是要在完成時發送并繞過磁盤檔案創建。
在任何一種情況下,您都需要使用自定義過濾器來替換檔案撰寫器過濾器。SDK 轉儲過濾器示例 [ 1 , 2 ] 可能是一個很好的起點。您將不得不擴展它以更好地模仿檔案撰寫器。這或多或少地解決了上述在記錄完成時發送到服務器的第二個變體。
如果您還想在錄制時發送資料,您將不得不付出更多的努力,并且可能更多地擴展寫入器檔案(可能,但對我來說沒有意義),或者更確切地說完全停止使用 AVI 多路復用器切換到發送某種將半處理的內容發送到服務器,然后將其組合成可播放的檔案并最終存盤。
uj5u.com熱心網友回復:
正如 Roman 已經說過的,您應該從圖表中洗掉 AVI MUX。只需將您從麥克風獲得的原始音頻資料發送到服務器。并將服務器端的資料復用到一個 AVI 檔案中。
AVI MUX 和 FileWriter 是一種特殊的組合。由于 AVI MUX 不僅輸出 AVI 檔案的塊,而且在過濾圖停止后呼叫特殊介面寫入檔案!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/531592.html
標籤:温纳皮声音的直播
上一篇:Nginx的概述和配置
