簡體   English   中英

如何阻止Gstreamer嘗試初始化X11

[英]How to stop Gstreamer from trying to initialize X11

我一直在嘗試創建一個想要從命令行運行的簡單音頻播放器,為此,我使用了Gstreamerpygst 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初始化了一些嘗試訪問X11 elements(?) 我猜想因為我沒有播放任何與視頻相關的信息,所以它不會崩潰。 我已經設法編輯了一些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)

元素后的問號與我有關,不確定該措詞是否正確。

您應該能夠在playbin的flag屬性中禁用video標志。 或者,如果您確實需要視頻並且知道需要哪個視頻接收器,請相應地設置video-sink屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM