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 pl As MediaPipeline
 
 
   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)
   Repeat
+
   Wait pl.Duration
    Write "\rTempo Trascorso: " & Time(0, 0, 0, pl.Position * 1000)
 
    Wait 0.01
 
  Until bo
 
 
   
 
   
 
   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