Convertire i formati audio mediante il Componente gb.media

Da Gambas-it.org - Wikipedia.

Utilizzando i plugin di GStreamer con le Classi MediaControl e MediaPipeline del Componente gb.media, è possibile effettuare diverse conversioni di file audio da un formato ad un altro.

Mostriamo di seguito qualche esempio pratico.

Conversione audio dal formato WAV al formato MP3

Library "libc:6"

' void exit (int __status)
' Terminate program execution with STATUS.
Private Extern exit_C(i As Integer) As Integer Exec "exit"


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, wprs, cnv, lam, snk As MediaControl
  
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "filesrc")
  src["location"] = "/percorso/del/file.wav"   ' "location" è una proprietà del plugin "filesrc"
  
  wprs = New MediaControl(pl, "wavparse")
  cnv = New MediaControl(pl, "audioconvert")
  lam = New MediaControl(pl, "lamemp3enc")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.mp3"
  
' Colleghiamo fra loro all'interno della pipeline gli oggetti MediaControl impostati:
  src.LinkTo(wprs)
  wprs.LinkTo(cnv)
  cnv.LinkTo(lam)
  lam.LinkTo(snk)
  
  pl.State = Media.Playing
  pl.Play()
  
  Sleep 1
  
  While pl.Duration > pl.Position
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
  exit_C(0)
  
End


Conversione audio dal formato WAV al formato OGG

Library "libc:6"

' void exit (int __status)
' Terminate program execution with STATUS.
Private Extern exit_C(i As Integer) As Integer Exec "exit"


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, wprs, cnv, vor, mux, snk As MediaControl
  
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "filesrc")
  src["location"] = "/percorso/del/file.wav"   ' "location" è una proprietà del plugin "filesrc"
  
  wprs = New MediaControl(pl, "wavparse")
  cnv = New MediaControl(pl, "audioconvert")
  vor = New MediaControl(pl, "vorbisenc")
  mux = New MediaControl(pl, "oggmux")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.ogg"
  
  src.LinkTo(wprs)
  wprs.LinkTo(cnv)
  cnv.LinkTo(vor)
  vor.LinkTo(mux)
  mux.LinkTo(snk)
  
  pl.State = Media.Playing
  pl.Play()
  
  Sleep 1
  
  While pl.Duration > pl.Position
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
  exit_C(0)
  
End


Conversione audio dal formato MP3 al formato OGG

Library "libc:6"

' void exit (int __status)
' Terminate program execution with STATUS.
Private Extern exit_C(i As Integer) As Integer Exec "exit"


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, mad, cnv, vor, mux, snk As MediaControl
  
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "filesrc")
  src["location"] = "/percorso/del/file.mp3"   ' "location" è una proprietà del plugin "filesrc"
  
  mad = New MediaControl(pl, "mad")
  cnv = New MediaControl(pl, "audioconvert")
  vor = New MediaControl(pl, "vorbisenc")
  mux = New MediaControl(pl, "oggmux")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.ogg"
  
  src.LinkTo(mad)
  mad.LinkTo(cnv)
  cnv.LinkTo(vor)
  vor.LinkTo(mux)
  mux.LinkTo(snk)
  
  pl.State = Media.Playing
  pl.Play()
  
  Sleep 1
  
  While pl.Duration > pl.Position
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
  exit_C(0)
  
End