Differenze tra le versioni di "Ottenere un semplice spettroscopio mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
 
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
  
 
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 bo As Boolean
+
  Private pl As MediaPipeline
 
   
 
   
 
   
 
   
 
  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 44:
 
   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)
+
 +
  pl.Close()
 +
  Print "\nEsecuzione terminata !"
 +
  Quit
 +
 +
End
 +
 +
 +
Public Sub MPipe_Position()
 +
 +
  Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000)
 +
  Flush
 +
 +
End
 +
Con il seguente codice mostreremo lo spettroscopio all'interno di una ''DrawingArea'':
 +
Private pl As MediaPipeline
 +
 +
 +
Public Sub Button1_Click()
 +
 +
  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"] = "<FONT Color=darkgreen>''/percorso/del/file/audio''</font>"
 +
  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)
 +
<FONT Color=gray>' '''''Parte video:'''''</font>
 +
  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)
 +
 +
<FONT Color=gray>' ''Dirige la grafica alla "DrawingArea":''</font>
 +
  vsnk.SetWindow(DrawingArea1)
 +
 +
  pl.Play()
 +
 +
  While pl.Duration < 1
 
     Wait 0.01
 
     Wait 0.01
   Until bo
+
   Wend
 +
 +
  Wait pl.Duration
 
   
 
   
 
   pl.Close()
 
   pl.Close()
 +
  Me.Title = "Esecuzione terminata !"
 
   
 
   
 
  End
 
  End
 
   
 
   
 
   
 
   
  Public Sub MPipe_End()
+
  Public Sub MPipe_Position()
 
   
 
   
   bo = True
+
   Me.Title = "Durata audio: " & Str(Time(0, 0, 0, pl.Duration * 1000)) &
 +
            "  -  " & Str(Time(0, 0, 0, pl.Position * 1000))
 
   
 
   
 
  End
 
  End

Versione attuale delle 03:52, 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


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()
 Print "\nEsecuzione terminata !"
 Quit

End


Public Sub MPipe_Position()

 Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000)
 Flush 

End

Con il seguente codice mostreremo lo spettroscopio all'interno di una DrawingArea:

Private pl As MediaPipeline


Public Sub Button1_Click()

 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)

' Dirige la grafica alla "DrawingArea":
 vsnk.SetWindow(DrawingArea1)

 pl.Play()

 While pl.Duration < 1
   Wait 0.01
 Wend

 Wait pl.Duration

 pl.Close()
 Me.Title = "Esecuzione terminata !"

End


Public Sub MPipe_Position()

 Me.Title = "Durata audio: " & Str(Time(0, 0, 0, pl.Duration * 1000)) &
            "  -  " & Str(Time(0, 0, 0, pl.Position * 1000))

End