下面的代碼是一個測試用例,它允許我設置和獲取GStreamer URI屬性的位置,但它似乎只在其設置的方法內起作用。任何人都可以看到我在這裏做錯了嗎?GStreamer屬性僅在本地可用
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst, GObject
import time
GObject.threads_init()
Gst.init(None)
class MusicPlayer(object):
def __init__(self):
self.player = Gst.ElementFactory.make("playbin", "player")
fakesink = Gst.ElementFactory.make("fakesink", "fakesink")
self.player.set_property("video-sink", fakesink)
def set_track(self, filepath):
filepath = filepath.replace('%', '%25').replace('#', '%23')
self.player.set_property("uri", filepath)
print(self.player.get_property("uri"))#prints the correct information
def get_track(self):
return self.player.get_property("uri")
def play_item(self):
self.player.set_state(Gst.State.PLAYING)
def pause_item(self):
self.player.set_state(Gst.State.PAUSED)
def stop_play(self):
self.player.set_state(Gst.State.NULL)
import time
def main():
app = MusicPlayer()
app.set_track("file:///media/Media/Music/Bob Dylan/Modern Times/06 - Workingman's Blues #2.ogg")
app.play_item()
print(app.get_track())#prints 'None'
time.sleep(5)
app.pause_item()
time.sleep(1)
app.play_item()
time.sleep(5)
app.stop_play()
main()
好吧,它不會在我的系統python 2.7.2上重置它,但是我必須刪除'gi.require_version'才能讓它運行。 –
這個提示rudolf啊thx,它似乎是gstreamer 1.0的一個問題,回到gstreamer0.10它的工作原理,不幸的是雖然他們缺少0.10的自省綁定功能,所以我想現在不得不爲它工作。 – Mike