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.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 34: 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 40: Riga 40:
 
     Flush  
 
     Flush  
 
     Wait 0.1
 
     Wait 0.1
   Until bo
+
   Wend
 
    
 
    
 
   pl.Stop()
 
   pl.Stop()
Riga 51: Riga 51:
 
   
 
   
 
   
 
   
  Public Sub Application_Read() <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera si arresta la ripresa video e si chiude il programma:''</font>
+
  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
 
   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