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]" èpossibile sottoporre il flusso di dati audio a un semplice spettroscopio.
+
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, con, spe, snk As MediaControl
+
   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")
   con = New MediaControl(pl, "audioconvert")
+
   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")
   snk = New MediaControl(pl, "ximagesink")
+
   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(con)
+
   dcb.LinkLaterTo(tee)
   con.LinkTo(spe)
+
<FONT Color=gray>' '''''Parte video:'''''</font>
   spe.LinkTo(snk)
+
  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