2

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

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)

根据文档,上面的代码将禁用视频流的自动启用。但是,这并不能解决我的警告问题。

编辑 2

好的,element(?) playbin这就像一个现成的管道,包含几个音频和视频相关的东西,对不起,我现在无法更好地解释它。但是似乎 playbin 初始化了一些elements(?)尝试访问X11的 . 我猜因为我没有播放任何与视频相关的内容,所以它不会崩溃。我已经设法编辑了一些,playbin elements(?)但没有一个能修复X11警告。

当前代码如下所示:

self.pipeline = gst.Pipeline("RadioPipe")

self.player = gst.element_factory_make("playbin", "player")
pulse = gst.element_factory_make("pulsesink", "pulse")
fakesink = gst.element_factory_make("fakesink", "fakesink")

self.player.set_property('uri', channel)
self.player.set_property("audio-sink", pulse)
self.player.set_property("video-sink", fakesink)

self.pipeline.add(self.player)

元素后的问号与我不确定这是正确的措辞有关。

4

1 回答 1

1

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

于 2013-03-24T13:10:20.990 回答