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"] = | + | snk["location"] = primofile |
src.LinkTo(aco) | src.LinkTo(aco) | ||
Riga 24: | Riga 31: | ||
pl.Play() | pl.Play() | ||
− | While | + | 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 | + | 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") | ||
− | + | 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"] = | + | snk["location"] = primofile |
src.LinkTo(aco) | src.LinkTo(aco) | ||
Riga 53: | Riga 87: | ||
pl.Play() | pl.Play() | ||
− | While | + | 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"] = | + | snk["location"] = primofile |
src.LinkTo(aco) | src.LinkTo(aco) | ||
Riga 80: | Riga 140: | ||
pl.Play() | pl.Play() | ||
− | While | + | 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"] = | + | snk["location"] = primofile |
src.LinkTo(aco) | src.LinkTo(aco) | ||
Riga 109: | Riga 195: | ||
pl.Play() | pl.Play() | ||
− | While | + | 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 03: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".
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