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 1: Riga 1:
 
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.
 
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.
+
Mostriamo di seguito alcuni casi con applicazioni ''a riga di comando'', nei quali per interrompere la registrazione è sufficiente premere il tasto "''Invio''".  
  
  
 
===Salvare la registrazione in un file audio WAV (44100 hertz, ''mono'', 16-bit)===
 
===Salvare la registrazione in un file audio WAV (44100 hertz, ''mono'', 16-bit)===
 +
Private bo As Boolean
 +
 +
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, aco, wen, snk As MediaControl
 
   Dim src, aco, wen, snk As MediaControl
    
+
   Dim primofile As String
 +
 
 +
  primofile = "/tmp/primofile.wav"
 +
  bo = True
 +
 
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
 
    
 
    
Riga 16: Riga 23:
 
   wen = New MediaControl(pl, "wavenc")
 
   wen = New MediaControl(pl, "wavenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "<FONT Color=gray>''/percorso/del/file.wav''</font>"
+
   snk["location"] = primofile
 
    
 
    
 
   src.LinkTo(aco)
 
   src.LinkTo(aco)
Riga 24: Riga 31:
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   While pl.State = Media.Playing
+
   While bo
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 +
    Wait 0.001
 
   Wend
 
   Wend
 +
 
 +
  Copy primofile To "/tmp/audio.wav"
 +
 
 +
  pl.Stop()
 +
  pl.Close()
 +
  Print "Termine registrazione"
 +
  Quit
 +
 
 +
'''End'''
 +
 +
 +
'''Public''' Sub Application_Read()
 +
 
 +
  Dim s As String
 +
 
 +
  Input s
 +
 
 +
  bo = False
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 32: Riga 58:
  
 
===Salvare la registrazione in un file audio WAV (44100 hertz, ''stereo'', 16-bit)===
 
===Salvare la registrazione in un file audio WAV (44100 hertz, ''stereo'', 16-bit)===
 +
Private bo As Boolean
 +
 +
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
   Dim src, aco, aud, wen, snk As MediaControl
+
   Dim src, aco, wen, snk As MediaControl
    
+
   Dim flt As MediaFilter
 +
  Dim primofile As String
 +
 
 +
  primofile = "/tmp/primofile.wav"
 +
  bo = True
 +
 
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
 
    
 
    
 
   src = New MediaControl(pl, "alsasrc")   
 
   src = New MediaControl(pl, "alsasrc")   
 
   aco = New MediaControl(pl, "audioconvert")
 
   aco = New MediaControl(pl, "audioconvert")
   aud = New MediaControl(pl, "audio/x-raw,rate=44100,depth=16,channels=2,width=16,signed=true")
+
   flt = New MediaControl(pl, "audio/x-raw,rate=44100,depth=16,channels=2,width=16,signed=true")
 
   wen = New MediaControl(pl, "wavenc")
 
   wen = New MediaControl(pl, "wavenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "<FONT Color=gray>''/percorso/del/file.wav''</font>"
+
   snk["location"] = primofile
 
    
 
    
 
   src.LinkTo(aco)
 
   src.LinkTo(aco)
Riga 53: Riga 87:
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   While pl.State = Media.Playing
+
   While bo
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 +
    Wait 0.001
 
   Wend
 
   Wend
 +
 
 +
  Copy primofile To "/tmp/audio.wav"
 +
 
 +
  pl.Stop()
 +
  pl.Close()
 +
  Print "Termine registrazione"
 +
  Quit
 +
 
 +
'''End'''
 +
 +
 +
'''Public''' Sub Application_Read()
 +
 
 +
  Dim s As String
 +
 
 +
  Input s
 +
 
 +
  bo = False
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 61: Riga 114:
  
 
===Salvare la registrazione in un file audio MP3===
 
===Salvare la registrazione in un file audio MP3===
 +
Private bo As Boolean
 +
 +
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, aco, len, snk As MediaControl
 
   Dim src, aco, len, snk As MediaControl
    
+
   Dim primofile As String
 +
 
 +
  primofile = "/tmp/primofile.mp3"
 +
  bo = True
 +
 
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
 
    
 
    
Riga 72: Riga 132:
 
   len = New MediaControl(pl, "lamemp3enc")
 
   len = New MediaControl(pl, "lamemp3enc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "<FONT Color=gray>''/percorso/del/file.wav''</font>"
+
   snk["location"] = primofile
 
    
 
    
 
   src.LinkTo(aco)
 
   src.LinkTo(aco)
Riga 80: Riga 140:
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   While pl.State = Media.Playing
+
   While bo
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 +
    Wait 0.001
 
   Wend
 
   Wend
 +
 
 +
  Copy primofile To "/tmp/audio.mp3"
 +
 
 +
  pl.Stop()
 +
  pl.Close()
 +
  Print "Termine registrazione"
 +
  Quit
 +
 
 +
'''End'''
 +
 +
 +
'''Public''' Sub Application_Read()
 +
 
 +
  Dim s As String
 +
 
 +
  Input s
 +
 
 +
  bo = False
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 88: Riga 167:
  
 
===Salvare la registrazione in un file audio OGG===
 
===Salvare la registrazione in un file audio OGG===
 +
Private bo As Boolean
 +
 +
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, aco, ven, omu, snk As MediaControl
 
   Dim src, aco, ven, omu, snk As MediaControl
    
+
   Dim primofile As String
 +
 
 +
  primofile = "/tmp/primofile.ogg"
 +
  bo = True
 +
 
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
 
    
 
    
Riga 100: Riga 186:
 
   omu = New MediaControl(pl, "oggmux")
 
   omu = New MediaControl(pl, "oggmux")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "<FONT Color=gray>''/percorso/del/file.ogg''</font>"
+
   snk["location"] = primofile
 
    
 
    
 
   src.LinkTo(aco)
 
   src.LinkTo(aco)
Riga 109: Riga 195:
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   While pl.State = Media.Playing
+
   While bo
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 
     Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
 +
    Wait 0.001
 
   Wend
 
   Wend
 +
 
 +
  Copy primofile To "/tmp/audio.ogg"
 +
 
 +
  pl.Stop()
 +
  pl.Close()
 +
  Print "Termine registrazione"
 +
  Quit
 +
 
 +
'''End'''
 +
 +
 +
'''Public''' Sub Application_Read()
 +
 
 +
  Dim s As String
 +
 
 +
  Input s
 +
 
 +
  bo = False
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 04:52, 9 ago 2017

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 con applicazioni a riga di comando, nei quali per interrompere la registrazione è sufficiente premere il tasto "Invio".


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

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, wen, snk As MediaControl
 Dim primofile As String
  
  primofile = "/tmp/primofile.wav"
  bo = True
  
  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"] = primofile
  
  src.LinkTo(aco)
  aco.LinkTo(wen)
  wen.LinkTo(snk)
  
  pl.Play()
  
  While bo
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
    Wait 0.001
  Wend
  
  Copy primofile To "/tmp/audio.wav"
  
  pl.Stop()
  pl.Close()
  Print "Termine registrazione"
  Quit
  
End


Public Sub Application_Read()
 
 Dim s As String
 
  Input s
  
  bo = False
  
End


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

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, wen, snk As MediaControl
 Dim flt As MediaFilter
 Dim primofile As String
  
  primofile = "/tmp/primofile.wav"
  bo = True
  
  pl = New MediaPipeline 
  
  src = New MediaControl(pl, "alsasrc")   
  aco = New MediaControl(pl, "audioconvert")
  flt = 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"] = primofile
  
  src.LinkTo(aco)
  aco.LinkTo(aud)
  aud.LinkTo(wen)
  wen.LinkTo(snk)
  
  pl.Play()
  
  While bo
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
    Wait 0.001
  Wend
  
  Copy primofile To "/tmp/audio.wav"
  
  pl.Stop()
  pl.Close()
  Print "Termine registrazione"
  Quit
  
End


Public Sub Application_Read()
 
 Dim s As String
 
  Input s
  
  bo = False
  
End


Salvare la registrazione in un file audio MP3

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, len, snk As MediaControl
 Dim primofile As String
  
  primofile = "/tmp/primofile.mp3"
  bo = True
  
  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"] = primofile
  
  src.LinkTo(aco)
  aco.LinkTo(len)
  len.LinkTo(snk)
  
  pl.Play()
  
  While bo
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
    Wait 0.001
  Wend
  
  Copy primofile To "/tmp/audio.mp3"
  
  pl.Stop()
  pl.Close()
  Print "Termine registrazione"
  Quit
  
End


Public Sub Application_Read()
 
 Dim s As String
 
  Input s
  
  bo = False
  
End


Salvare la registrazione in un file audio OGG

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, aco, ven, omu, snk As MediaControl
 Dim primofile As String
  
  primofile = "/tmp/primofile.ogg"
  bo = True
  
  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"] = primofile
  
  src.LinkTo(aco)
  aco.LinkTo(ven)
  ven.LinkTo(omu)
  omu.LinkTo(snk)
  
  pl.Play()
  
  While bo
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
    Wait 0.001
  Wend
  
  Copy primofile To "/tmp/audio.ogg"
  
  pl.Stop()
  pl.Close()
  Print "Termine registrazione"
  Quit
  
End


Public Sub Application_Read()
 
 Dim s As String
 
  Input s
  
  bo = False
  
End