Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2014 14:11:25

ivsatel
Зарегистрирован: 2014-12-06
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Gstreamer, как получить данные из GstLevel (RMS/Peak/Decaying) ?

В следующем коде не приходит сообщение с именем “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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version