Differenze tra le versioni di "Catturare il video riprodotto in un Controllo MediaView del componente gb.media"
Riga 7: | Riga 7: | ||
Individueremo, dunque, il numero di identificazione di questa ''DrawingArea'', costitutiva del Controllo ''MediaView'', e con una particolare Proprietà del plugin "ximagesrc" cattureremo il video che essa mostra. | Individueremo, dunque, il numero di identificazione di questa ''DrawingArea'', costitutiva del Controllo ''MediaView'', e con una particolare Proprietà del plugin "ximagesrc" cattureremo il video che essa mostra. | ||
<BR>Si utilizzeranno le Classi ''MediaControl'' e ''MediaPipeline'' del Componente ''gb.media'' . | <BR>Si utilizzeranno le Classi ''MediaControl'' e ''MediaPipeline'' del Componente ''gb.media'' . | ||
+ | |||
+ | Assicurarsi che siano installati nel proprio sistema i seguenti plugin di GStreamer: | ||
+ | * gstreamer1.0-plugins-good | ||
+ | * gstreamer1.0-plugins-bad | ||
+ | * gstreamer1.0-plugins-ugly | ||
+ | * gst-libav | ||
Event Evento | Event Evento | ||
Versione attuale delle 18:30, 9 gen 2024
Di seguito mostriamo un possibile codice per catturare il video (solo il video, senza audio) riprodotto in un Controllo MediaView del Componente gb.media. Da questi dati catturati verrà poi creato un file video in formato "Matroska".
Il Controllo MediaView è composto da "Figli" (Children) e "sotto-figli" (...nipoti).
Uno di questi "sotto-figli" è una DrawingArea, che è l'Oggetto grafico con cui il Controllo MediaView visualizza immagini e video.
Individueremo, dunque, il numero di identificazione di questa DrawingArea, costitutiva del Controllo MediaView, e con una particolare Proprietà del plugin "ximagesrc" cattureremo il video che essa mostra.
Si utilizzeranno le Classi MediaControl e MediaPipeline del Componente gb.media .
Assicurarsi che siano installati nel proprio sistema i seguenti plugin di GStreamer:
- gstreamer1.0-plugins-good
- gstreamer1.0-plugins-bad
- gstreamer1.0-plugins-ugly
- gst-libav
Event Evento Public Sub Form_Open() Me.Show Wait 0.1 MediaView1.URL = "/percorso/del/file/video/da/catturare" Repeat Wait 0.01 Until MediaView1.Position > 0.0 Raise Evento End Public Sub Form_Evento() 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 ' Individua la "DrawingArea", "nipote" del Controllo "MediaView": ob = MediaView1.Children[0] pn1 = ob.Children[0] pn2 = pn1.Children[0] DrawingArea1 = pn2.Children[0] pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla Proprietà "xid" il numero di identificazione della "DrawingArea": 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 del file finale avente formato mkv (Matroska): snk["location"] = "/tmp/file.mkv" ' Collega i plugin di "GStreamer", per creare la pipeline: src.LinkTo(cnv) cnv.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) pl.play Wait MediaView1.Duration Print "File video mkv creato !" End