将实时图像从 ROS 转换为 Gstreamer 视频
Converting live images from ROS to Gstreamer video
目前我有一个主题,其中相机发布 sensor_msgs/Image 消息,我有两个 Gstreamer cpp 文件(服务器和客户端)从 /dev/video0 获取视频并将其联网到客户端。
我想使用该主题中的图像,将它们输入到服务器并将它们流式传输到客户端。我该怎么做?
服务器代码,在命令行中翻译:
gst-launch-1.0 v4l2src device = /dev/video0 ! 'video/x-raw, format=(string)YUY2, width=640, height=480, pass=qual, quantizer=20, framerate=30/1' ! videoconvert ! x264enc bitrate = 500 threads = 2 speed-preset = ultrafast byte-stream = true ! rtph264pay ! udpsink host = 127.0.0.1 port=1234
客户端代码,在命令行中翻译:
gst-launch-1.0 udpsrc port=1234 ! "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=255" ! rtph264depay ! queue ! avdec_h264 ! videoconvert! videoscale! xvimagesink sync=false
您应该考虑使用 appsrc 元素,以便将数据从另一个应用程序获取到 GStreamer 管道中。
您可以在 GStreamer 文档中获取有关此元素的更多信息:https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsrc.html
目前我有一个主题,其中相机发布 sensor_msgs/Image 消息,我有两个 Gstreamer cpp 文件(服务器和客户端)从 /dev/video0 获取视频并将其联网到客户端。
我想使用该主题中的图像,将它们输入到服务器并将它们流式传输到客户端。我该怎么做?
服务器代码,在命令行中翻译:
gst-launch-1.0 v4l2src device = /dev/video0 ! 'video/x-raw, format=(string)YUY2, width=640, height=480, pass=qual, quantizer=20, framerate=30/1' ! videoconvert ! x264enc bitrate = 500 threads = 2 speed-preset = ultrafast byte-stream = true ! rtph264pay ! udpsink host = 127.0.0.1 port=1234
客户端代码,在命令行中翻译:
gst-launch-1.0 udpsrc port=1234 ! "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=255" ! rtph264depay ! queue ! avdec_h264 ! videoconvert! videoscale! xvimagesink sync=false
您应该考虑使用 appsrc 元素,以便将数据从另一个应用程序获取到 GStreamer 管道中。
您可以在 GStreamer 文档中获取有关此元素的更多信息:https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsrc.html