擅长:python、mysql、java
<p>我很肯定公认的答案是不正确的。<code>add_signal_watch_full</code>和<code>add_signal_watch</code>之间的唯一区别是前者允许您设置事件源的优先级,而后者只使用<code>G_PRIORITY_DEFAULT</code>调用前者。您可以在C<a href="http://cgit.freedesktop.org/gstreamer/gstreamer/tree/gst/gstbus.c?h=0.10" rel="nofollow">source code</a>,行号940中进行验证。优先级只是影响事件被触发的顺序,不应该影响是否被触发,当然也不会影响信号消息的内容,这就是这里的问题所在。我甚至用不同的优先级值对它进行了测试,如果有一种方法可以实现的话,我会吃了我的帽子。:-)</p>
<p>真正的答案是它不起作用。PyGObject和GStreamer0.10不能很好地协同工作。参见:</p>
<ul>
<li><a href="http://gstreamer-devel.966125.n4.nabble.com/GStreamer-via-PyGObject-introspection-td3797220.html" rel="nofollow">GStreamer mailing list thread</a></li>
<li><a href="https://bugzilla.gnome.org/show_bug.cgi?id=631901" rel="nofollow">PyGObject bug</a>,如上所述。在</li>
<li><a href="https://wiki.ubuntu.com/Novacut/GStreamer1.0#Python_Porting_Guide" rel="nofollow">A useful page from the Novacut Wiki</a></li>
</ul>
<p>后者说:“请注意,尽管您可以将GStreamer0.10与PyGI一起使用,但关键功能在根本上是被破坏的,并且永远不会在GStreamer0.10中得到修复(因为它需要API中断)。”</p>
<p>那么,你的选择是:</p>
<ul>
<li>需要GStreamer 1.0。在</li>
<li>使用旧的PyGST绑定。在</li>
<li>在gstreamer0.10中使用PyGObject,但不能检查EOS之类的消息。只有非常基本的东西才有用。在</li>
</ul>