2012-04-27 23 views
2

我想實現Gstreamer c#窗體表單應用程序的命令行腳本。我將調試設置爲「3> Errorlog.txt」,但該文件始終爲空。我不能得到我做錯了什麼。命令行完美工作,但在winforms應用程序中沒有任何反應。C#上的GStreamer UDPSRC實現#

下面是命令行腳本: gst-launch udpsrc port=1234 multicast-group="127.0.0.1" ! mpegtsdemux name=demuxer ! queue2 ! mpeg2dec ! ffmpegcolorspace ! videoscale ! directdrawsink

和我的實現:

private void Start(){ 

      Gst.Application.Init(); 


      pipeline = new Gst.Pipeline(); 

      udpsrc = Gst.ElementFactory.Make("udpsrc", "source"); 


      udpsrc["port"] = 1234; 
      udpsrc["multicast-group"] = "127.0.0.1"; 


      demux = ElementFactory.Make("mpegtsdemux", "demuxer"); 
      demux["name"] = "demuxer"; 

      queue = ElementFactory.Make("queue2", "videoq"); 


      decode = ElementFactory.Make("mpeg2dec", "decode"); 
      space = ElementFactory.Make("ffmpegcolorspace", "space"); 
      scale = ElementFactory.Make("videoscale", "scale"); 

      MyDrawSink = ElementFactory.Make("directdrawsink", "directdrawsink"); 


      pipeline.Add(udpsrc, demux, queue, decode, space, scale, MyDrawSink); 

      MySinkAdapter = new XOverlayAdapter(MyDrawSink.Handle); 
      MySinkAdapter.XwindowId = (ulong)this.Handle; 

udpsrc.Link(demux); 
      demux.Link(queue); 
      queue.Link(decode); 
      decode.Link(space); 
      space.Link(scale); 
      scale.Link(MyDrawSink); 





      pipeline.SetState(State.Playing); 

     } 

感謝您的時間。

回答

1

它是「2> Errorlog.txt」而不是「3> Errorlog.txt」。另外你到底是什麼設置了GST_DEBUG?

最後,請閱讀有關墊子。這是一個常見問題。您需要處理分路器上的「pad-added」信號並從那裏連接到隊列。

+0

謝謝。 PadAdded事件起作用 void demux_PadAdded(object o,PadAddedArgs args) demux.Link(queue); } – Sarpkaya 2012-05-02 05:56:59