管道将pygst程序从gstreamer 0.10移植到1.0时出错

时间:2016-06-13 16:51:41

标签: gstreamer python-gstreamer gstreamer-0.10

我正在将程序从pygst 0.10移植到1.0,我遇到了管道问题。我在0.10版本中使用的管道运行良好,是:

t1:  0.654838958307
t2:  1.53977598714
t3:  6.7898791732
t5:  0.422228400305

对于1.0版本,管道应该是这样的:

In [8]: eudis1(v1,v2)
Out[8]: 64.60650122085238

In [9]: eudis2(v1,v2)
Out[9]: 64.60650122085238

In [10]: eudis3(v1,v2)
Out[10]: array([[ 64.60650122]])

In [11]: eudis5(v1,v2)
Out[11]: 64.60650122085238

代码是:

udpsrc name=src ! tsparse ! tsdemux ! queue ! ffdec_h264 max-threads=0 ! identity ! xvimagesink force-aspect-ratio=True name=video

我已设置调试标志和输出iS:

udpsrc name=src ! tsparse ! tsdemux ! queue ! avdec_h264 ! videoconvert ! xvimagesink force-aspect-ratio=True name=video

2 个答案:

答案 0 :(得分:0)

你必须使用套接字吗?不能为初学者尝试端口?怎么样udpsrc上限...我认为你必须指定它们,否则它不会被链接(可能)..

我会这样做(不准确 - 你必须调试/调整它):

self.pipeline = Gst.Pipeline()

self.udpsrc = Gst.ElementFactory.make('udpsrc', 'src')
self.pipeline.add(self.udpsrc)
self.udpsrc.set_property("port", 1234)
self.udpsrc.set_property("caps", "your caps)
self.decodebin = Gst.ElementFactory.make("decodebin", None)
self.pipeline.add(self.decodebin)
self.imagesink = Gst.ElementFactory.make('xvimagesink', None)
self.pipeline.add(self.imagesink)

self.udpsrc.link(self.decodebin)
self.decodebin.link(self.imagesink)

答案 1 :(得分:0)

我认为以下行有错误:

self.udpsrc = Gst.ElementFactory.make('udpsrc', 'src')
self.pipeline.add(self.udpsrc)
self.udpsrc.set_property("socket",Gio.Socket().new_from_fd(self.videosocket.fileno()))

他们应该是:

self.udpsrc = Gst.ElementFactory.make('udpsrc', 'src')
self.udpsrc.set_property("socket",Gio.Socket().new_from_fd(self.videosocket.fileno()))
self.pipeline.add(self.udpsrc)