2009-09-24 115 views
7

我們有一個具有模擬攝像機的設備。我們有一張卡片對其進行採樣並將其數字化。這一切都在directx中完成。此時,更換硬件不是一種選擇,但我們需要進行編碼,以便我們可以實時看到此視頻饋送,而不管任何硬件或將來發生的底層操作系統更改。實現IP攝像機

沿着這條線,我們選擇了Qt來實現一個GUI來查看這個攝像頭源。但是,如果我們將來轉向Linux或其他嵌入式平臺,並更換其他硬件(包括攝像機/視頻採樣器所在的物理設備),我們還需要更改相機顯示軟件,這將是一個痛苦,因爲我們需要將它集成到我們的GUI中。

我建議遷移到一個更抽象的模型,其中數據通過套接字發送到GUI,視頻在從套接字流中解析後實時顯示。

首先,這是個好主意還是壞主意?

其次,你將如何實現這樣的事情?視頻採樣器通常如何提供可用輸出?我怎樣才能通過套接字推送這個輸出?一旦我在接收端解析輸出,我如何知道如何處理輸出(如何獲得輸出渲染)?我能想到的唯一事情就是將每個樣本寫入一個文件,然後在每次新樣本到達時顯示該文件的內容。這對我來說似乎是一個低效率的解決方案,如果它能工作的話。

你如何建議我處理這個問題?是否有任何跨平臺的庫可用於這樣的事情?

謝謝。

編輯:我願意接受不同於上面列出的內容的建議。

回答

2

任何重複的視頻流都會降低性能,尤其是在嵌入式領域。在大多數視頻的情況下,我認爲你最好使用本地硬件加速技術將視頻直接播放到屏幕上。通過一些適當的封裝,你應該可以在圍繞視頻的GUI上使用Qt,並且有一個特定於平臺的類,用於控制實際的視頻到屏幕的繪製(在哪裏繪製,以及有多大等等)。 )。

編輯:

您可能也想看看聲子庫。我沒有看太多,但它似乎支持顯示可能從各種不同來源獲得的視頻。

+0

我知道你來自哪裏,但本地硬件加速可能完全位於不同的設備上,或者它可能位於同一設備上。現在,它通過USB傳送到顯示器。如果我們拋棄套接字的想法,這很好,你知道任何LGPL或專有的跨平臺庫,這將有助於在Qt中完成這樣的事情嗎? – 2009-09-25 01:57:17

+0

另外,請爲您的答案添加一個空格或其他內容,以便我可以+1。它說投票太舊以至於無法改變。 – 2009-09-25 01:58:23

3

你看過QVision?這是一個基於Qt的框架,用於管理視頻和視頻處理。你不需要處理,但我認爲它會做你想做的。

+0

看起來很有趣,謝謝。 – 2009-09-25 15:54:54