コマンドラインから実行したいシンプルなオーディオプレーヤーを作成しようとしました。これは、これまで使用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
オーディオとビデオ関連のいくつかの既製のパイプのようなものです。申し訳ありませんが、今はうまく説明できません。ただし、 playbinelements(?)
はアクセスしようとするものを初期化しているようです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)
要素の後の疑問符は、それが正しい言い回しであるか確信が持てないことに関係しています。