2016-10-04 112 views
0

我目前正在開發一個使用Nvidia Jetson的項目。我們需要將3臺攝像機通過UDP RTP傳輸到單一來源(單播),同時保存所有三臺攝像機的內容。Gstreamer通過RTP流式傳輸多臺攝像機,同時保存每個流

我有問題,我的管道,這可能是一個簡單的錯誤,我根本沒有看到。

gst-launch-1.0 -e v4l2src device=/dev/video0 ! 'video/x-raw, width=(int)640, height=(int)480' ! tee name=c c. ! queue ! omxvp8enc bitrate=1500000 ! rtpvp8pay ! udpsink bind-port=8574 host=129.21.57.204 port=8574 loop=false c. ! queue ! omxh264enc bitrate=1500000 ! mp4mux ! queue ! filesink location=test-RightFacingCamera.mp4 v4l2src device=/dev/video1 ! 'video/x-raw, width=(int)640, height=(int)480' ! tee name=b b. ! queue ! omxvp8enc bitrate=1500000 ! rtpvp8pay ! udpsink bind-port=8564 host=129.21.57.204 port=8564 loop=false b. ! queue ! omxh264enc bitrate=1500000 ! mp4mux ! queue ! filesink location=test-LeftFacingCamera.mp4 v4l2src device=/dev/video2 ! 'video/x-raw, width=(int)640, height=(int)480' ! tee name=a a. ! queue ! omxvp8enc bitrate=1500000 ! rtpvp8pay ! udpsink bind-port=8554 host=129.21.57.204 port=8554 loop=false a. ! queue ! omxh264enc bitrate=1500000 ! mp4mux ! queue ! filesink location=test-FrontFacingCamera.mp4 

現在,這裏的問題是,3流的2將完全停止無故,沒有調試信息可言,他們會簡單地停止流,約2分鐘的時間後寫入文件。

此外,我已考慮將其轉換爲C/C++ w/Gstreamer,如果有人想指出我的方向,我不知道從哪裏開始。目前,我已經編寫了一個javascript代碼,可以通過序列號檢測每臺攝像機,併爲給定攝像機分配一個端口。然後運行這個命令。

感謝您的任何幫助。

回答

1

此問題是由相機本身造成的。原來,ECON品牌的相機有一個問題,其中3個相同的相機將無法在v4l2中工作。我和我的團隊已經購買了新款相機,所有相同的型號都要進行測試,並且工作正常。

我們使用ECONS是因爲假設的科學質量和USB-3速度。不幸的是,我們沒有USB3速度或帶寬,所以我們堅持在較低的分辨率。

希望幫助運行到simaler問題的人,似乎所有的異步工作在USB2.0當前攝像機是羅技c922s

1

杰特森的這是USB 帶寬限制。我們可以一次支持3個攝像頭,但會影響幀速率。羅技相機進行了比較,該相機是H.264相機(它提供了壓縮幀),所以它提供了60fps的帶寬。