Registrare la ripresa video di una webcam mediante l'oggetto MediaView del componente gb.media.form

Da Gambas-it.org - Wikipedia.
Versione del 5 ott 2023 alle 08:56 di Vuott (Discussione | contributi) (Creata pagina con "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 ladd...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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:

Public Sub Form_Open()

 Me.Show

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

 Dim ob As Object
 Dim pn1, pn2 As Panel
 Dim DrawingArea1 As DrawingArea
 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 Dim temporaneo As String
 
' Individua l'Oggetto "DrawingArea", 'figlio' del Controllo "MediaView":
 ob = MediaView1.Children[0]
 pn1 = ob.Children[0]
 pn2 = pn1.Children[0]
 DrawingArea1 = pn2.Children[0]

 pl = New MediaPipeline As "PLine"

 temporaneo = Temp

 src = New MediaControl(pl, "ximagesrc")
' Assega alla Propietà "xid" il numero identificativo della "DrawingArea", 'Figlia' del Controllo "MediaView":
 src["xid"] = DrawingArea1.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