Может кто сталкивался. Подскажите как исправить не корректное отображение данных получаемых по средствам плагина level.
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst
from gi.repository import Gtk
from gi.repository import GObject
GObject.threads_init()
Gst.init_check(None)
class MyLPlayer(object):
def __init__(self):
uri = 'http://icecast.omroep.nl:80/radio1-bb-mp3'
self.pipeline = Gst.Pipeline.new('player')
self.caps = Gst.Caps.from_string('audio/x-raw, rate=44100, channels=2')
self.bus = self.pipeline.get_bus()
self.bus.add_signal_watch()
self.bus.connect('message', self.show_peak)
self.playbin = Gst.ElementFactory.make('playbin', None)
self.autoaudiosrc = Gst.ElementFactory.make('autoaudiosrc', None)
self.audioconvert = Gst.ElementFactory.make('audioconvert', None)
self.level = Gst.ElementFactory.make('level', None)
self.fakesink = Gst.ElementFactory.make('fakesink', None)
self.pipeline.add(self.playbin)
self.pipeline.add(self.autoaudiosrc)
self.pipeline.add(self.audioconvert)
self.pipeline.add(self.level)
self.pipeline.add(self.fakesink)
if self.autoaudiosrc.link(self.audioconvert):
print('self.audioconvert')
if self.audioconvert.link_filtered(self.level, self.caps):
print('self.audioconvert.link_filtered(self.level, self.caps)')
if self.level.link(self.fakesink):
print('self.fakesink')
self.fakesink.set_property('sync', True)
self.playbin.set_property('uri', uri)
self.pipeline.set_state(Gst.State.PLAYING)
def show_peak(self, bus, message):
s = Gst.Message.get_structure(message)
if message.type == Gst.MessageType.ELEMENT:
if str(Gst.Structure.get_name(s)) == 'level':
print(s['rms'], s['peak'], s['decay'])
MyLPlayer()
Gtk.main()
Результат не должен быть таким:
[-699.9999998436322, -699.9999998436322] [-349.9999999218161, -349.9999999218161] [-349.9999999218161, -349.9999999218161]