我一直在尝试创建一个简单的音频播放器,我想从命令行运行它,为此我已经使用过Gstreamer
,pygst
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)
根据文档,上面的代码将禁用视频流的自动启用。但是,这并不能解决我的警告问题。
编辑 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)
元素后的问号与我不确定这是正确的措辞有关。