如何阻止Gstreamer尝试初始化X11

时间:2013-03-24 12:15:50

标签: python x11 gstreamer pygst

我一直在尝试创建一个简单的音频播放器,我想从命令行运行,为此我使用Gstreamerpygst python绑定和我的代码到目前为止看起来像这样:

import pygst
pygst.require('0.10')
import gst
import os

class Player(object):
    mp3stream = "http://http-live.sr.se/p1-mp3-192"

    def __init__(self):
        self.pipeline = gst.Pipeline("RadioPipe")
        self.player = gst.element_factory_make("playbin", "player")
        self.pipeline.add(self.player)

        self.player.set_property('uri', self.mp3stream)
        self.pipeline.set_state(gst.STATE_PLAYING)

player = Player()

while 1:
    if(1 == 2):
        break    

现在出于某种原因,当我运行此代码时,我收到以下警告:

** (radio.py:7803): WARNING **: Command line `dbus-launch --autolaunch=f12629ad79391c6f12cbbc1a50ccbcc8 --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n

我可以毫无问题地播放音乐,但我会非常摆脱这些警告,现在我认为Gstreamer库出于某种原因尝试启动需要X11的内容但不是'对于音频播放部分是必要的。对此假设的有效性的任何评论都是最受欢迎的。

我可以导入其他内容或传递某种标志来阻止Gstreamer尝试初始化X11吗?

编辑1

我尝试添加此内容:

fakesink = gst.element_factory_make("fakesink", "fakesink")
self.player.set_property("video-sink", fakesink)

根据documentation上述代码,将禁用视频流的自动启用。但这并没有解决我的警告问题。

编辑2

好的,所以element(?) playbin就像一个现成的几个音频和视频相关的东西,我很抱歉我现在无法解释它。但是,似乎playbin初始化了一些试图访问elements(?)的{​​{1}}。我猜测,因为我没有播放任何视频,它不会崩溃。我设法编辑了一些X11,但没有一个修复了playbin elements(?)警告。

目前的代码如下:

X11

元素之后的问号与我无关,不确定是否是正确的措辞。

1 个答案:

答案 0 :(得分:1)

您应该能够在playbin的video属性中禁用flag标志。或者,如果您确实需要视频并知道所需的视频接收器,请相应地设置video-sink属性。