Gambas France BETA


Pas de compte ? Incription

Flip Auto des Vidéos :

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 :