2010-01-07 71 views
0

我們很快就會開始使用開源軟件開發項目,它可以完成很多事情,其中​​一個模塊涉及從基於USB的攝像頭捕獲長達48小時的實時饋送並以不間斷的循環覆蓋它。這將與應用程序中的其他操作並行進行。我們還必須以至少48小時的時間向用戶顯示採集的供稿作爲菜單選項。Linux +視頻捕獲和顯示語言

我想大家建議一個合適的開源技術堆棧,考慮到模塊的音頻/視頻部分,如果沒有這個功能,我絕對可以使用Qt來做我的東西,但是這個功能會變成一個困難的命題。我已經在Linux平臺上用Qt開發了GUI應用程序,但一直沒有能夠想出在應用程序中記錄和顯示視頻的東西。 Qt有聲子,但設置它是一場噩夢。早些時候你們中的一些人建議使用v4linux。我試圖在RHEL 4機器上編譯示例程序capture.c,它給出了以下錯誤。

usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:436: warning: no semicolon at end of struct or union 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:436: error: syntax error before '*' token 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:438: error: syntax error before '*' token 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:438: warning: data definition has no type or storage class 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:439: error: syntax error before '}' token 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:810: error: field `win' has incomplete type 

所以碰到一個死衚衕,除了我還沒有拿出具體的可行的例子。 website也沒有經常更新,這說明開發過程中停滯不前。

由於應用程序將以圖形方式與基於菜單的用戶交互,所以需要使用Qt或類似的圖形部件。令人頭疼的是,我一直無法弄清楚,我如何在虛擬應用程序中實現/集成視頻捕獲/顯示功能(我嘗試使用Qt,可能有些人已經使用其他庫或語言完成了這項工作) 。

編輯: 能夠通過導入videodev2.h的本地副本並添加define語句以包含__user宏來編譯程序。但是現在它不能運行,因爲它找不到/ dev/video設備。所以再次堅持在video4linux的死衚衕

+0

@shylent,我接受一個答案,如果它完全回答/建議。我無法接受任何帖子。如果我對答案/建議不完全滿意,我喜歡保持開放。是的,我還沒有能夠設置它,嘗試與Ubuntu,RHEL4,5和openSuse。如果你能提供幫助,這將是一個福音。 – rocknroll 2010-01-07 09:25:18

回答

0

你可以試試FFmpeg圖書館家族。截至最近(我認爲),它還帶有支持V4L和V4L2進行視頻捕獲的libavdevice庫,構建FFmpeg管道以讀取avdevice源視頻並使用avcodec編寫它應該不是很困難並avformat到一個文件...

0

gstreamer是一個非常有能力的多媒體堆棧捕獲,pygst和PyQt4綁定存在Python中使用。

0

如果它說「無法找到/ dev/video」,那是因爲Linux爲這些設備編號。 如果你看過.c文件,你會看到有幾個arg_opts 爲-d ...(其中...會變成/ dev/video0),或者你可以在.c文件中添加一個0/dev/video,你會發現它在int main開頭的590行左右。