Differenze tra le versioni di "Ottenere un semplice spettroscopio mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Usando il plugin "[https://gstreamer.freedesktop.org/documentation/audiovisualizers/spectrascope.html?gi-language=c spectrascope]" | + | Usando il plugin "[https://gstreamer.freedesktop.org/documentation/audiovisualizers/spectrascope.html?gi-language=c 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" | + | 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. | ||
Private bo As Boolean | Private bo As Boolean | ||
Riga 8: | Riga 9: | ||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
− | Dim src, dcb, | + | Dim src, dcb, tee, que1, que2 As MediaControl |
+ | Dim vcon, spe, vsnk As MediaControl | ||
+ | Dim acon, asnk As MediaControl | ||
pl = New MediaPipeline As "MPipe" | pl = New MediaPipeline As "MPipe" | ||
Riga 15: | Riga 18: | ||
src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/audio''</font>" | src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/audio''</font>" | ||
dcb = New MediaControl(pl, "decodebin") | 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") | 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) | src.LinkTo(dcb) | ||
− | dcb.LinkLaterTo( | + | dcb.LinkLaterTo(tee) |
− | + | <FONT Color=gray>' '''''Parte video:'''''</font> | |
− | spe.LinkTo( | + | tee.LinkTo(que1) |
+ | que1.LinkTo(vcon) | ||
+ | vcon.LinkTo(spe) | ||
+ | spe.LinkTo(vsnk) | ||
+ | <FONT Color=gray>' '''''Parte audio:'''''</font> | ||
+ | tee.LinkTo(que2) | ||
+ | que2.LinkTo(acon) | ||
+ | acon.LinkTo(asnk) | ||
pl.Play() | pl.Play() |
Versione delle 10:17, 6 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". BR>Si vedrà il semplice spettroscopio, fornito da GStreamer, e si ascolterà contemporaneamente l'audio.
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline 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) Repeat Write "\rTempo Trascorso: " & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo pl.Close() End Public Sub MPipe_End() bo = True End