我正在研究使用“ Gstreamer插件”通过UDP流传输摄像机视频的Gazebo Sim。在Ubuntu 18.04上开始仿真。
有一些资源可以了解此构造函数的后端。 Gazebo Simulation PX4 Guide
他们提到了如何创建管道:
然后,从凉亭观看的视频应与之前一样在QGroundControl中显示 会从真正的相机拍摄。
也可以使用Gstreamer管道观看视频。 只需输入以下终端命令:
gst-launch-1.0 -v udpsrc port=5600 caps='application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264' \
! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink fps-update-interval=1000 sync=false
它在终端上运行良好。我读了这些问题:
using gstreamer with python opencv to capture live stream?
Write in Gstreamer pipeline from opencv in python
因此,我尝试通过使用以下几行在opencv中实现此管道:
video = cv2.VideoCapture('udpsrc port=5600 caps = "application/x-rtp,encoding-name=(string)H264" ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink fps-update-interval=1000 sync=false',cv2.CAP_GSTREAMER)
#video.set(cv2.CAP_PROP_BUFFERSIZE,3)
# Exit if video not opened.
if not video.isOpened():
print("Could not open video")
sys.exit()
# Read first frame.
ok,frame = video.read()
if not ok:
print('Cannot read video file')
sys.exit()
但这只是错误:
无法打开视频
我在opencv中尝试了该管道的不同变体,但没有一个能帮助我。