Differenze tra le versioni di "Effettuare una ripresa video mediante una WebCam con il Componente gb.media"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
Il Componente ''gb.media'', utilizzando particolari plugin di ''GStreamer'', consente di effettuare una ripresa video mediante una WebCam.
 
Il Componente ''gb.media'', utilizzando particolari plugin di ''GStreamer'', consente di effettuare una ripresa video mediante una WebCam.
  
Il codice prevede l'utilizzo della Classe ''MediaPipeline'' che fornisce il supporto di collegamento dei vari plugin di ''GStreamer'' per consentire la ripresa video.
 
  
 +
=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
 +
<FONT Color=gray>' ''Affinche la "DrawingArea" mostri il video, è assolutamente necessario attribuire un colore qualsiasi alla sua proprietà ".Background":''</font>
 +
    .Background = Color.Black
 +
  End With
 +
 
 +
  With mp = New MediaPlayer
 +
<FONT Color=gray>' ''Imposta il dispositivo sorgente video della WebCam:''</font>
 +
    .Url = "v4l2:///dev/video0"
 +
  End With
 +
 
 +
  ftr = New MediaFilter(mp, "video/x-raw,width=640,height=480,framerate=30/1")
 +
<FONT Color=gray>' ''Nella finestra del video sarà mostrato anche il tempo trascorso dall'inizio della ripresa video:''</font>
 +
  tim = New MediaControl(mp, "timeoverlay")
 +
  snk = New MediaControl(mp, "xvimagesink")
 +
  mp.Video.Output = snk
 +
 
 +
<FONT Color=gray>' ''Imposta la "DrawingArea" come superficie ove sarà mostrato del video:''</font>
 +
  mp.SetWindow(dr)
 +
 
 +
'''End'''
 +
 +
 +
'''Public''' Sub Button1_Click()
 +
 
 +
<FONT Color=gray>' ''Avvia la ripresa video:''</font>
 +
  mp.Play()
 +
   
 +
'''End'''
 +
 +
 +
'''Public''' Sub Button2_Click()
 +
 
 +
<FONT Color=gray>' ''Arresta la ripresa video:''</font>
 +
  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===
 
===Esempio in un'applicazione grafica===

Versione delle 16:18, 7 ott 2016

Il Componente gb.media, utilizzando particolari plugin di GStreamer, consente di effettuare una ripresa video mediante una WebCam.


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à mostrato del 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