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 multimediaAutre code de Vuott Autres exemples multimédia===================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
La Documentation :
====================