Estrarre una traccia di un CD audio convertendola in un file OGG-Vorbis con il Componente gb.media

Da Gambas-it.org - Wikipedia.

Per estrarre una traccia di un CD audio e convertirla conseguentemente in un file OGG-Vorbis mediante il Componente gb.media, è possibile utilizzare il plugin cdiocddasrc di GStreamer.

Mostriamo un semplice esempio pratico:

Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "cdiocddasrc")
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "vorbisenc")
 mux = New MediaControl(pl, "oggmux")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/prova.ogg"
 
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(mux)
 mux.LinkTo(snk)
  
' Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file OGG-Vorbis:
 pl.Play()
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration)

 pl.Stop()
 pl.Close()
 
End


Analogamente possiamo utilizzare anche il plugin "cdparanoiasrc" di GStreamer.

Mostriamo un semplice esempio pratico:

Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "cdparanoiasrc")
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "vorbisenc")
 mux = New MediaControl(pl, "oggmux")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/prova.ogg"
  
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(mux)
 mux.LinkTo(snk)
 
' Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file OGG-Vorbis:
 pl.Play()
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration)

 pl.Stop()
 pl.Close()
  
End