Differenze tra le versioni di "Registrare il sonoro da una fonte esterna e salvarlo in un file audio mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
  
===Salvare la registrazione in un file audio WAV===
+
===Salvare la registrazione in un file audio WAV (44100 hertz, ''mono'', 16-bit)===
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
Riga 20: Riga 20:
 
   src.LinkTo(aco)
 
   src.LinkTo(aco)
 
   aco.LinkTo(wen)
 
   aco.LinkTo(wen)
 +
  wen.LinkTo(snk)
 +
 
 +
  pl.State = Media.Playing
 +
  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"] = "<FONT Color=gray>''/percorso/del/file.wav''</font>"
 +
 
 +
  src.LinkTo(aco)
 +
  aco.LinkTo(aud)
 +
  aud.LinkTo(wen)
 
   wen.LinkTo(snk)
 
   wen.LinkTo(snk)
 
    
 
    

Versione delle 17:53, 1 ott 2016

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.State = Media.Playing
  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.State = Media.Playing
  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.State = Media.Playing
  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.State = Media.Playing
  pl.Play()
  
  While pl.State = Media.Playing
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
  
End