В следующем коде не приходит сообщение с именем “level” от GstLevel. Как его получить или что я делаю не так?
import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst, Gtk
GObject.threads_init()
Gst.init(None)
class MyLPlayer(object):
def __init__(self):
self.pipeline = Gst.Pipeline.new(None)
self.bus = self.pipeline.get_bus()
self.bus.add_signal_watch()
self.bus.connect('message', self.show_peak)
self.playbin = Gst.ElementFactory.make('playbin', 'Multimedia Player')
self.volume = Gst.ElementFactory.make('volume', 'volume')
self.level = Gst.ElementFactory.make('level', 'audiolevel')
if not self.pipeline.add(self.playbin):
print('NOT')
if not self.pipeline.add(self.volume):
print('NOT')
if not self.pipeline.add(self.level):
print('NOT')
self.playbin.set_property('uri', 'http://icecast.omroep.nl:80/radio1-bb-mp3')
self.pipeline.set_state(Gst.State.PLAYING)
def show_peak(self, bus, message):
s = Gst.Message.get_structure(message)
n = Gst.Structure.get_name(s)
if n == 'level':
s = Gst.Structure.get_value(n, 'rms')
print(s)
def _run(self):
GObject.MainLoop().run()
p = MyLPlayer()
p._run()