我正在使用OpenCV和GStreamer 0.10。從gst管道抓取框架到python的opencv
我使用這個管道通過UDP接收MPEG ts數據包,使用python提供的自定義套接字sockfd
,並使用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的每個幀。感謝您的回覆,以及任何幫助:]
感謝您編輯Tyler,請嘗試:] –
歡迎來到SO :)請向我們展示一些與appsink有關的工作 - 如果您已經使用過它,這是實際的解決方案 - 或者它不適合您?我認爲你只需要提取代表一個視頻幀的緩衝區的數據部分,這個視頻幀應該可以用於OpenCV;另一件事是你正在使用已經多年不被任何人支持的已經過時的GStreamer版本 - for這個任務 - 因爲你不使用需要0.10的特定驅動程序 - 你可以切換到1.x - 這個版本也有python綁定。祝你好運 – nayana
謝謝,我試圖使用切換到gst 1.0,但有一個最重要的屬性叫做「sockfd」,我需要使用它來爲此管道創建自定義套接字。它與gst 0.10很好地工作。但是,當我切換到gst 1.0,並嘗試使用「GSocket」而不是「sockfd」。它顯示「沒有鏈接到src」喜歡這個http://stackoverflow.com/questions/37795191/error-in-pipeline-porting-pygst-program-from-gstreamer-0-10-to-1-0,所以我回到0.10。 –