Gambas France BETA


Pas de compte ? Incription

Exécuter les vidéos en les affichant dans ascii art avec les ressources du composant gb.media

12
AuteurMessages
vuott#1 Posté le 1/8/2024 à 14:07:41
Ne cedere ineluctabili possimusPar curiosité, comment le plugin "aatv" de GStreamer transforme-t-il les vidéos avec les ressources du Composant gb.media:

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

Dim pl As MediaPipeline
Dim src, dcb, aa, con, snk As MediaControl
Dim asrc, abin, acon, ares, asnk As MediaControl
Dim filevideo As String
Dim tm As Date

filevideo = "/chemin/du/FICHIER/vidéo"

pl = New MediaPipeline

' Partie vidéo-graphique:
src = New MediaControl(pl, "filesrc")
src["location"] = filevideo
dcb = New MediaControl(pl, "decodebin")
aa = New MediaControl(pl, "aatv")
con = New MediaControl(pl, "videoconvert")
snk = New MediaControl(pl, "autovideosink")

src.LinkTo(dcb)
dcb.LinkLaterTo(aa)
aa.LinkTo(con)
con.LinkTo(snk)

' Partie audio:
asrc = New MediaControl(pl, "filesrc")
asrc["location"] = filevideo
abin = New MediaControl(pl, "decodebin")
acon = New MediaControl(pl, "audioconvert")
ares = New MediaControl(pl, "audioresample")
asnk = New MediaControl(pl, "autoaudiosink")

asrc.LinkTo(abin)
abin.LinkLaterTo(acon)
acon.LinkTo(ares)
ares.LinkTo(asnk)

pl.Play

Repeat ' Tant que la durée de la vidéo n'est pas détectée, le cycle se poursuit
Wait 0.01
Until pl.Duration > 0.00
Print "Durée de la vidéo: "; Time(0, 0, 0, pl.Duration * 1000)
tm = Now
Repeat
Write "\rTemps écoulé: " & Str(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
Wait 0.01
Until DateDiff(tm, Now, gb.Millisecond) >= (pl.Duration * 1000)

pl.Stop
pl.Close

End
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#2 Posté le 1/8/2024 à 14:47:21
-- Unus Ex Altera --Merci Vuott,
je m'en vais de ce pas le tester.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
valaquarus#3 Posté le 1/8/2024 à 14:52:34
-- Unus Ex Altera --Salute Vuott,
j'ai cette erreur et je ne sais pas l'interpréter :



Je n'ai fait que recopier le code dans un formulaire vide.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
vuott#4 Posté le 1/8/2024 à 14:56:49
Ne cedere ineluctabili possimusTibi dico salutem, valaquarus.

Vous devez définir un projet en ligne de commande.
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#5 Posté le 1/8/2024 à 14:57:45
-- Unus Ex Altera --Honte à moi, je n'ai pas fait attention en recopiant que la class se nommait Main.
Mai je n'ai rien qui s'affiche...
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
vuott#6 Posté le 1/8/2024 à 14:59:13
Ne cedere ineluctabili possimusLa vidéo devrait apparaître dans une fenêtre autonome, générée par la ressource GStreamer.
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#7 Posté le 1/8/2024 à 15:03:55
-- Unus Ex Altera --Bah ça ne veut pas j'ai ça maintenant :

Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
vuott#8 Posté le 1/8/2024 à 17:36:21
Ne cedere ineluctabili possimusÉtrange.... :scratch:
« Vita non suavis esse potest, nec Mors amara. »
vuott#9 Posté le 1/8/2024 à 18:11:19
Ne cedere ineluctabili possimusUhmmm... si vous déplacez ce groupe:
1
2
3
4
src.LinkTo(dcb)
dcb.LinkLaterTo(aa)
aa.LinkTo(con)
con.LinkTo(snk)

après la ligne:
1
asnk = NEW MediaControl(pl, "autoaudiosink")

que se passe-t-il ?
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#10 Posté le 1/8/2024 à 18:32:07
-- Unus Ex Altera --Même punition après déplacement, même erreur.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
vuott#11 Posté le 1/8/2024 à 19:03:20
Ne cedere ineluctabili possimusUhmmm... Vita non suavis esse potest... :(
« Vita non suavis esse potest, nec Mors amara. »
vuott#12 Posté le 1/8/2024 à 19:14:19
Ne cedere ineluctabili possimusEssayons de couper le son : Nunc nobis sonus delendus est !
____________________________________________________________________

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

Dim pl As MediaPipeline
Dim src, dcb, aa, con, snk As MediaControl
Dim filevideo As String
Dim tm As Date

filevideo = "/chemin/du/ficher/vidéo"

pl = New MediaPipeline

' Partie vidéo-graphique:
src = New MediaControl(pl, "filesrc")
src["location"] = filevideo
dcb = New MediaControl(pl, "decodebin")
aa = New MediaControl(pl, "aatv")
con = New MediaControl(pl, "videoconvert")
snk = New MediaControl(pl, "autovideosink")

src.LinkTo(dcb)
dcb.LinkLaterTo(aa)
aa.LinkTo(con)
con.LinkTo(snk)

pl.Play

Repeat ' Tant que la durée de la vidéo n'est pas détectée, le cycle se poursuit
Wait 0.01
Until pl.Duration > 0.00
Print "Durée de la vidéo: "; Time(0, 0, 0, pl.Duration * 1000)
tm = Now
Repeat
Write "\rTemps écoulé: " & Str(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
Wait 0.01
Until DateDiff(tm, Now, gb.Millisecond) >= (pl.Duration * 1000)

pl.Stop
pl.Close

End
----------------------------------

que se passe-t-il ?
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#13 Posté le 1/8/2024 à 20:07:34
-- Unus Ex Altera --Je suis désolé, même erreur, bien sûr au même endroit.
Je place votre code au cas où je l'aurais mal copié :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
PUBLIC SUB Main()

DIM pl AS MediaPipeline
DIM src, dcb, aa, con, snk AS MediaControl
DIM asrc, abin, acon, ares, asnk AS MediaControl
DIM filevideo AS STRING
DIM tm AS DATE

' filevideo = "https://cdn-ue1-prod.tsv2.amagi.tv/linear/qwestAAAA-qwestjazz-uk-samsungtv/playlist.m3u8"
' filevideo = "https://59959724487e3.streamlock.net/stream/live/chunklist_w1203497461.m3u8"
' filevideo = "https://clubbingtv-rakuten.amagi.tv/playlist720_p.m3u8"
filevideo = "https://gstreamer.freedesktop.org/media/sintel_cropped_multilingual.webm"

pl = NEW MediaPipeline

' Partie vidéo-graphique:
src = NEW MediaControl(pl, "filesrc")
src["location"] = filevideo
dcb = NEW MediaControl(pl, "decodebin")
aa = NEW MediaControl(pl, "aatv")
con = NEW MediaControl(pl, "videoconvert")
snk = NEW MediaControl(pl, "autovideosink")

src.LinkTo(dcb)
dcb.LinkLaterTo(aa)
aa.LinkTo(con)
con.LinkTo(snk)

' Partie audio:
asrc = NEW MediaControl(pl, "filesrc")
asrc["location"] = filevideo
abin = NEW MediaControl(pl, "decodebin")
acon = NEW MediaControl(pl, "audioconvert")
ares = NEW MediaControl(pl, "audioresample")
asnk = NEW MediaControl(pl, "autoaudiosink")

asrc.LinkTo(abin)
abin.LinkLaterTo(acon)
acon.LinkTo(ares)
ares.LinkTo(asnk)

pl.Play()

REPEAT ' Tant que la durée de la vidéo n'est pas détectée, le cycle se poursuit
WAIT 0.01
UNTIL pl.Duration > 0.00

PRINT "Durée de la vidéo: "Time(0, 0, 0, pl.Duration * 1000)
tm = Now

REPEAT
WRITE "\r\e0mTemps écoulé: \e31m" Str(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
WAIT 0.01

UNTIL DateDiff(tm, Now, gb.Millisecond) >= (pl.Duration * 1000)

pl.Stop
pl.Close

END
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
vuott#14 Posté le 1/8/2024 à 20:47:36
Ne cedere ineluctabili possimus
Je suis désolé, même erreur, bien sûr au même endroit.
Je place votre code au cas où je l'aurais mal copié :
1
2
3
4
' filevideo = "https://cdn-ue1-prod.tsv2.amagi.tv/linear/qwestAAAA-qwestjazz-uk-samsungtv/playlist.m3u8"
' filevideo = "https://59959724487e3.streamlock.net/stream/live/chunklist_w1203497461.m3u8"
' filevideo = "https://clubbingtv-rakuten.amagi.tv/playlist720_p.m3u8"
filevideo = "https://gstreamer.freedesktop.org/media/sintel_cropped_multilingual.webm"

:affraid:
Non, non, non ! Vous devez utiliser un fichier vidéo, pas une adresse web-TV !
« Vita non suavis esse potest, nec Mors amara. »
vuott#15 Posté le 1/8/2024 à 20:54:13
Ne cedere ineluctabili possimusCependant, si vous souhaitez gérer le flux de données d'une web-TV, vous devez utiliser le plugin 'uridecodebin ' de GStreamer:

-------------------------- 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 dcb, aa, con, snk As MediaControl
Dim abin, acon, ares, asnk As MediaControl
Dim tm As Date

pl = New MediaPipeline

' Partie vidéo-graphique:
dcb = New MediaControl(pl, "uridecodebin")
dcb["uri"] = WEB_TV
aa = New MediaControl(pl, "aatv")
con = New MediaControl(pl, "videoconvert")
snk = New MediaControl(pl, "autovideosink")

dcb.LinkLaterTo(aa)
aa.LinkTo(con)
con.LinkTo(snk)

' Partie audio:
abin = New MediaControl(pl, "uridecodebin")
abin["uri"] = WEB_TV
acon = New MediaControl(pl, "audioconvert")
ares = New MediaControl(pl, "audioresample")
asnk = New MediaControl(pl, "autoaudiosink")

abin.LinkLaterTo(acon)
acon.LinkTo(ares)
ares.LinkTo(asnk)

pl.Play

tm = Now

While Not bo
Write "\rTemps écoulé: " & Str(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
Wait 0.01
Wend

pl.Stop
pl.Close
' Après avoir utilisé l’événement "Application_Read()", vous devez utiliser ici l’instruction "Quit" pour terminer le programme:
Quit

End


' En cliquant avec la souris dans la console/terminal puis en appuyant sur la touche "Entrée" du clavier, le programme est terminé
Public Sub Application_Read()

bo = True

End
« Vita non suavis esse potest, nec Mors amara. »
12