python - 用python从gst管道抓取帧到opencv

标签 python opencv gstreamer-0.10

我正在使用 OpenCV和 GStreamer 0.10

我使用此管道通过 python 提供的自定义套接字 sockfd 通过 UDP 接收 MPEG ts 数据包,并使用 xvimagesink 显示它,它工作得很好。以下推荐行适用于此管道:

PIPELINE_DEF = "udpsrc do-timestamp=true name=src blocksize=1316 closefd=false buffer-size=5600 !" \
           "mpegtsdemux !" \
           "queue !" \
           "ffdec_h264 max-threads=0 !" \
           "ffmpegcolorspace !" \
           "xvimagesink name=video"

现在,我想从此管道中获取一帧并使用 OpenCV 显示它。我该怎么做?我知道很多关于从 appsink 获取缓冲区数据的知识。但我仍然不知道如何将这些缓冲区转换为 OpenCV 的每一帧。感谢您的回复和任何帮助:]

最佳答案

谢谢,我已经尝试使用 rtph264pay 将直播视频流广播到 udpsink。以下推荐行用于 gst 管道:

PIPELINE_DEF = 
"udpsrc name=src !" \               
"mpegtsdemux !" \       
"queue !" \               
"h264parse !" \ 
"rtph264pay !" \   
"udpsink host=127.0.0.1 port=5000"  

然后我建了一个sdp文件让它可以被opencv接收 likes videocapture("123.sdp") 123.sdp,下面是这个sdp文件的内容:

c=IN IP4 127.0.0.1 
m=video 5000 RTP/AVP 96 
a=rtpmap:96 H264/90000 

现在运行良好,只需要删除“blocksize=1316 closefd=false buffer-size=5600”即可解除限制。

关于python - 用python从gst管道抓取帧到opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546602/

相关文章:

python - 跨网络的任务调度?

c++ - 使用 Caffe 内存层不会产生一致且确定的结果

opencv - 多个图像的位置估计

c - gstreamer appsrc 测试应用

python - 在父类中实现继承方法

python - "'浮点' object cannot be interpreted as an integer"电影错误

python - 在 python 中使用线程运行无限循环

c++ - gstreamer-0.10 打印管道字符串

javascript - Ajax-ing JavaScript 变量到 Django View 获取 : AttributeError: 'WSGIRequest' object has no attribute 'data'