Registrare il sonoro da una fonte esterna e salvarlo in un file audio mediante il Componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 9 ago 2017 alle 03:52 di Vuott (Discussione | contributi)
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".
Indice
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