Differenze tra le versioni di "Registrare la ripresa video di una webcam mediante l'oggetto MediaView del componente gb.media.form"

Da Gambas-it.org - Wikipedia.
Riga 11: Riga 11:
 
   MediaView1.URL = "v4l2:///dev/video0"
 
   MediaView1.URL = "v4l2:///dev/video0"
 
   
 
   
  Dim ob As Object
 
  Dim pn1, pn2 As Panel
 
  Dim DrawingArea1 As DrawingArea
 
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, cnv, enc, mux, snk As MediaControl
 
   Dim src, cnv, enc, mux, snk As MediaControl
 
   Dim temporaneo As String
 
   Dim temporaneo As String
 
 
<FONT Color=gray>' ''Individua l'Oggetto "DrawingArea", 'figlio' del Controllo "MediaView":''</font>
 
  ob = MediaView1.Children[0]
 
  pn1 = ob.Children[0]
 
  pn2 = pn1.Children[0]
 
  DrawingArea1 = pn2.Children[0]
 
 
   
 
   
   pl = New MediaPipeline As "PLine"
+
   pl = New MediaPipeline
 
   
 
   
 
   temporaneo = Temp
 
   temporaneo = Temp
 
   
 
   
 
   src = New MediaControl(pl, "ximagesrc")
 
   src = New MediaControl(pl, "ximagesrc")
  <FONT Color=gray>' ''Assega alla Propietà "xid" il numero identificativo della "DrawingArea", 'Figlia' del Controllo "MediaView":''</font>
+
  <FONT Color=gray>' ''Assega alla Proprietà "xid" il numero identificativo del Controllo "MediaView", affinché siano catturati i dati video di questo Controllo:''</font>
   src["xid"] = DrawingArea1.Id
+
   src["xid"] = MediaView1.Id
 
   cnv = New MediaControl(pl, "videoconvert")
 
   cnv = New MediaControl(pl, "videoconvert")
 
   enc = New MediaControl(pl, "x264enc")
 
   enc = New MediaControl(pl, "x264enc")

Versione delle 09:13, 5 ott 2023

Per mostrare la ripresa video di una webcam mediante il Controllo MediaView, si deve impostare il percorso del dispositivo che si riferisce ala wbcam:

v4l2:///dev/videoN

laddove N è un numero di indice iniziale 0 (zero).

Mostriamo un semplice esempio, usando la Classe MediaPipeline, necessaria per catturare la ripresa video.
Va sottolineato che la registrazione attraverso le risorse della Classe MediaPipeline potrebbe iniziare con alcuni secondi di ritardo rispetto all'avvio della ripresa video del Controllo MediaView.

Public Sub Form_Open()

 Me.Show

 MediaView1.URL = "v4l2:///dev/video0"

 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 Dim temporaneo As String

 pl = New MediaPipeline

 temporaneo = Temp

 src = New MediaControl(pl, "ximagesrc")
' Assega alla Proprietà "xid" il numero identificativo del Controllo "MediaView", affinché siano catturati i dati video di questo Controllo:
 src["xid"] = MediaView1.Id
 cnv = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "x264enc")
 mux = New MediaControl(pl, "matroskamux") 
 snk = New MediaControl(pl, "filesink")
' Imposta il percorso finale del file di formato mkv (Matroska):
 snk["location"] = temporaneo
  
' Collega i plugin del sistema audio "GStreamer":
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(mux)
 mux.LinkTo(snk)

' Resta in attesa finché la registrazione non viene avviata dall'utente:
 Repeat 
   Wait 0.01
 Until MediaView1.State = Media.Playing

 pl.play

' Resta in attesa che la registrazione venga interrotta dall'utente:
 Repeat 
   Wait 0.01
 Until MediaView1.State = Media.Ready

 pl.Stop
 pl.Close

 Print "Registrazione terminata !"

 If Exist("/tmp/video.mkv") Then Kill "/tmp/video.mkv"
 Copy temporaneo To "/tmp/video.mkv"

 Print "File video creato !"

End