2016-08-02 54 views
2

我是gstreamer的新手,所以我將不勝感激,如果你能幫助我。如何記錄管道,即使發件人不在gstreamer中發送數據

我正在嘗試監聽管道並將幀記錄到文件中。 我曾嘗試以下管道:

gst-launch-1.0 udpsrc port=5600 do-timestamp=true ! application/x-rtp, payload=96 ! rtph264depay ! avdec_h264 ! clockoverlay ! jpegenc ! avimux ! filesink location=stream.avi 

我想記錄整個時間表,即使發送者不提供任何幀數據。 默認情況下,記錄器在管道接收一些有效幀時附加這些幀。但是當發送者不發送數據時,我想看到一些黑框。

回答

1

我嘗試了一下,我認爲你不能用普通的gst-launch命令做到這一點。不幸的是,它可能涉及的是編寫一個應用程序,該應用程序檢測數據包/緩衝區何時不再進入,然後修改管道。如果你想給它一個去,我建議在input-selector元素是這樣的:

gst-launch-1.0 videotestsrc pattern=black ! video/x-raw ! input-selector name=selector ! clockoverlay ! jpegenc ! avimux ! filesink location=stream.avi

然後我想創建一個方法,將流連接到輸入選擇:

udpsrc port=5600 do-timestamp=true ! application/x-rtp, payload=96 ! rtph264depay ! avdec_h264 ! identity name=buffer-checker

爲了檢測進來沒有報文,可以監聽identity元件上的handoff信號,然後刪除該流時,它超時並通過使用從videotestsrc切換到黑的測試圖案在input-selector上的active-pad屬性。

使用videomixer元素差不多的作品,但我不相信它會處理多個停止和流的開始。

無論如何,希望別人想出一個更好的主意。您也可以重新分析您的頂級方法,並查看是否可以使用多個視頻剪輯而不是一個視頻剪輯。

+0

我會說videomixer會工作..究竟是什麼做多個暫停/流停止?那麼使用身份單一細分? – nayana

+0

一旦視頻流連接到視頻混合器,視頻混合器似乎預計它會表現並傳送幀。如果幀未由一個傳入接收器傳送,則會暫停傳出源。我必須閱讀單段,這對我來說是新的。 – mpr

相關問題