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

Da Gambas-it.org - Wikipedia.
Versione del 10 ago 2017 alle 09:38 di Vuott (Discussione | contributi) (Creata pagina con "Il Componente ''gb.media'', utilizzando particolari plugin di ''GStreamer'', consente di salvare una ripresa video mediante una WebCam in un file di formato MKV - ''Matroska''...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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


Vediamo un esempio di ripresa video - priva di audio - con un'applicazione a riga di comando:

Public Sub Main()
  
 Dim pl As MediaPipeline
 Dim src, enc, mux, snk As MediaControl
 Dim ftr As MediaFilter
 Dim tm As Date
 Dim dur, eff, i As Integer
 Dim primofile, mss As String
 
  primofile = "/tmp/primofile"
  
' Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente
' che la durata del video in secondi sarà uguale alla metà del valore immesso:
  dur = 20
  eff = (dur * 1000) / 2
   
  pl = New MediaPipeline 
   
  src = New MediaControl(pl, "v4l2src")
  src["num-buffers"] = dur
  ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480")
  enc = New MediaControl(pl, "x264enc")
  mux = New MediaControl(pl, "matroskamux")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = primofile
    
' Colleghiamo fra loro i plugin di "GStreamer":
  src.LinkTo(ftr)
  ftr.LinkTo(enc)
  enc.LinkTo(mux)
  mux.LinkTo(snk) 
  
' Avvia la ripresa video:
  pl.Play()
  
  tm = Now 
  
  Do
    i = DateDiff(tm, Now, gb.Millisecond)
    If i < eff Then
' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:
      mss = "\rTempo: " & CStr(Date(0, 0, 0, 0, 0, 0, i))
    Else
      pl.Stop()
      pl.Close()
      Copy primofile To "/tmp/file.mkv"
      mss = "\rRegistrazione terminata !"
      Quit
    Endif
    Write #File.Out, mss
  Loop
     
End