Differenze tra le versioni di "Salvare in un file MP4 una ripresa video mediante una WebCam con il Componente gb.media"

Da Gambas-it.org - Wikipedia.
Riga 6: Riga 6:
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
   Dim src, enc, mux, snk As MediaControl
+
   Dim src, cnv, enc, mux, snk As MediaControl
 
   Dim tm As Date
 
   Dim tm As Date
 
   Dim dur, eff, i As Integer
 
   Dim dur, eff, i As Integer
Riga 21: Riga 21:
 
      
 
      
 
   src = New MediaControl(pl, "v4l2src")
 
   src = New MediaControl(pl, "v4l2src")
 +
  src["device"] = "/dev/video0"
 
   src["num-buffers"] = dur
 
   src["num-buffers"] = dur
 +
  cnv = New MediaControl(pl, "videoconvert")
 
   enc = New MediaControl(pl, "x264enc")
 
   enc = New MediaControl(pl, "x264enc")
 
   mux = New MediaControl(pl, "mp4mux")
 
   mux = New MediaControl(pl, "mp4mux")
Riga 28: Riga 30:
 
      
 
      
 
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>
 
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>
   src.LinkTo(enc)
+
   src.LinkTo(cnv)
 +
  cnv.LinkTo(enc)
 
   enc.LinkTo(mux)
 
   enc.LinkTo(mux)
 
   mux.LinkTo(snk)  
 
   mux.LinkTo(snk)  

Versione delle 18:57, 15 mag 2019

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


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, cnv, enc, mux, snk As MediaControl
 Dim tm As Date
 Dim dur, eff, i As Integer
 Dim primofile, mss As String
 
  primofile = "/tmp/primofile.mp4"
  
' 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["device"] = "/dev/video0"
  src["num-buffers"] = dur
  cnv = New MediaControl(pl, "videoconvert")
  enc = New MediaControl(pl, "x264enc")
  mux = New MediaControl(pl, "mp4mux")
  snk = New MediaControl(pl, "filesink")
  snk["location"] = primofile
    
' Colleghiamo fra loro i plugin di "GStreamer":
  src.LinkTo(cnv)
  cnv.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.mp4"
      mss = "\rRegistrazione terminata !"
      Quit
    Endif
    Write #File.Out, mss
  Loop
     
End