Registrare il sonoro da una fonte esterna e salvarlo in un file audio mediante il Componente gb.media
Vai alla navigazione
Vai alla ricerca
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