Salvare in un file audio con il Componente gb.media l'audio e il video di una web-TV

Da Gambas-it.org - Wikipedia.

Di seguito un esempio pratico per salvare con alcune risorse del Componente gb.media in un file audio WAV l'audio e il video da una web-TV:

Private Const WEB_TV As String = "https://clubbingtv-rakuten.amagi.tv/playlist720_p.m3u8"
Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 Dim dcb1, dcb2, con, snk As MediaControl
 Dim abi1, acon1, ares1, asn1 As MediaControl
 Dim abi2, aco2, asn2, the, vor, ogg As MediaControl
 Dim tm As Date

 pl = New MediaPipeline

' Parte per vedere il video:
 dcb1 = New MediaControl(pl, "uridecodebin")
 dcb1["uri"] = WEB_TV
 con = New MediaControl(pl, "videoconvert")
 snk = New MediaControl(pl, "autovideosink")

 dcb1.LinkLaterTo(con)
 con.LinkTo(snk)

' Parte per registrare il video:
 dcb2 = New MediaControl(pl, "uridecodebin")
 dcb2["uri"] = WEB_TV
 con = New MediaControl(pl, "videoconvert")
 the = New MediaControl(pl, "theoraenc")
 ogg = New MediaControl(pl, "oggmux")

 dcb2.LinkLaterTo(con)
' ...oppure anche:
 ' Dim rat As MediaControl = New MediaControl(pl, "videorate")
 ' Dim flt As MediaFilter = New MediaFilter(pl, "video/x-raw,framerate=30/1")
 ' dcb2.LinkLaterTo(rat)
 ' rat.LinkTo(flt)
 ' flt.LinkTo(con)
 con.LinkTo(the)
 the.LinkTo(ogg)

''''''''''''''''''''''''''''''''''''''''''''
' Parte per ascoltare l'audio:
 abi1 = New MediaControl(pl, "uridecodebin")
 abi1["uri"] = WEB_TV
 acon1 = New MediaControl(pl, "audioconvert")
 ares1 = New MediaControl(pl, "audioresample")
 asn1 = New MediaControl(pl, "autoaudiosink")

 abi1.LinkLaterTo(acon1)
 acon1.LinkTo(ares1)
 ares1.LinkTo(asn1)

' Parte per registrare l'audio e creare il file video OGG-Theora finale:
 abi2 = New MediaControl(pl, "uridecodebin")
 abi2["uri"] = WEB_TV
 aco2 = New MediaControl(pl, "audioconvert")
 vor = New MediaControl(pl, "vorbisenc")
 asn2 = New MediaControl(pl, "filesink")
 asn2["location"] = "/tmp/video.ogg"

 abi2.LinkLaterTo(aco2)
 aco2.LinkTo(vor)
 vor.LinkTo(ogg)
 ogg.LinkTo(asn2)

 pl.Play

 tm = Now

 While Not bo
   Write "\r\e[0mTempo trascorso: \e[31m" & Str(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
   Wait 0.01
 Wend

 pl.Stop
 pl.Close
 Quit

End


' Per terminare il programma e creare il file audio, cliccare nella console/terminale e successivamente premere il tasto "Invio" della tastiera.
Public Sub Application_Read()

 bo = True

End