Differenze tra le versioni di "Effettuare una ripresa video mediante una WebCam con il Componente gb.media"
Riga 37: | Riga 37: | ||
mp.Video.Output = snk | mp.Video.Output = snk | ||
− | <FONT Color=gray>' ''Imposta la "DrawingArea" come superficie ove sarà | + | <FONT Color=gray>' ''Imposta la "DrawingArea" come superficie ove sarà mostrata la ripresa video:''</font> |
mp.SetWindow(dr) | mp.SetWindow(dr) | ||
Versione delle 16:19, 7 ott 2016
Il Componente gb.media, utilizzando particolari plugin di GStreamer, consente di effettuare una ripresa video mediante una WebCam.
Indice
Uso della Classe MediaPlayer
Questa modalità standard prevede l'utilizzo della Classe MediaPlayer.
Esempio in un'applicazione grafica
Mostriamo di seguito un esempio essenziale con un'applicazione grafica. Il video sarà mostrato all'interno di una DrawingArea posta sul Form principale.
Private dr As DrawingArea Private mp As MediaPlayer Public Sub Form_Open() Dim tim, snk As MediaControl Dim ftr As MediaFilter With dr = New DrawingArea(Me) .X = 10 .Y = 10 .W = 640 .H = 480 ' Affinche la "DrawingArea" mostri il video, è assolutamente necessario attribuire un colore qualsiasi alla sua proprietà ".Background": .Background = Color.Black End With With mp = New MediaPlayer ' Imposta il dispositivo sorgente video della WebCam: .Url = "v4l2:///dev/video0" End With ftr = New MediaFilter(mp, "video/x-raw,width=640,height=480,framerate=30/1") ' Nella finestra del video sarà mostrato anche il tempo trascorso dall'inizio della ripresa video: tim = New MediaControl(mp, "timeoverlay") snk = New MediaControl(mp, "xvimagesink") mp.Video.Output = snk ' Imposta la "DrawingArea" come superficie ove sarà mostrata la ripresa video: mp.SetWindow(dr) End Public Sub Button1_Click() ' Avvia la ripresa video: mp.Play() End Public Sub Button2_Click() ' Arresta la ripresa video: mp.Stop End
Uso della Classe MediaPipeline
Questa modalità prevede l'utilizzo della Classe MediaPipeline che fornisce il supporto di collegamento dei vari plugin di GStreamer per consentire la ripresa video.
Esempio in un'applicazione grafica
Mostriamo di seguito un esempio essenziale con un'applicazione grafica. Il video sarà mostrato all'interno di una DrawingArea posta sul Form principale.
Private dr As DrawingArea Private pl As MediaPipeline Public Sub Form_Open() Dim src, tim, snk As MediaControl Dim ftr As MediaFilter With dr = New DrawingArea(Me) .X = 10 .Y = 10 .W = 640 .H = 480 ' Affinche la "DrawingArea" mostri il video, è assolutamente necessario attribuire un colore qualsiasi alla sua proprietà ".Background": .Background = Color.Black End With pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=30/1") ' Nella finestra del video sarà mostrato anche il tempo trascorso dall'inizio della ripresa video: tim = New MediaControl(pl, "timeoverlay") snk = New MediaControl(pl, "xvimagesink") ' Colleghiamo fra loro i due plugin di "GStreamer": src.LinkTo(tim) tim.LinkTo(ftr) ftr.LinkTo(snk) snk.SetWindow(dr) End Public Sub Button1_Click() ' Avvia la ripresa video: pl.State = Media.Playing pl.Play() End Public Sub Button2_Click() ' Arresta la ripresa video: pl.Stop End
Esempio in un'applicazione a riga di comando
Mostriamo di seguito un esempio essenziale con un'applicazione a riga di comando:
Public Sub Main() Dim pl As MediaPipeline Dim src, snk As MediaControl Dim ftr As MediaFilter pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=30/1") snk = New MediaControl(pl, "xvimagesink") ' Colleghiamo fra loro i due plugin di "GStreamer": src.LinkTo(ftr) ftr.LinkTo(snk) ' Avvia la ripresa video: pl.State = Media.Playing pl.Play() While True ' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale: Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) Wend End
Mostrare nel video anche il tempo trascorso
Per mostrare nella finestra del video anche il tempo trascorso dall'inizio della ripresa video, è necessario utilizzare (come abbiamo già visto nell'esempio con un'applicazione grafica) il plugin timeoverlay fornito da GStreamer:
Public Sub Main() Dim pl As MediaPipeline Dim src, tim, snk As MediaControl Dim ftr As MediaFilter pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=30/1") tim = New MediaControl(pl, "timeoverlay") snk = New MediaControl(pl, "xvimagesink") ' Colleghiamo fra loro i due plugin di "GStreamer": src.LinkTo(ftr) ftr.LinkTo(tim) tim.LinkTo(snk) ' Avvia la ripresa video: pl.State = Media.Playing pl.Play() While True Sleep 0.01 Wend End