Differenze tra le versioni di "Catturare singole immagini da quanto mostrato dal Controllo MediaView del Componente gb.media.form"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Con le risorse del Componente ''gb.media.form'' è possibile catturare singole immagini da quanto mostrato dal Controllo ''MediaView''. =Catturare singole immagini dall'esecu...")
 
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
 
Con le risorse del Componente ''gb.media.form'' è possibile catturare singole immagini da quanto mostrato dal Controllo ''MediaView''.
 
Con le risorse del Componente ''gb.media.form'' è possibile catturare singole immagini da quanto mostrato dal Controllo ''MediaView''.
  
=Catturare singole immagini dall'esecuzione di un file video=
+
=Uso delle Classi ''MediaPipeline'' e ''MediaControl'' del Componente gb.media=
Per catturare singole immagini dall'esecuzione di un file video in un Controllo ''MediaView'' si possono usare alcune modalità. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
+
==Catturare singole immagini dall'esecuzione di un file video==
 
+
===Catturare una sola immagine===
==Uso delle Classi ''MediaPipeline'' e ''MediaControl'' del Componente gb.media==
+
Mostriamo un esempio pratico, nel quale si catturerà <U>una sola</u> immagine di quanto mostrato dal Controllo ''MediaView''. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
===Cattura di <U>una sola</u> immagine di quanto ripreso da una webcam===
 
Mostriamo un esempio pratico, nel quale si catturerà <U>una sola</u> immagine di quanto mostrato dal Controllo ''MediaView''.
 
 
<BR>Si creerà una immagine di formato PNG:
 
<BR>Si creerà una immagine di formato PNG:
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
Riga 13: Riga 11:
 
   
 
   
 
  <FONT Color=gray>' ''Crea una cartella, ove salvare i singoli file immagine che saranno creati dal programma:''</font>
 
  <FONT Color=gray>' ''Crea una cartella, ove salvare i singoli file immagine che saranno creati dal programma:''</font>
   Mkdir "/tmp/immagini_WebCam"
+
   Mkdir "/tmp/immagini"
 
   
 
   
 
   MediaView1.URL = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>"
 
   MediaView1.URL = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>"
Riga 25: Riga 23:
 
   
 
   
 
   
 
   
  Public Sub Button1_Click()    <FONT Color=gray>' ''A ogni clic viene catturata una singola immagine di quanto mostrato nel Controllo "MediaView":''</font>
+
  Public Sub Button1_Click()    <FONT Color=gray>' ''<U>A ogni clic</u> viene catturata una singola immagine di quanto mostrato nel Controllo "MediaView":''</font>
 
   
 
   
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
Riga 44: Riga 42:
 
   enc = New MediaControl(pl, "pngenc")
 
   enc = New MediaControl(pl, "pngenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "/tmp/immagini_WebCam" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
+
   snk["location"] = "/tmp/immagini" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
 
    
 
    
 
  <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font>
 
  <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font>
Riga 59: Riga 57:
 
  End
 
  End
  
 
+
===Cattura in sequenza automatica di più singole immagini===
===Cattura in sequenza automatica di più singole immagini di quanto ripreso da una ''webcam'' mediante il Controllo ''MediaView''===
 
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
Riga 66: Riga 63:
 
   
 
   
 
  <FONT Color=gray>' ''Crea una cartella, ove salvare i singoli file immagine che saranno creati dal programma:''</font>
 
  <FONT Color=gray>' ''Crea una cartella, ove salvare i singoli file immagine che saranno creati dal programma:''</font>
   Mkdir "/tmp/immagini_WebCam"
+
   Mkdir "/tmp/immagini"
 
   
 
   
 
   MediaView1.URL = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>"
 
   MediaView1.URL = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>"
Riga 92: Riga 89:
 
     enc = New MediaControl(pl, "pngenc")
 
     enc = New MediaControl(pl, "pngenc")
 
     snk = New MediaControl(pl, "filesink")
 
     snk = New MediaControl(pl, "filesink")
     snk["location"] = "/tmp" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
+
     snk["location"] = "/tmp/immagini" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
 
   
 
   
 
     xis.LinkTo(con)
 
     xis.LinkTo(con)
Riga 111: Riga 108:
  
  
=Catturare singole immagini da una ripresa video di una webcam=
+
==Catturare singole immagini da una ripresa video di una webcam==
 
Per catturare singole immagini da una ripresa video di una webcam mediante il Controllo ''MediaView'' del Componente ''gb.media.form'', si avrà cura, riprendendo gli esempi pratici sopra descritti, di assegnare alla Proprietà ".URL" dell'Oggetto ''MediaView'' il percorso del dispositivo video del sistema:
 
Per catturare singole immagini da una ripresa video di una webcam mediante il Controllo ''MediaView'' del Componente ''gb.media.form'', si avrà cura, riprendendo gli esempi pratici sopra descritti, di assegnare alla Proprietà ".URL" dell'Oggetto ''MediaView'' il percorso del dispositivo video del sistema:
 
  MediaView1.URL = "v4l2:///dev/video<FONT Color=red>0</font>" <FONT Color=gray>'</font><SUP>&#091;[[#Note|nota 2]]&#093;</sup>
 
  MediaView1.URL = "v4l2:///dev/video<FONT Color=red>0</font>" <FONT Color=gray>'</font><SUP>&#091;[[#Note|nota 2]]&#093;</sup>

Versione attuale delle 19:39, 13 lug 2024

Con le risorse del Componente gb.media.form è possibile catturare singole immagini da quanto mostrato dal Controllo MediaView.

Uso delle Classi MediaPipeline e MediaControl del Componente gb.media

Catturare singole immagini dall'esecuzione di un file video

Catturare una sola immagine

Mostriamo un esempio pratico, nel quale si catturerà una sola immagine di quanto mostrato dal Controllo MediaView. [nota 1]
Si creerà una immagine di formato PNG:

Public Sub Form_Open()

 Me.Show

' Crea una cartella, ove salvare i singoli file immagine che saranno creati dal programma:
 Mkdir "/tmp/immagini"

 MediaView1.URL = "/percorso/del/file/video"

' Resta in attesa finché la registrazione non viene avviata dall'utente, premendo il tastino di avvio sul Controllo "MediaView":
 Repeat 
   Wait 0.01
 Until MediaView1.State = Media.Playing

End


Public Sub Button1_Click()    ' A ogni clic viene catturata una singola immagine di quanto mostrato nel Controllo "MediaView":

 Dim pl As MediaPipeline
 Dim xis, con, enc, snk As MediaControl
 Dim ob1, ob2, ob3 As Object
 Dim DrawingArea1 As DrawingArea

 ob1 = MediaView1.Children[0]
 ob2 = ob1.Children[0]
 ob3 = ob2.Children[0]
 DrawingArea1 = ob3.Children[0]

 pl = New MediaPipeline 

 xis = New MediaControl(pl, "ximagesrc")
 xis["xid"] = DrawingArea1.Id
 con = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/immagini" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"
 
' Collega fra loro i plugin di "GStreamer":
 xis.LinkTo(con)
 con.LinkTo(enc)
 enc.LinkTo(snk)

' Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":
 pl.Play()

 pl.Stop
 pl.Close

End

Cattura in sequenza automatica di più singole immagini

Public Sub Form_Open()

 Me.Show

' Crea una cartella, ove salvare i singoli file immagine che saranno creati dal programma:
 Mkdir "/tmp/immagini"

 MediaView1.URL = "/percorso/del/file/video"

' Resta in attesa finché la registrazione non viene avviata dall'utente, premendo il tastino di avvio sul Controllo "MediaView":
 Repeat 
   Wait 0.01
 Until MediaView1.State = Media.Playing

 Dim pl As MediaPipeline
 Dim xis, con, enc, snk As MediaControl
 Dim ob1, ob2, ob3 As Object
 Dim DrawingArea1 As DrawingArea

 pl = New MediaPipeline

 Repeat
   ob1 = MediaView1.Children[0]
   ob2 = ob1.Children[0]
   ob3 = ob2.Children[0]
   DrawingArea1 = ob3.Children[0]
   xis = New MediaControl(pl, "ximagesrc")
   xis["xid"] = DrawingArea1.Id
   con = New MediaControl(pl, "videoconvert")
   enc = New MediaControl(pl, "pngenc")
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "/tmp/immagini" &/ Format(Now, "dd_mm_yyyy-hh_nn_ss") & ".png"

   xis.LinkTo(con)
   con.LinkTo(enc)
   enc.LinkTo(snk)

' Effettua la cattura di quanto mostrato dalla "DrawingArea" costitutiva del Controllo "MediaView":
   pl.Play
' L'inserimento del Metodo ".Stop()" è necessario, per consentire la registrazione dei dati immagine nel file immagine finale:
   pl.Stop
' La cattura delle singole immagini avviene in sequenza con la frequenza di 1 secondo:
   Wait 1
 Until MediaView1.State = Media.Ready  ' Il ciclo dura, finché la registrazione non viene interrotta dall'utente

 pl.Close

End


Catturare singole immagini da una ripresa video di una webcam

Per catturare singole immagini da una ripresa video di una webcam mediante il Controllo MediaView del Componente gb.media.form, si avrà cura, riprendendo gli esempi pratici sopra descritti, di assegnare alla Proprietà ".URL" dell'Oggetto MediaView il percorso del dispositivo video del sistema:

MediaView1.URL = "v4l2:///dev/video0" '[nota 2]


Note

[1] Vedere anche queste pagine:

[2] Al riguardo vedere anche la seguente pagina della wiki: Mostrare la ripresa video di una webcam mediante l'oggetto MediaView del componente gb.media.form