2010-10-11 44 views
3

在我的應用程序中,我們將把來自交通攝像機的視頻流呈現給客戶端查看器。 (最終有幾個客戶端觀看者)客戶端應該有能力觀看實時視頻倒回視頻並觀看包括在與視頻流連接之前發生的視頻的早期視頻。我們打算使用wxWidgets來觀看視頻,並且我們可能會使用wxMediaCtrl。爲wxWidgets設計實時視頻流

現在,從上面的陳述中,你們中的一些人可能會想:「嘿,他不知道他在說什麼。」你會是對的!我對這些概念很陌生,我對信息過剩感到困惑。 以上陳述是否合理?任何人都可以推薦一個基本的服務器/客戶端架構?我們肯定會使用C++ wxWidgets進行GUI,但也許wxMediaCtrl不是我想要的......應該直接使用類似ffmpeg庫的東西嗎?

我們目前的方法似乎並不理想。服務器從每個視頻幀中提取位圖,然後等待單個客戶端發送「下一幀」消息,此時服務器將發送位圖。實際上,我們已經重建了我們自己的尷尬,非標準,低效率和低功能的視頻流協議和查看器。必須有更好的東西!

+0

嘿,謝謝@reemrevnivek。 – JnBrymn 2011-02-24 15:25:22

回答

0

你應該看看這個C++ RTMP服務器:http://www.rtmpd.com/。我迅速下載,編譯併成功測試,沒有任何實際問題(在Ubuntu Maverick上)。這個文檔很好,如果有點到處都有。我懷疑,一旦你有一個流媒體服務器能夠支持典型的協議(rtmpd似乎這樣做),那麼寫一個客戶端應該自然地落戶,特別是如果你使用wxWidgets作爲接口API的話。當然,在這裏寫起來很容易,從起居室的舒適性來看,當你膝蓋深處代碼時,這將是一個不同的故事:)

0

你可以修改你的軟件這樣的:

的服務器連接,服務器如果連接抓取的圖像,並將其傳遞到FFmpeg的建立流,然後從ffmpeg的流複製的編碼數據,並通過網絡發送給客戶端,下降,關閉ffmpeg流。

也許你可以使用下面你自己的優勢:

http://www.kirsle.net/blog.html?u=kirsle&id=63

0

有玩家叫VLC。它有一個用於C++的庫,您可以使用它將該播放器嵌入到GUI應用程序中。它支持非常廣泛的協議。因此,您應該將連接,檢索和工作職位留給VLC,並只負責啓動和停止工作。這很容易,也許是比自己做的更好的解決方案。

0

對於媒體播放設備,包括音樂和音頻,你可以看看GStream。談到服務器,我認爲Twisted(Python中的網絡庫)應該是不錯的選擇。着名的直播視頻社交網站justin.tv基於Twisted。在這裏你可以閱讀here的故事。另外,我還在Twisted上構建了一組用於流式傳輸音頻的服務器。他們可以在同一時間內爲成千上萬的聽衆提供服務。