Differenze tra le versioni di "Ottenere un semplice spettroscopio mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 3: | Riga 3: | ||
Mostriamo un esempio con un file audio gestito con il plugin decodificatore "decodebin". | Mostriamo un esempio con un file audio gestito con il plugin decodificatore "decodebin". | ||
<BR>Si vedrà il semplice spettroscopio, fornito da ''GStreamer'', e si ascolterà contemporaneamente l'audio. | <BR>Si vedrà il semplice spettroscopio, fornito da ''GStreamer'', e si ascolterà contemporaneamente l'audio. | ||
+ | Private pl As MediaPipeline | ||
Private bo As Boolean | Private bo As Boolean | ||
Riga 8: | Riga 9: | ||
Public Sub Main() | Public Sub Main() | ||
− | |||
Dim src, dcb, tee, que1, que2 As MediaControl | Dim src, dcb, tee, que1, que2 As MediaControl | ||
Dim vcon, spe, vsnk As MediaControl | Dim vcon, spe, vsnk As MediaControl | ||
Riga 45: | Riga 45: | ||
Wend | Wend | ||
Print "La durata del file audio è: "; Time(0, 0, 0, pl.Duration * 1000) | Print "La durata del file audio è: "; Time(0, 0, 0, pl.Duration * 1000) | ||
− | + | Wait pl.Duration | |
− | |||
− | |||
− | |||
pl.Close() | pl.Close() | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub MPipe_Position() | ||
+ | |||
+ | Write "\rTempo Trascorso: " & Time(0, 0, 0, pl.Position * 1000) | ||
+ | Flush | ||
End | End |
Versione delle 02:54, 7 nov 2023
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