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.
(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 MP4. Vediamo un...")
 
 
(8 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 MP4.
 
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'':
 
Vediamo un esempio di ripresa video - ''priva di audio'' - con un'applicazione ''a riga di comando'':
Riga 6: Riga 5:
 
    
 
    
 
   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
   Dim mss As String
+
   Dim appoggio As String
 
    
 
    
  <FONT Color=gray>' ''Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente''
+
  appoggio = Temp
' ''che la durata del video in secondi sarà uguale alla metà del valore immesso:''</font>
+
 
  dur = 20
+
  <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>
  eff = (dur * 1000) / 2
+
  dur = 20
 +
  eff = (dur * 1000) / 2
 
      
 
      
  pl = New MediaPipeline  
+
  pl = New MediaPipeline  
 
      
 
      
  src = New MediaControl(pl, "v4l2src")
+
  src = New MediaControl(pl, "v4l2src")
  src["num-buffers"] = dur
+
  src["device"] = "/dev/video0"
  enc = New MediaControl(pl, "x264enc")
+
  src["num-buffers"] = dur
  mux = New MediaControl(pl, "mp4mux")
+
  cnv = New MediaControl(pl, "videoconvert")
  snk = New MediaControl(pl, "filesink")
+
  enc = New MediaControl(pl, "x264enc")
  snk["location"] = "<FONT Color=gray>''/percorso/del/file.mp4''</font>"
+
  mux = New MediaControl(pl, "mp4mux")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = appoggio
 
      
 
      
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>
+
  <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font>
  src.LinkTo(enc)
+
  src.LinkTo(cnv)
  enc.LinkTo(mux)
+
  cnv.LinkTo(enc)
  mux.LinkTo(snk)  
+
  enc.LinkTo(mux)
 +
  mux.LinkTo(snk)  
 
    
 
    
 
  <FONT Color=gray>' ''Avvia la ripresa video:''</font>
 
  <FONT Color=gray>' ''Avvia la ripresa video:''</font>
  pl.Play()   
+
  pl.Play()
 +
 
 +
   tm = Now
 
    
 
    
  Do
+
  Repeat
    i = DateDiff(tm, Now, gb.Millisecond)
+
    i = DateDiff(tm, Now, gb.Millisecond)
    If i < eff Then
 
 
  <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>
      mss = "\rTempo: " & CStr(Date(0, 0, 0, 0, 0, 0, i))
+
    Write "\rTempo: " & Str(Time(0, 0, 0, i))
    Else
+
    Flush
      mss = "\rRegistrazione terminata !"
+
    Wait 0.1
    Endif
+
  Until i >= eff
    Write #File.Out, mss
+
 
  Loop
+
  pl.Stop()
     
+
  pl.Close()
 +
  Copy appoggio To "/tmp/file.mp4"
 +
  Print "\nRegistrazione terminata !"      
 +
 
 
  '''End'''
 
  '''End'''

Versione attuale delle 15:13, 14 mag 2023

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 appoggio As String
 
 appoggio = Temp
  
' 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":
 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"] = appoggio
    
' 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 
  
 Repeat
   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
 Until i >= eff
 
 pl.Stop()
 pl.Close()
 Copy appoggio To "/tmp/file.mp4"
 Print "\nRegistrazione terminata !"       
 
End