Differenze tra le versioni di "Riproduzione e contemporanea registrazione dell'audio di radio WEB mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 16: | Riga 16: | ||
src = New MediaControl(pl, "uridecodebin") | src = New MediaControl(pl, "uridecodebin") | ||
− | src["uri"] = <FONT Color=gray>''"http | + | src["uri"] = <FONT Color=gray>''"http://Indirizzo/web/del/flusso/dei/dati/audio/della/radio''</font>" |
tee = New MediaControl(pl, "tee") | tee = New MediaControl(pl, "tee") |
Versione delle 16:00, 9 nov 2020
Per riprodurre e contemporaneamente registrare i dati audio di una radio web mediante le Classi "MediaPipeline" e "MediaControl" del Componente gb.media, è necessario dividere mediante il plugin "tee" di GStreamer il flusso di dati audio, sostanzialmente duplicandolo: un ramo servirà per l'uscita in riproduzione sonora, l'altro per l'uscita da salvare in un file audio.
Nell'esempio in ambiente grafico, che segue, si utilizzerà il plugin "uridecodebin " per decodificare i dati audio ricevuti, che saranno riprodotti e anche salvati in un file di formato OGG.
Private pl As MediaPipeline Public Sub ToggleButton1_Click() Dim src, tee, que As MediaControl Dim cnv1, snk1 As MediaControl Dim cnv2, ven, omu, snk2 As MediaControl Dim tm As Date If ToggleButton1.Value Then pl = New MediaPipeline src = New MediaControl(pl, "uridecodebin") src["uri"] = "http://Indirizzo/web/del/flusso/dei/dati/audio/della/radio" tee = New MediaControl(pl, "tee") que = New MediaControl(pl, "queue") ' Per ascoltare l'audio della radio web: cnv1 = New MediaControl(pl, "audioconvert") snk1 = New MediaControl(pl, "autoaudiosink") ' Per salvare i dati del flusso audio della radio web in un file di formato OGG: cnv2 = New MediaControl(pl, "audioconvert") ven = New MediaControl(pl, "vorbisenc") omu = New MediaControl(pl, "oggmux") snk2 = New MediaControl(pl, "filesink") snk2["location"] = "/tmp/primoaudio.ogg" ' Cartella dove sarà salvato il file audio di formato OGG: ' Divide il flusso dei dati audio in due rami identici: src.LinkLaterTo(tee) ' 1° ramo dei dati audio (per la riproduzione sonora): tee.LinkTo(que) que.LinkTo(cnv1) cnv1.LinkTo(snk1) ' 2° ramo dei dati audio (per salvare i dati in un file OGG): tee.LinkTo(cnv2) cnv2.LinkTo(ven) ven.LinkTo(omu) omu.LinkTo(snk2) pl.Play() Repeat Wait 0.01 Until pl.State == Media.Playing tm = Now Repeat Me.Caption = Format(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)), "hh:nn:ss") Wait 0.01 Until pl.State == Media.Ready Else pl.Stop pl.Close Endif End Public Sub Form_Close() ' Poiché, chiudendo il "Form", i dati salvati nel file audio vengono inspiegabilmente perduti, è necessario copiare il file audio creato in un altro nuovo file audio identico: Copy "/tmp/primoaudio.ogg" To "/tmp/audiofinale.ogg" End