Catturare singole immagini da una ripresa video di una webcam mediante il Controllo MediaView del Componente gb.media.form

Da Gambas-it.org - Wikipedia.

Per catturare singole immagini da una ripresa video di una webcam mediante il Controllo MediaView del Componente gb.media.form, si possono usare alcune modalità. [nota 1]

Uso delle Classi MediaPipeline e MediaControl del Componente gb.media

Mostriamo un esempio pratico:

Public Sub Form_Open()

 MediaView1.URL = "v4l2:///dev/video0"
 MediaView1.Play()

End


Public Sub Button1_Click()

 Dim pl As MediaPipeline
 Dim xis, con, enc, snk As MediaControl
 Dim temporaneo As String
 Dim ob1, ob2, ob3 As Object
 Dim DrawingArea1 As DrawingArea

 ob1 = MediaView1.Children[0]
 ob2 = ob1.Children[0]
 ob3 = ob2.Children[0]
 DrawingArea1 = ob3.Children[0]

 temporaneo = Temp

 pl = New MediaPipeline 

 xis = New MediaControl(pl, "ximagesrc")
 xis["xid"] = DrawingArea1.Id
 con = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = temporaneo
 
' Collega fra loro i plugin di "GStreamer":
 xis.LinkTo(con)
 con.LinkTo(enc)
 enc.LinkTo(snk)

' Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":
 pl.Play()

 Repeat 
   Wait 0.01
 Until Stat(temporaneo).Size > 0

' Salva il file immagine di formato "png" nella cartella "/tmp":
 Copy temporaneo To "/tmp" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"

 pl.Stop
 pl.Close

End


Note

[1] Vedere anche queste pagine: