Gambas France BETA


Pas de compte ? Incription

Multimédia :

Multimédia :


- Audio et Vidéo :


Un petit code de Vuott pour obtenir un lecteur audio simple, utile pour l'écoute de webradios, de fichiers audio et visionner ses vidéos, avec affichage possible de métadonnées et un spectroscope simple, basé sur les ressources du système audio 'GStreamer'.
Il est donc nécessaire d'activer le composant "gb.media".

Déclarations :
1
2
3
4
5
6
PRIVATE TextArea1 AS TextArea
PRIVATE DrawingArea1 AS DrawingArea
PRIVATE ToggleButton1 AS ToggleButton
PRIVATE mp AS MediaPlayer
PRIVATE Meta AS NEW Collection
PRIVATE ss AS NEW String[]

Ouverture du formulaire principal :
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
PUBLIC SUB Form_Open()

ME.Resize(Screen.AvailableWidth * 0.33, Screen.AvailableHeight * 0.73)

WITH TextArea1 = NEW TextArea(ME)
.X = ME.W * 0.02
.Y = ME.H * 0.02
.W = ME.W * 0.96
.H = ME.H * 0.4
END WITH
WITH DrawingArea1 = NEW DrawingArea(ME)
.X = ME.W * 0.02
.Y = ME.H * 0.43
.W = ME.W * 0.96
.H = ME.H * 0.46
END WITH
WITH ToggleButton1 = NEW ToggleButton(ME) AS "ToggleButton1"
.W = ME.W * 0.3
.X = (ME.W * 0.5) - (.W / 2)
.Y = ME.H * 0.9
.H = ME.H * 0.08
.Foreground = Color.Green
.Text = "Start"
END WITH

END

Le contrôle du MediaPlayer :
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
PUBLIC SUB ToggleButton1_Click()

IF ToggleButton1.Value THEN
DIM plugVis AS MediaControl
DIM tipoPlug AS String[] = ["goom", "monoscope", "spacescope",
"spectrascope", "synaescope", "wavescope"]
TextArea1.Clear
WITH mp = NEW MediaPlayer AS "MediaPlayer1"
plugVis = NEW MediaControl(mp, tipoPlug[3])
.Video.Output = NEW MediaControl(mp, "ximagesink")
.SetWindow(DrawingArea1)
' Écoutons une webradio......
.URL = "https://icy.unitedradio.it/VirginRock70.mp3"
' Si nous voulons lire un fichier audio ou vidéo, nous devons remplacer la ligne précédente par celle-ci:
' .URL = Media.URL("/Chemin/d'accès/au/fichier/audio/ou/vidéo")
.Play
.Video.Visualisation = plugVis
END WITH
ToggleButton1.Foreground = Color.Red
ToggleButton1.Text = "Stop"
ELSE
mp.Stop
mp.Close
ToggleButton1.Foreground = Color.Green
ToggleButton1.Text = "Start"
ENDIF

END

Récupération des MetaDonnées :
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
PUBLIC SUB MediaPlayer1_Tag(tagList AS MediaTagList)

FOR EACH tag AS STRING IN tagList.Tags
IF NOT Meta.Exist(tag) THEN
Meta[tag] = tagList[tag]
ss.Push(tag)
ss.Push(tagList[tag])
ELSE
ss[ss.Find(tag) + 1] = tagList[tag]
ENDIF
NEXT

TextArea1.Clear
FOR c AS SHORT = 0 TO ss.Max STEP 2
TextArea1.Text &= ss[c] & ": " & ss[c + 1] & gb.NewLine
NEXT

END


PUBLIC SUB MediaPlayer1_Position()

ME.Title = Str(Time(0, 0, 0, mp.Pos * 1000))

END


PUBLIC SUB MediaPlayer1_End()

ToggleButton1.Value = FALSE

END



Comment enregistrer un flux d'internet avec quelques lignes de code :



Plaçons les composants : gb.net, gb.net.curl dans notre projet graphique minimaliste afin d'utiliser le HTTPClient.
Plaçons un toggleButton nommé TgBsauve, sur notre formulaire.

Les déclarations mini :

1
2
3
4
5
6
7
8
PRIVATE $i AS INTEGER 'indice du fichier webradio à enregistrer
PRIVATE $sAdress AS STRING 'variable devant contenir le futur flux
PRIVATE $hFile AS File 'fichier devant contenir le flux enregistré
PRIVATE $bConnect AS BOOLEAN 'connecté ou non
PRIVATE $sTemp AS STRING 'variable temporaire
PRIVATE $ht AS HttpClient 'création du client HTTP

PUBLIC sDirAudio AS STRING 'chemin d'enregistrement audio


Le code en quelques lignes :

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
61
62
63
64
65
66
67
68
69
PUBLIC SUB TgBsauve_Click() 'toggleButton de sauvegarde

sDirAudio = user.home

$hFile = OPEN sDirAudio &/ "Fichier" & CStr($i) & ".ogg" FOR CREATE 'instanciation du fichier de sauvegarde

$sTemp="https://ice5.somafm.com/illstreet-128-aac" 'l'adresse de la radio de votre choix

IF NOT TgBsauve.Value THEN 'false
TgBsauve.Picture = Picture["icon:/small/cancel"]
TgBsauve.Enabled = FALSE
TgBsauve.Tooltip = ("<b>La sauvegarde va commencer</b>")
$ht = NEW HttpClient AS "HTTP" 'instanciation du client HTTP
$sAdress = "" 'vidage
WITH $ht
.URL = $sTemp
' .TimeOut = 20
' .Async = True
.TargetFile = $sAdress
.Get 'voir HTTP_Read
END WITH
ELSE 'true
TgBsauve.Picture = Picture["icon:/small/save"]
TgBsauve.Background = Color.Default
TgBsauve.Tooltip = ("<b>Sauvegarde arrêtée</b>"

IF $bConnect THEN 'si connecté
$hfile.Save(sDirAudio &/ "Fichier" & CStr($i) & ".ogg", $sAdress)
Message.Title = ("Message d'information !")
Message.Info(("Enregistrement effectué" & "\n" & (" dans le répertoire : ") & sDirAudio)
INC $i
$ht.Stop 'nécessaire sinon le flux continue
$bConnect = FALSE
ELSE
Message.Title = ("Message d'erreur !")
Message.Error(("Enregistrement impossible") & "\n" & ("Erreur de connection"))
ENDIF

ENDIF

END

PUBLIC SUB HTTP_Read() 'lecture de la station pour enregistrement

DIM sBuf AS STRING

' sBuf = Read #$ht, -100000
READ #$ht, sBuf, -100000 'demander à Vuott pourquoi cette valeur
$sAdress &= sBuf

END

PUBLIC SUB HTTP_Connect() 'connection

$bConnect = FALSE

IF $ht.Status <> 4 THEN
TgBsauve.Tooltip = ("<b>Connection en cours</b>")
TgBsauve.Background = Color.Default
TgBsauve.Enabled = TRUE
$bConnect = FALSE
ELSE
TgBsauve.Tooltip = ("<b>Connection établie</b>" & "\n" & ("<b>Enregistrement en cours.</b>")
TgBsauve.Background = Color.SoftRed
TgBsauve.Enabled = TRUE
$bConnect = TRUE
ENDIF

END


Vous pourrez retrouvez ce bout de code utilisé dans le programme qui suit :
lecteur multimedia

Autre code de Vuott

Autres exemples multimédia

===================

Navigation :



<-- Liens du Wiki : <--
<-- Accueil du WIKI : <--

====================

La Documentation :



====================