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

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
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''.
 
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'':
 
Vediamo un esempio di ripresa video - ''priva di audio'' - con un'applicazione ''a riga di comando'':
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
Riga 10: Riga 9:
 
   Dim tm As Date
 
   Dim tm As Date
 
   Dim dur, eff, i As Integer
 
   Dim dur, eff, i As Integer
   Dim primofile As String
+
   Dim temporaneo As String
 
    
 
    
   primofile = "/tmp/primofile"
+
   temporaneo = Temp
 
    
 
    
  <FONT Color=gray>' ''Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente''
+
  <FONT Color=gray>' ''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:''</font>
' ''che la durata del video in secondi sarà uguale alla metà del valore immesso:''</font>
 
 
   dur = 20
 
   dur = 20
 
   eff = (dur * 1000) / 2
 
   eff = (dur * 1000) / 2
Riga 29: Riga 27:
 
   mux = New MediaControl(pl, "matroskamux")
 
   mux = New MediaControl(pl, "matroskamux")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = primofile
+
   snk["location"] = temporaneo
 
      
 
      
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>  src.LinkTo(ftr)
+
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>
 +
   src.LinkTo(ftr)
 
   ftr.LinkTo(cnv)
 
   ftr.LinkTo(cnv)
 
   cnv.LinkTo(enc)
 
   cnv.LinkTo(enc)
Riga 45: Riga 44:
 
     i = DateDiff(tm, Now, gb.Millisecond)
 
     i = DateDiff(tm, Now, gb.Millisecond)
 
  <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:''</font>
 
  <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:''</font>
     Write "\rTempo: " & CStr(Date(0, 0, 0, 0, 0, 0, i))
+
     Write "\rTempo: " & CStr(Time(0, 0, 0, i))
 
   Until i >= eff
 
   Until i >= eff
 
    
 
    
 
   pl.Stop()
 
   pl.Stop()
 
   pl.Close()
 
   pl.Close()
   Copy primofile To "/tmp/file.mkv"
+
   Copy temporaneo To "/tmp/file.mkv"
 
   Print "\nRegistrazione terminata !"
 
   Print "\nRegistrazione terminata !"
 
        
 
        
  '''End'''
+
  End

Versione attuale delle 09:18, 5 ott 2023

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, cnv, enc, mux, snk As MediaControl
 Dim ftr As MediaFilter
 Dim tm As Date
 Dim dur, eff, i As Integer
 Dim temporaneo As String
 
 temporaneo = Temp
  
' 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
 ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480")
 cnv = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "x264enc")
 mux = New MediaControl(pl, "matroskamux")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = temporaneo
    
' Colleghiamo fra loro i plugin di "GStreamer":
 src.LinkTo(ftr)
 ftr.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(mux)
 mux.LinkTo(snk) 
  
' Avvia la ripresa video:
 pl.Play()
  
 tm = Now
 
 Repeat
   i = DateDiff(tm, Now, gb.Millisecond)
' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:
   Write "\rTempo: " & CStr(Time(0, 0, 0, i))
 Until i >= eff
 
 pl.Stop()
 pl.Close()
 Copy temporaneo To "/tmp/file.mkv"
 Print "\nRegistrazione terminata !"
      
End