Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/gst_volume_view.py
blob: d0fb1f67521ac852a5280afd6a0948668026e38e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from gi.repository import Gst
from gi.repository import GLib

import sys

mainloop = GLib.MainLoop()

def _messageCb(bus, message):
    if str(type(message.src)) == "<class '__main__.__main__.GstLevel'>":
        s = message.get_structure()
        p = None
        if s:
            p = s.get_value("rms")
            if p:
                st = s.get_value("stream-time")
                print "rms = " + str(p) + "; stream-time = " + str(st)

    if message.type == Gst.MessageType.EOS:
        mainloop.quit()

    elif message.type == Gst.MessageType.ERROR:
        bus.disconnect_by_func(_messageCb)
        mainloop.quit()


if __name__=="__main__":
    #global mainloop
    Gst.init([])
    pipeline = Gst.parse_launch("uridecodebin name=decode uri=" +  sys.argv[1] + " ! audioconvert ! level name=wavelevel interval=10000000 post-messages=true ! fakesink qos=false name=faked")
    faked = pipeline.get_by_name("faked")
    bus = pipeline.get_bus()
    bus.add_signal_watch()
    bus.connect("message", _messageCb)
    pipeline.set_state(Gst.State.PLAYING)
    mainloop.run()
    pipeline.set_state(Gst.State.NULL)