2015-05-04 94 views
0

我需要一點幫助,因爲我試圖通過gstreamer接收rtsp流,然後將它放入openCV來處理視頻。更糟糕的是,我將需要從openCV回來,但首先要做的第一件事。我很新,所以我不瞭解Gstreamer,所以我指望你們。一些簡單的例子是最好的,但我會用我有什麼;) 預先感謝Gstreamer rtsp stream to appsink openCV

+0

你能詳細說說你想用opencv做什麼嗎?它的一些功能已經包裝在gstreamer中。根據你想要做什麼,你可以從gstreamer插件調用opencv,而不是將緩衝區取出管道,然後將其推回到另一個。 – thiagoss

+0

我需要接收rtsp流與gstreamer,複製它像3次,一個將restrts與rtspStream,一個將被保存到文件,並且一個必須被轉換爲cv :: Mat。 :) – JFCorleone

回答

0

您可以使用這樣的事情:在uridecodebin

uridecodebin uri=rtsp:// name=uridec ! queue ! tee name=t ! queue ! <some encoder and muxer> ! filesink t. ! queue ! videoconvert ! "video/x-raw, format=BGR" ! appsink t. ! queue ! <restream> 

在您收到此可能的解決方案和解碼這意味着爲了重新流式傳輸,您需要進行編碼以及用於存儲到文件的編碼。如果這不是你想要的,你可以用rtspsrc替換uridecodebin,它會給你RTP流而不是解碼的原始流。例如:

rtspsrc ! rtpXdepay ! tee name=t ! ... 

用您正在接收的格式替換X(可以從您的應用程序動態地完成)。現在,輸出是一種編碼流,您可以使用與上述示例流水線類似的方法。

請注意,這些建議假定您的rtsp輸入是單個流(可能是視頻),如果您需要視頻和音頻,則需要添加2個分支出uridecodebin或rtspsrc。我還假設'rtspStream'是某種外部庫/應用程序,您將使用它重新傳輸而不是使用gstreamer本身。無論如何,這應該給你一個想法。