2016-10-04 61 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的带宽。