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

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
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