Registrare il sonoro da una fonte esterna e salvarlo in un file audio mediante il Componente gb.media

Da Gambas-it.org - Wikipedia.

Il Componente gb.media consente mediante appositi plugin di GStreamer di registrare una fonte sonora esterna (ad esempio da un microfono) e salvare, quanto registrato, in un file audio.

Mostriamo di seguito alcuni casi.


Salvare la registrazione in un file audio WAV (44100 hertz, mono, 16-bit)

Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, wen, snk As MediaControl
 
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "alsasrc")   
  aco = New MediaControl(pl, "audioconvert")
  wen = New MediaControl(pl, "wavenc")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.wav"
  
  src.LinkTo(aco)
  aco.LinkTo(wen)
  wen.LinkTo(snk)
  
  pl.Play()
  
  While pl.State = Media.Playing
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
End


Salvare la registrazione in un file audio WAV (44100 hertz, stereo, 16-bit)

Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, aud, wen, snk As MediaControl
 
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "alsasrc")   
  aco = New MediaControl(pl, "audioconvert")
  aud = New MediaControl(pl, "audio/x-raw,rate=44100,depth=16,channels=2,width=16,signed=true")
  wen = New MediaControl(pl, "wavenc")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.wav"
  
  src.LinkTo(aco)
  aco.LinkTo(aud)
  aud.LinkTo(wen)
  wen.LinkTo(snk)
  
  pl.Play()
  
  While pl.State = Media.Playing
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
End


Salvare la registrazione in un file audio MP3

Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, len, snk As MediaControl
 
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "alsasrc")   
  aco = New MediaControl(pl, "audioconvert")
  len = New MediaControl(pl, "lamemp3enc")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.wav"
  
  src.LinkTo(aco)
  aco.LinkTo(len)
  len.LinkTo(snk)
  
  pl.Play()
  
  While pl.State = Media.Playing
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
End


Salvare la registrazione in un file audio OGG

Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, ven, omu, snk As MediaControl
 
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "alsasrc")   
  aco = New MediaControl(pl, "audioconvert")
  ven = New MediaControl(pl, "vorbisenc")
  omu = New MediaControl(pl, "oggmux")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.ogg"
  
  src.LinkTo(aco)
  aco.LinkTo(ven)
  ven.LinkTo(omu)
  omu.LinkTo(snk)
  
  pl.Play()
  
  While pl.State = Media.Playing
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
End