Flip Auto des Vidéos :
Pour utiliser le Flip Automatique des vidéos avec le gb.Mediaplayer, il faut déclarer :
Un MediaContainer dont le parent sera notre MediaPlayer
Un MediaControl pour recevoir le videoflip de gstreamer dont le parent sera le MediaContainer
Un MediaControl pour recevoir le xvimagesink de gstreamer dont le parent sera le MediaContainer
Déclarations :
1
2
3
4
5
6
7
| '<--------------------------------' Début utiliser le flip automatique ---------------------- PRIVATE ENUM none = 0, clockwise, rotate_180, counterclockwise, horizontal_flip, vertical_flip, upper_left_diagonal, upper_right_diagonal, automatic
PRIVATE $MContainer AS MediaContainer PRIVATE $MCFlip AS MediaControl PRIVATE $MCSink AS MediaControl '<--------------------------------' Fin utiliser le flip automatique ----------------------
|
La Procédure FlipAuto :
Nous allons instancier ces contrôles à la volée au moment de notre besoin, en les plaçant dans une procédure que nous appellerons lors de la lecture d'une vidéo.
1
2
3
4
5
6
7
8
9
10
11
12
| PRIVATE SUB FlipAuto() '<-----------------------------------------------------' instanciation $MContainer = NEW MediaContainer(hMP) $MCFlip = NEW MediaControl($MContainer, "videoflip") $MCFlip["method"] = automatic $MCSink = NEW MediaControl($MContainer, "xvimagesink") '<------------------------------------------------------' $MCFlip.LinkTo($MCSink) $MContainer.AddInput($MCFlip, "sink") hMP.Video.Output = $MContainer
END
|
Appel du FlipAuto :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| PUBLIC SUB ToggleButton1_Click() 'lecture ou stop
IF ToggleButton1.Value THEN '<------------------------' ToggleButton1.Value = True Jouer $TextArea1.Clear '<---------------------------------' effacement du TextArea $sTemp = Temp '<------------------------------------' affectation temporaire Choix() '<------------------------------------------' Radios ou fichier soit du web soit du disque FlipAuto() '<---------------------------------------' pour utiliser le flip automatique MenuExterne_Click() '<------------------------------' affectation du hMP en fonction du MenuExterne hMP.Play '<-----------------------------------------' hMP est joué ToggleButton1.Picture = Picture["icon:/small/pause"] ' icon suivant ToggleButton1.Tooltip = ("Pause") '<---------------' tooltip suivant ELSE '<------------------------------------------------' ToggleButton1.Value = False Pause hMP.Pause '<---------------------------------------' hMP est en pause IF $bChoix THEN ComboBox1.Enabled = TRUE ELSE ComboBox1.Enabled = FALSE Menu2.Caption = "Version : " & Application.Version ' jusqu'à changement pour fichier choisi ToggleButton1.Picture = Picture["icon:/small/play"] ' icon suivant ToggleButton1.Tooltip = ("Lecture") '<---------------' tooltip suivant ENDIF
CATCH '<---------------------------------------------------' voir Mediaplayer1_message
END
|
Affichage dans le MediaPlayer :
Que ce soit dans le DrawingArea ou dans une fenêtre externe, on introduit l'affichage dans le MediaPlayer avec la commande : hMP.SetWindow($hEcran),
sauf sous wayland, où nous utiliserons la commande : hMP.Video.Output = $MContainer
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
| PUBLIC SUB MenuExterne_Click() '<--------------------------' affichage fenêtre externe ou pas
$DrawingArea1.Clear
IF bExterne THEN $hEcran.Window.Close()
IF Desktop.Platform == "wayland" THEN $plugVis = NULL $hEcran = NULL hMP.Video.Output = NULL '<--------------------------' fenêtre Gstreamer hMP.Video.Output = $MContainer ELSE
IF NOT MenuExterne.Checked THEN '<------------------' fenêtre normale ME.AutoResize = FALSE ME.Resizable = TRUE Module_Settings.RestoreFormPosition(ME) '<------' reprise des dimensions enregistrées $hEcran = $DrawingArea1 '<------------------------' affichage dans le DrawingArea bExterne = FALSE MenuMeta.Checked = TRUE '<------------------------' affichage des meta données ME.Menus.Visible = TRUE '<------------------------' affichage des menus ELSE '<---------------------------------------------' fenêtre externe $hEcran = NEW Window '<--------------------------' Nouvel objet créé à la volée $hObs = NEW Observer($hEcran) AS "obs" '<--------' utilisation de l'observer attribué au nouvel objet
IF siInd <> 7 THEN '<----------------------------' Si visionnage différent de aucun $hEcran.W = hMP.Video.Image.W '<---------------' découverte des dimensions de la vidéo $hEcran.H = hMP.Video.Image.H '<---------------' découverte des dimensions de la vidéo ELSE '<------------------------------------------' aucun visionnage bExterne = FALSE RETURN ENDIF
$hEcran.SetFocus() '<------------------------------' attribution du focus au nouvel objet $hEcran.Window.Show() '<---------------------------' on montre le nouvel objet bExterne = TRUE MenuMeta.Checked = FALSE ME.Menus.Visible = FALSE IF $bChoix THEN $hEcran.Window.Title = comboBox1.Text ' si c'est une radio alors ENDIF
hMP.SetWindow($hEcran) '<----------------------------' sortie affichage sur $hEcran interne ou externe dimensions() '<-------------------------------------' dimensions éléments principaux
ENDIF
CATCH Message.Title = ("Une erreur est survenue !") Message.Error(Str(Error.Class) & ", code : " & Error.Code & "\n" & Str(Error.Backtrace) & " à " Error.Where)
END
|
Un lien vers une
application.
====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
La Documentation :