Eseguire i file video con il Componente gb.media
Il componente gb.media offre la possibilità di sfruttare le funzionalità della piattaforma multimediale modulare GStreamer per la gestione di file video.
Si potrà scegliere se far mostrare il video in un controllo GUI (ad esempio una DrawingArea) posto sul Form, oppure in una finestra automaticamente aperta dalle risorse del componente gb.media. Nel caso si utilizzi una DrawingArea, bisogna impostare un qualsiasi colore la sua proprietà .Background.
Eseguire il video in uno specifico controllo GUI posto sul form
Nel seguente esempio il video verrà mostrato in all'interno di uno specifico controllo GUI (ad esempio una DrawingArea) posto sul Form:
Private mp As MediaPlayer
Public Sub Form_Open()
Dim da As DrawingArea
' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita video:
With da = New DrawingArea(Me)
.X = 10
.Y = 10
.W = 300
.H = 300
.Background = Color.Black
End With
AvviaPlugin(da)
End
Private Procedure AvviaPlugin(drar As DrawingArea)
Dim uscitaVideo As MediaControl
mp = New MediaPlayer
mp.URL = Media.URL("/percorso/del/file/video")
' Istanzia il controllo di uscita video da usare. In questo caso sarà "ximagesink",
' un "videosink" basato sullo standard X, e che è esso stesso un plug-in:
uscitaVideo = New MediaControl(mp, "ximagesink")
' Imposta il controllo dell'uscita video da usare:
uscitaVideo.SetWindow(drar)
mp.Video.Output = uscitaVideo
End
Public Sub Form_Activate()
' Esegue il file video:
mp.Play()
Do
' Una brevissima pausa consente di mostrare e di agire sugli eventuali oggetti posti sul Form:
Wait 0.01
TextLabel1.Text = "\rDurata del video: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Duration * 1000)) & " - Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Position * 1000))
Loop Until mp.Position >= mp.Duration
End
Public Sub Button1_Click()
mp.Stop
End
Public Sub ToggleButton1_Click()
If ToggleButton1.Value Then
mp.Pause
Else
mp.Play
Endif
End
Eseguire il video in una finestra automaticamente aperta da Gstreamer
E' possibile far mostrare il video in una finestra automaticamente aperta da Gstreamer all'esterno del Form. Ovviamente non verrà impostato alcuno specifico controllo grafico GUI.
Anche questa finestra, volendo, può essere gestita mediante le Classi Desktop e DesktopWindow attivando i componenti gb.desktop e gb.desktop.x11.
Mostriamo un semplice esempio in ambiente grafico:
Private mp As New MediaPlayer
Public Sub Form_Open()
mp.URL = Media.URL("/percorso/del/file/video")
End
Public Sub Form_Activate()
' Esegue il video:
mp.Play()
Do
' Una brevissima pausa consente di agire sugli eventuali oggetti posti sul Form:
Wait 0.01
TextLabel1.Text = "\rDurata del video: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Duration * 1000)) & " - Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Position * 1000))
Loop Until mp.Position >= mp.Duration
mp.Stop
End
Public Sub Button1_Click()
mp.Stop
End
Public Sub ToggleButton1_Click()
If ToggleButton1.Value Then
mp.Pause
Else
mp.Play
Endif
End
Eseguire un video in un'applicazione a linea di comando
Vediamo ora un esempio, nel uale si eseguirà un video in un'applicazione a linea di comando:
Public Sub Main()
Dim mp As New MediaPlayer
mp.URL = Media.URL("/percorso/del/file/video")
' Esegue il brano:
mp.Play()
Do
Write #File.Out, "\rDurata del video: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Duration * 1000)) & " - Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, mp.Position * 1000))
Loop Until mp.Position >= mp.Duration
mp.Stop
End