2

コマンドラインから実行したいシンプルなオーディオプレーヤーを作成しようとしました。これは、これまで使用GstreamerしてきたpygstPythonバインディングと私のコードが次のようになっているためです。

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)

要素の後の疑問符は、それが正しい言い回しであるか確信が持てないことに関係しています。

4

1 に答える 1

1

videoplaybin のflagプロパティでフラグを無効にできるはずです。または、ビデオが必要で、必要なビデオ シンクがわかっている場合は、video-sinkそれに応じてプロパティを設定します。

于 2013-03-24T13:10:20.990 に答える