2011-08-24 112 views
0

我試圖用rtpbin創建gstreamer管道以流式傳輸網絡攝像頭(可視電話)。然而,我甚至無法使用像下面這樣簡單的代碼片段來工作rtpbin,它只需要網絡攝像頭源代碼和流出來,然後其他udpsrc捕獲RTP包和顯示。所有本地主機。當分成兩個管道並分別啓動時,它就可以工作。但是,這不是。我覺得它有線程的東西,但是我被困在這裏,因爲到目前爲止沒有任何隊列爲我工作。 基本上,我需要的是顯示混合videostream和流出我的攝像頭videostream出遠程聚會。GStreamer RTP全雙工視頻輸入/輸出rtpbin

GST-發射-v \ gstrtpbin名稱= rtpbin \ udpsrc帽=「應用程序/ x-RTP,媒體=(字符串)視頻,時鐘速率=(int)的90000,編碼名稱=(字符串) H263「port = 5000! rtpbin。 \ rtpbin。 ! rtph263depay! ffdec_h263! ffmpegcolorspace! xvimagesink \ v4l2src! video/x-raw-yuv,framerate = 30/1,width = 320,height = 240! videoscale!視頻速率! 「video/x-raw-yuv,width = 352,height = 288,framerate = 30/1」! ffenc_h263! rtph263pay! rtpbin。 \ rtpbin。 ! udpsink端口= 5000

回答

3

好吧,我來回答自己,這足以同步=假異步=假添加到udpsink:

GST推出-v \ gstrtpbin名= rtpbin udpsrc帽= 「application/x-rtp,media =(string)video,clock-rate =(int)90000,encoding-name =(string)H263」port = 5000!隊列! rtpbin。 \ rtpbin。 ! rtph263depay! ffdec_h263! ffmpegcolorspace! xvimagesink \ v4l2src! video/x-raw-yuv,framerate = 30/1,width = 320,height = 240! videoscale!視頻速率! 「video/x-raw-yuv,width = 352,height = 288,framerate = 30/1」! ffenc_h263! rtph263pay! rtpbin。 \ rtpbin。 ! udpsink端口= 5000 同步=假異步=假

+0

按照文檔:「。當元件被設置爲播放,GstBaseSink將使用來自GstBaseSinkClass.get_times()返回的時間的時鐘進行同步。如果該函數返回GST_CLOCK_TIME_NONE對於開始時間,不會進行同步。通過將對象「sync」屬性設置爲FALSE,可以完全禁用同步。「當不同步和異步時,我不知道它想要同步什麼。 –