gstreamer appsrc导致随机崩溃

时间:2011-09-21 08:19:10

标签: python gstreamer python-gstreamer

我正在尝试将GStreamer appsrc设置为视频源,但即使是一个简单的程序根本不起作用,并且到目前为止会产生随机崩溃或挂起。你能帮忙发现问题吗?最小的崩溃代码:

import gst, gtk

def need_data(src, need_bytes):
    src.emit("push-buffer", gst.Buffer(" "*need_bytes))

def on_message(bus, msg):
    print "on_message", msg

pipeline = gst.parse_launch("appsrc name=src ! fakesink")

src = pipeline.get_by_name("src")
src.connect("need-data", need_data)
src.set_property("blocksize", 640*480*3)

bus = pipeline.get_bus()
bus.add_signal_watch()
bus.connect("message", on_message)

pipeline.set_state(gst.STATE_PLAYING)
gtk.main()

3 个答案:

答案 0 :(得分:3)

解决方案似乎很简单。在某些时候,程序很幸运地发出了Fatal Python error: GC object already tracked消息,而且很明显:对gobject.threads_init()的调用失踪了。将此调用添加到程序的开头可以解决问题。

答案 1 :(得分:1)

您可以使用gst-debug-level进一步探究问题。

让我们说你的代码在gst-test.py文件中。

像这样启动:

python gst-test.py --gst-debug-level = 3

这将让您更好地了解最新情况。尝试将值从3更改为1以降低噪音。

我的直觉是你错过了帽子。你也可能也要设置道具。

答案 2 :(得分:0)

我遇到过这个问题'已经跟踪过的GC对象'并尝试添加代码gobject.threads_init(),但它仍然没有解决问题。

以下文章中有几点建议来诊断此问题。希望有所帮助。 Python memory debugging with GDB