使用python从gst管道抓取框架到opencv

时间:2016-07-23 21:31:18

标签: python opencv gstreamer-0.10

我正在使用OpenCV和GStreamer 0.10

我使用此管道通过UDP接收带有python提供的自定义套接字sockfd的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的每个帧。感谢您的回复和任何帮助:]

1 个答案:

答案 0 :(得分:0)

谢谢,我尝试使用rtph264pay将实时视频流广播到udpsink。以下表达式是针对gst管道的:

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

我构建了一个sdp文件,使其可以被opencv接收,例如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"释放限制。