Захватите фрейм из gst pipe в opencv с помощью python
Я использую OpenCV и GStreamer 0.10.
Я использую этот конвейер для получения пакетов MPEG TS через UDP с пользовательским сокетом sockfd
предоставленный Python и отобразить его с 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 ответ
Спасибо, я пытался использовать rtph264pay для трансляции видео в реальном времени на udpsink. Следующая строка похвалы для gst pipe:
PIPELINE_DEF =
"udpsrc name=src !" \
"mpegtsdemux !" \
"queue !" \
"h264parse !" \
"rtph264pay !" \
"udpsink host=127.0.0.1 port=5000"
И я создал файл sdp, чтобы его можно было получить с помощью opencv видеосъемки ("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", чтобы снять ограничение.