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.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
  
 
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'':
 +
Private bo As Boolean
 +
 +
 
  Public Sub Main()
 
  Public Sub Main()
 
    
 
    
Riga 7: Riga 10:
 
   Dim src, cnv, 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 i As Integer
 
   
 
   
<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 a circa un terzo del valore assegnato alla variabile "dur":''</font>
 
  dur = 20
 
  eff = (dur * 1000) / 2
 
   
 
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
 
      
 
      
Riga 35: Riga 34:
 
   tm = Now  
 
   tm = Now  
 
    
 
    
   Repeat
+
   While Not bo
 
     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>
Riga 41: Riga 40:
 
     Flush  
 
     Flush  
 
     Wait 0.1
 
     Wait 0.1
   Until i >= eff
+
   Wend
 
    
 
    
 
   pl.Stop()
 
   pl.Stop()
 
   pl.Close()
 
   pl.Close()
   Print "\nRegistrazione terminata !"      
+
   Print "\nRegistrazione terminata !"
 +
<FONT Color=gray>' ''Essendo stato utilizzato l'Evento "Application_Read()", è necessario usare l'istruzione "Quit" per terminare il programma e così per poter creare il file video:''</font>
 +
  Quit
 +
 +
End
 +
 +
 +
Public Sub Application_Read() <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera si arresta la ripresa video e si chiude il programma''</font>
 +
 +
  bo = True
 
    
 
    
 
  End
 
  End

Versione attuale delle 03:41, 3 lug 2024

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:

Private bo As Boolean


Public Sub Main()
  
 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 Dim tm As Date
 Dim i As Integer

 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"] = "/tmp/video.mp4"
    
' Collega 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 
  
 While Not bo
   i = DateDiff(tm, Now, gb.Millisecond)
' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:
   Write "\rTempo: " & Str(Time(0, 0, 0, i))
   Flush 
   Wait 0.1
 Wend
 
 pl.Stop()
 pl.Close()
 Print "\nRegistrazione terminata !"
' Essendo stato utilizzato l'Evento "Application_Read()", è necessario usare l'istruzione "Quit" per terminare il programma e così per poter creare il file video:
 Quit

End


Public Sub Application_Read() ' Premendo il tasto "Invio" della tastiera si arresta la ripresa video e si chiude il programma

 bo = True
 
End