Ottenere un semplice spettroscopio mediante il Componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 7 nov 2023 alle 01:54 di Vuott (Discussione | contributi)
Usando il plugin "spectrascope" di GStreamer è possibile sottoporre il flusso di dati audio a un semplice spettroscopio.
Mostriamo un esempio con un file audio gestito con il plugin decodificatore "decodebin".
Si vedrà il semplice spettroscopio, fornito da GStreamer, e si ascolterà contemporaneamente l'audio.
Private pl As MediaPipeline Private bo As Boolean Public Sub Main() Dim src, dcb, tee, que1, que2 As MediaControl Dim vcon, spe, vsnk As MediaControl Dim acon, asnk As MediaControl pl = New MediaPipeline As "MPipe" src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/audio" dcb = New MediaControl(pl, "decodebin") tee = New MediaControl(pl, "tee") que1 = New MediaControl(pl, "queue") vcon = New MediaControl(pl, "audioconvert") spe = New MediaControl(pl, "spectrascope") vsnk = New MediaControl(pl, "ximagesink") que2 = New MediaControl(pl, "queue") acon = New MediaControl(pl, "audioconvert") asnk = New MediaControl(pl, "autoaudiosink") src.LinkTo(dcb) dcb.LinkLaterTo(tee) ' Parte video: tee.LinkTo(que1) que1.LinkTo(vcon) vcon.LinkTo(spe) spe.LinkTo(vsnk) ' Parte audio: tee.LinkTo(que2) que2.LinkTo(acon) acon.LinkTo(asnk) pl.Play() While pl.Duration < 1 Wait 0.01 Wend Print "La durata del file audio è: "; Time(0, 0, 0, pl.Duration * 1000) Wait pl.Duration pl.Close() End Public Sub MPipe_Position() Write "\rTempo Trascorso: " & Time(0, 0, 0, pl.Position * 1000) Flush End Public Sub MPipe_End() bo = True End