2012-10-13 15 views
0

下面的代碼是一個測試用例,它允許我設置和獲取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() 
+0

好吧,它不會在我的系統python 2.7.2上重置它,但是我必須刪除'gi.require_version'才能讓它運行。 –

+1

這個提示rudolf啊thx,它似乎是gstreamer 1.0的一個問題,回到gstreamer0.10它的工作原理,不幸的是雖然他們缺少0.10的自省綁定功能,所以我想現在不得不爲它工作。 – Mike

回答

1

發現原來的GStreamer 1.0具有播放網址和設定網址單獨propertys,因此我需要使用

self.player.get_property("current-uri") 

,而不是

self.player.get_property("uri") 
的gstreamer0.10財產
0

這並不明顯,因此在gstreamer-1.0中重複說明,當某些東西正在播放時,self.player.get_property('uri')命令將返回None。

您需要使用self.player.get_property('current-uri')獲得您所追求的價值,即使你只是使用設置self.player.set_property('uri').
If the the file is NOT PLAYING the
self.player.get_property屬性(「當前-URI」)返回無

總結:
如果該文件正在播放使用self.player.get_property('current-uri')
如果不使用self.player.get_property('uri')

,如果它是一個設計的「功能」太臭!

相關問題