GStreamer UDPSRC 在 C# 上的实现

本文关键字:实现 UDPSRC GStreamer | 更新日期: 2023-09-27 18:32:22

我正在尝试将命令行脚本实现到 Gstreamer c# windows 表单应用程序。我将调试设置为"3>错误日志.txt",但该文件始终为空。我无法理解我做错了什么。命令行运行良好,但在 winforms 应用程序中没有任何反应。

这是命令行脚本: 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);
        }

谢谢你的时间。

GStreamer UDPSRC 在 C# 上的实现

它是"2>错误日志.txt"而不是"3>错误日志.txt"。还有你到底把GST_DEBUG定了什么?

最后,请阅读有时垫子。这是一个常见问题解答。您需要处理解复用器上的"pad-add"信号,并从那里链接到队列。