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.
(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 MKV - ''Matroska''...")
 
 
(9 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()
+
  Private bo As Boolean
 +
 +
 +
Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
   Dim src, enc, mux, snk As MediaControl
+
   Dim src, cnv, enc, mux, snk As MediaControl
 
   Dim ftr As MediaFilter
 
   Dim ftr As MediaFilter
 
   Dim tm As Date
 
   Dim tm As Date
   Dim dur, eff, i As Integer
+
   Dim i As Integer
  Dim primofile, mss As String
+
    
+
   pl = New MediaPipeline
  primofile = "/tmp/primofile"
 
 
 
<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>
 
  dur = 20
 
  eff = (dur * 1000) / 2
 
 
      
 
      
  pl = New MediaPipeline
+
  src = New MediaControl(pl, "v4l2src")
   
+
  src["device"] = "/dev/video<FONT Color=red>0</font>"
  src = New MediaControl(pl, "v4l2src")
+
  ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480")
  src["num-buffers"] = dur
+
  cnv = New MediaControl(pl, "videoconvert")
  ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480")
+
  enc = New MediaControl(pl, "x264enc")
  enc = New MediaControl(pl, "x264enc")
+
  mux = New MediaControl(pl, "matroskamux")
  mux = New MediaControl(pl, "matroskamux")
+
  snk = New MediaControl(pl, "filesink")
  snk = New MediaControl(pl, "filesink")
+
  snk["location"] = "/tmp/video.mkv"
  snk["location"] = primofile
 
 
      
 
      
 
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>
 
  <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font>
  src.LinkTo(ftr)
+
  src.LinkTo(ftr)
  ftr.LinkTo(enc)
+
  ftr.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  
+
  tm = Now
 
+
 
  Do
+
  While Not bo
    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: " & CStr(Time(0, 0, 0, i))
    Else
+
  Wend
      pl.Stop()
+
      pl.Close()
+
  pl.Stop()
      Copy primofile To "/tmp/file.mkv"
+
  pl.Close()
      mss = "\rRegistrazione terminata !"
+
  Print "\nRegistrazione terminata !"
      Quit
+
<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>
    Endif
+
  Quit
    Write #File.Out, mss
+
  Loop
+
End
     
+
  '''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

Versione attuale delle 03:42, 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 MKV - Matroska.

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 ftr As MediaFilter
 Dim tm As Date
 Dim i As Integer

 pl = New MediaPipeline 
   
 src = New MediaControl(pl, "v4l2src")
 src["device"] = "/dev/video0"
 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"] = "/tmp/video.mkv"
    
' 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
 
 While Not bo
   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))
 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