Gambas France BETA


Pas de compte ? Incription

Enregistrer l'audio et la vidéo d’une web-TV avec les ressources du composant gb.media

1
AuteurMessages
vuott#1 Posté le 2/8/2024 à 02:45:29
Ne cedere ineluctabili possimusVoici un possible code pour enregistrer dans un fichier audio-vidéo OGG-Theora l’audio et la vidéo d’une web-TV via le composant gb.media.

------------CODEX--------------------

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

Public Sub Main() ' ...projet en ligne de commande !

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

' Partie pour voir la vidéo:
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)

' Partie pour enregistrer la vidéo:
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)
con.LinkTo(the)
the.LinkTo(ogg)

'''''''''''''''''''''''''''''''''''''''''''''''''
' Partie pour écouter 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)

' Partie pour enregistrer l’audio et créer le fichier OGG-Theora:
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" ' <----- Chemin d'accès au fichier audio OGG-Theora qui sera finalement créé.

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

pl.Play

tm = Now

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

pl.Stop
pl.Close
Quit

End


Public Sub Application_Read() ' Cet événement sera déclenché lorsque vous appuyez sur la touche "Entrée" de votre clavier.

bo = True

End
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#2 Posté le 2/8/2024 à 08:10:35
-- Unus Ex Altera --Pardonnez moi Vuott; j'ai toujours une erreur mais pas la même, voici ce que la console me renvoie :

[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
gbx3: ../../src/xcb_io.c :175 : dequeue_pending_request: l'assertion « !xcb_xlib_unknown_req_in_deq » a échoué.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
valaquarus#3 Posté le 2/8/2024 à 08:16:39
-- Unus Ex Altera --en fait en effectuant plusieurs essais avec le différentes adresses fonctionnant car testées, la seule qui est fonctionnelle avec ce code est celle qui n'est pas commentée, ici :
1
2
3
4
' Private Const WEB_TV As String = "https://clubbingtv-rakuten.amagi.tv/playlist720_p.m3u8"
' Private Const WEB_TV As String = "https://cdn-ue1-prod.tsv2.amagi.tv/linear/qwestAAAA-qwestjazz-uk-samsungtv/playlist.m3u8"
PRIVATE CONST WEB_TV AS STRING = "https://59959724487e3.streamlock.net/stream/live/chunklist_w1203497461.m3u8"
' Private Const WEB_TV As String = "https://gstreamer.freedesktop.org/media/sintel_cropped_multilingual.webm"

les autres renvoient l'erreur mentionnée plus haut.
Par contre le fichier est bien enregistré mais ne peut être lu même par vlc.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
vuott#4 Posté le 2/8/2024 à 09:48:16
Ne cedere ineluctabili possimusDe ces quatre adresses, seule celle-ci ne fonctionne pas pour moi :
"https://gstreamer.freedesktop.org/media/sintel_cropped_multilingual.webm"
« Vita non suavis esse potest, nec Mors amara. »
1