我一直在尝试创建一个简单的音频播放器,我想从命令行运行,为此我使用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)
根据documentation上述代码,将禁用视频流的自动启用。但这并没有解决我的警告问题。
编辑2
好的,所以element(?) playbin
就像一个现成的几个音频和视频相关的东西,我很抱歉我现在无法解释它。但是,似乎playbin初始化了一些试图访问elements(?)
的{{1}}。我猜测,因为我没有播放任何视频,它不会崩溃。我设法编辑了一些X11
,但没有一个修复了playbin elements(?)
警告。
目前的代码如下:
X11
元素之后的问号与我无关,不确定是否是正确的措辞。
答案 0 :(得分:1)
您应该能够在playbin的video
属性中禁用flag
标志。或者,如果您确实需要视频并知道所需的视频接收器,请相应地设置video-sink
属性。