Salvare in un file OGV una ripresa video mediante una WebCam con il Componente gb.media

Da Gambas-it.org - Wikipedia.

Il Componente gb.media, utilizzando particolari plugin di GStreamer, consente di salvare una ripresa video mediante una WebCam in un file di formato OGV.


Vediamo un esempio - privo di audio - con un'applicazione a riga di comando:

Public Sub Main()
  
 Dim pl As MediaPipeline
 Dim src, the, ogg, 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")
  the = New MediaControl(pl, "theoraenc")
  ogg = New MediaControl(pl, "oggmux")
  ogg["name"] = "mux"
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.ogv"
 
' Colleghiamo fra loro i plugin di "GStreamer":
  src.LinkTo(ftr)
  ftr.LinkTo(the)
  the.LinkTo(ogg)
  ogg.LinkTo(snk)
  
' Avvia la ripresa video:
  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 il plugin timeoverlay:

Public Sub Main()
   
 Dim pl As MediaPipeline
 Dim src, tim, the, ogg, 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")
  the = New MediaControl(pl, "theoraenc")
  ogg = New MediaControl(pl, "oggmux")
  ogg["name"] = "mux"
  snk = New MediaControl(pl, "filesink")
  snk["location"] = "/percorso/del/file.ogv"
 
' Colleghiamo fra loro i plugin di "GStreamer":
  src.LinkTo(ftr)
  ftr.LinkTo(tim)
  tim.LinkTo(the)
  the.LinkTo(ogg)
  ogg.LinkTo(snk)
  
' Avvia la ripresa video:
  pl.Play()
  
  While True
' Mostra anche in console/Terminale il tempo trascorso dall'inizio della ripresa video:
    Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
  Wend
     
End