获取管道上限

时间:2014-04-14 10:23:31

标签: java gstreamer

我是GStreamer的新手,我尝试从Java中获取Caps属性。如果我在命令行尝试此管道

gst-launch-0.10 -v --gst-debug-level=2 filesrc location="C:/Dokumenty/Eclipse/rtsp_test/trailer.mp4" ! decodebin2 ! queue ! jpegenc ! rtpjpegpay ! udpsink host=::1 port=5000 sync=true

它工作正常并返回我需要的大写字母

/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)96, ssrc=(uint)3175930633, clock-base=(uint)3850186239, seqnum-base=(uint)8531

但我不知道,如何从管道中获取Java封装

pipe = Pipeline.launch("filesrc location="C:/Dokumenty/Eclipse/rtsp_test/trailer.mp4" ! decodebin2 ! queue ! jpegenc ! rtpjpegpay ! udpsink host=::1 port=5000 sync=true");

有没有什么方法可以从管道中获取udpsink0?

谢谢

1 个答案:

答案 0 :(得分:1)

如果您查看BinPipeline的父类)的文档,您会看到有几种方法可以获取单个元素。最简单的方法是使用:Bin.getElementByName("udpsink0")

更通用的方法是调用Bin.getSinks(),然后从列表中获取第一个结果。这样,即使您使用不同类型的接收器,代码仍然可以工作。

获得Element对象后,您可以使用Element.getStaticPad("sink")获取该垫,最后您可以使用Caps获取Pad.getNegotiatedCaps()对象。

有关更多信息,请查看javadoc,可在以下位置找到:https://code.google.com/p/gstreamer-java/downloads/list

简而言之:

Element sink = pipe.getElementByName("udpsink0");
Pad pad = sink.getStaticPad("sink");
Caps caps = pad.getNegotiatedCaps();