2

ビデオ ソースとして 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()
4

3 に答える 3

4

解決策は非常に単純に見えました。ある時点で、プログラムがFatal Python error: GC object already trackedメッセージを吐き出すことができて幸運gobject.threads_init()でした。この呼び出しをプログラムの先頭に追加すると、問題が修正されました。

于 2011-09-21T10:52:00.637 に答える
1

gst-debug-levelを使用して、問題をさらに詳しく調べることができます。

あなたのコードがファイルgst-test.pyにあるとしましょう。

次のように起動します。

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

これにより、何が起こっているかについてより良いアイデアが得られます。ノイズを下げるには、値を3から1に変更してみてください。

私の腸の感覚は、あなたがキャップを逃しているということです。また、おそらく小道具も設定する必要があります。

于 2011-09-21T08:34:26.310 に答える