【发布时间】:2016-09-02 20:59:39
【问题描述】:
我可以在构建 Gstreamer 管道时使用一些帮助。 目的是从 RaspiCam 捕获视频,然后将视频流式传输到另一个 RPi,在其间的传输 RPi 上使用 OpenCV 进行图像处理(对象跟踪)。 但是我在编码方面遇到了问题,而且我对我应该使用的女巫知之甚少。
我查看了这个Adding opencv processing to gstreamer application 并试图让gst-rpicamsrc 捕获用于管道的凸轮。但我似乎无法弄清楚如何解码(?)视频,以便我可以在 OpenCV 中使用它。 videotestsrc 没问题,但 rpicamsrc 显然还有其他属性。
"rpicamsrc ! "
"h264parse ! "
"tee name=cam ! "
"video/x-h264, width=640, height=480, format=RGB ! "
"omxh264dec ! "
"videoconvert ! "
"appsink name=sink sync=true ! "
".cam rtph264pay ! "
"rtprtxqueue ! "
"udpsink host=127.0.0.1 sync=false port=5000"
我也尝试过更短的管道,但只能使用 videotestsrc。
我确实担心队列会给图像处理带来严重的延迟,而且由于我想跟踪对象,它可能还不够好。
我也尝试过使用 VideoCapture cap("rpicamsrc !appsink") 和 cap("v4l2src !videodecode !video/x-raw !appsink) 等等.. 而且我已经尽了最大的努力将接收端与相反方向的解码器进行匹配,但是我的知识太有限了..
任何建议将不胜感激!
【问题讨论】:
-
首先,您不必在元素名称周围使用双引号 (")。队列只是缓冲数据以提供流畅的播放,并将后续元素的处理传递给不同的线程 - 它非常有用,通常在任何地方添加队列只会帮助事情(但不要从字面上理解)你可以用 rpicamsrc 玩本地化吗?另外我必须警告你 tee 是 h264 东西非常危险的元素(尤其是x264enc)所以先尝试没有它
-
你可以试试这个(或类似的 - 与其他水槽)
GST_DEBUG=3 gst-launch-1.0 rpicamsrc name=src preview=0 fullscreen=0 ! h264parse ! omxh264dec ! glimagesink sync=0?
标签: opencv gstreamer pipeline raspberry-pi3