Differenze tra le versioni di "Registrare quanto mostrato da una MapView e farne un video"
Da Gambas-it.org - Wikipedia.
(5 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | E' possibile catturare quanto mostrato da una ''MapView'' e salvarlo in un file video. | + | E' possibile catturare quanto avviene e mostrato da una ''MapView'' e salvarlo in un file video. |
<BR>E' necessario attivare anche il Componente ''gb.media''. | <BR>E' necessario attivare anche il Componente ''gb.media''. | ||
− | ===Creare un file video di formato MP4=== | + | ===Creare un file video di formato "MP4"=== |
Public Sub Form_Open() | Public Sub Form_Open() | ||
Riga 17: | Riga 17: | ||
Private pl As MediaPipeline | Private pl As MediaPipeline | ||
− | |||
Public Sub Button1_Click() | Public Sub Button1_Click() | ||
Riga 53: | Riga 52: | ||
tm = Now | tm = Now | ||
− | While | + | While pl.State = Media.Ready |
i = DateDiff(tm, Now, gb.Millisecond) | i = DateDiff(tm, Now, gb.Millisecond) | ||
<FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | ||
Riga 65: | Riga 64: | ||
Public Sub Button2_Click() | Public Sub Button2_Click() | ||
− | |||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
Riga 88: | Riga 86: | ||
Private pl As MediaPipeline | Private pl As MediaPipeline | ||
− | |||
Public Sub Button1_Click() | Public Sub Button1_Click() | ||
Riga 124: | Riga 121: | ||
tm = Now | tm = Now | ||
− | While | + | While pl.State = Media.Ready |
i = DateDiff(tm, Now, gb.Millisecond) | i = DateDiff(tm, Now, gb.Millisecond) | ||
<FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | ||
Riga 136: | Riga 133: | ||
Public Sub Button2_Click() | Public Sub Button2_Click() | ||
− | |||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
Riga 159: | Riga 155: | ||
Private pl As MediaPipeline | Private pl As MediaPipeline | ||
− | |||
Public Sub Button1_Click() | Public Sub Button1_Click() | ||
Riga 191: | Riga 186: | ||
tm = Now | tm = Now | ||
− | While | + | While pl.State = Media.Ready |
+ | i = DateDiff(tm, Now, gb.Millisecond) | ||
+ | <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | ||
+ | Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub Button2_Click() | ||
+ | |||
+ | pl.Stop() | ||
+ | pl.Close() | ||
+ | Print "Registrazione terminata !" | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | ===Creare un file video di formato "FLV"=== | ||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Dim mp As New MapPoint(41.89018, 12.49230) | ||
+ | |||
+ | With MapView1.Map | ||
+ | .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") | ||
+ | .Zoom = 15 | ||
+ | .Center = mp | ||
+ | End With | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Private pl As MediaPipeline | ||
+ | |||
+ | Public Sub Button1_Click() | ||
+ | |||
+ | Dim src, cnv, enc, mux, snk As MediaControl | ||
+ | Dim tm As Date | ||
+ | Dim i As Integer | ||
+ | |||
+ | If Exist("/tmp/video.flv") Then Kill "/tmp/video.flv" | ||
+ | |||
+ | pl = New MediaPipeline | ||
+ | |||
+ | src = New MediaControl(pl, "ximagesrc") | ||
+ | <FONT Color=gray>' ''Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare:''</font> | ||
+ | src["xid"] = MapView1.Id | ||
+ | cnv = New MediaControl(pl, "videoconvert") | ||
+ | enc = New MediaControl(pl, "x264enc") | ||
+ | mux = New MediaControl(pl, "flvmux") | ||
+ | snk = New MediaControl(pl, "filesink") | ||
+ | snk["location"] = "/tmp/video.flv" | ||
+ | |||
+ | <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font> | ||
+ | src.LinkTo(cnv) | ||
+ | cnv.LinkTo(enc) | ||
+ | enc.LinkTo(mux) | ||
+ | mux.LinkTo(snk) | ||
+ | |||
+ | <FONT Color=gray>' ''Avvia la registrazione video:''</font> | ||
+ | pl.Play() | ||
+ | |||
+ | tm = Now | ||
+ | |||
+ | While pl.State = Media.Ready | ||
+ | i = DateDiff(tm, Now, gb.Millisecond) | ||
+ | <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | ||
+ | Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub Button2_Click() | ||
+ | |||
+ | pl.Stop() | ||
+ | pl.Close() | ||
+ | Print "Registrazione terminata !" | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | ===Creare un file video di formato "AVI"=== | ||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Dim mp As New MapPoint(41.89018, 12.49230) | ||
+ | |||
+ | With MapView1.Map | ||
+ | .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") | ||
+ | .Zoom = 15 | ||
+ | .Center = mp | ||
+ | End With | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Private pl As MediaPipeline | ||
+ | |||
+ | Public Sub Button1_Click() | ||
+ | |||
+ | Dim src, cnv, mux, snk As MediaControl | ||
+ | Dim tm As Date | ||
+ | Dim i As Integer | ||
+ | |||
+ | If Exist("/tmp/video.avi") Then Kill "/tmp/video.avi" | ||
+ | |||
+ | pl = New MediaPipeline | ||
+ | |||
+ | src = New MediaControl(pl, "ximagesrc") | ||
+ | <FONT Color=gray>' ''Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare:''</font> | ||
+ | src["xid"] = MapView1.Id | ||
+ | cnv = New MediaControl(pl, "videoconvert") | ||
+ | mux = New MediaControl(pl, "avimux") | ||
+ | snk = New MediaControl(pl, "filesink") | ||
+ | snk["location"] = "/tmp/video.avi" | ||
+ | |||
+ | <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font> | ||
+ | src.LinkTo(cnv) | ||
+ | cnv.LinkTo(mux) | ||
+ | mux.LinkTo(snk) | ||
+ | |||
+ | <FONT Color=gray>' ''Avvia la registrazione video:''</font> | ||
+ | pl.Play() | ||
+ | |||
+ | tm = Now | ||
+ | |||
+ | While pl.State = Media.Ready | ||
i = DateDiff(tm, Now, gb.Millisecond) | i = DateDiff(tm, Now, gb.Millisecond) | ||
<FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale:''</font> | ||
Riga 203: | Riga 326: | ||
Public Sub Button2_Click() | Public Sub Button2_Click() | ||
− | |||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() |
Versione attuale delle 07:47, 14 lug 2024
E' possibile catturare quanto avviene e mostrato da una MapView e salvarlo in un file video.
E' necessario attivare anche il Componente gb.media.
Indice
Creare un file video di formato "MP4"
Public Sub Form_Open() Dim mp As New MapPoint(41.89018, 12.49230) With MapView1.Map .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") .Zoom = 15 .Center = mp End With End Private pl As MediaPipeline Public Sub Button1_Click() Dim src, cnv, enc, mux, snk As MediaControl Dim tm As Date Dim i As Integer If Exist("/tmp/video.mp4") Then Kill "/tmp/video.mp4" pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare: src["xid"] = MapView1.Id cnv = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") enc["pass"] = 5 enc["quantizer"] = 26 enc["speed-preset"] = 6 mux = New MediaControl(pl, "mp4mux") mux["fragment-duration"] = 2048 snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.mp4" ' Collega fra loro i plugin di "GStreamer": src.LinkTo(cnv) cnv.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Avvia la registrazione video: pl.Play() tm = Now While pl.State = Media.Ready i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale: Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) Wait 0.01 Wend End Public Sub Button2_Click() pl.Stop() pl.Close() Print "Registrazione terminata !" End
Creare un file video di formato "Ogg-Theora"
Public Sub Form_Open() Dim mp As New MapPoint(41.89018, 12.49230) With MapView1.Map .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") .Zoom = 15 .Center = mp End With End Private pl As MediaPipeline Public Sub Button1_Click() Dim src, cnv, enc, mux, snk As MediaControl Dim flt As MediaFilter Dim tm As Date Dim i As Integer If Exist("/tmp/video.ogg") Then Kill "/tmp/video.ogg" pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare: src["xid"] = MapView1.Id cnv = New MediaControl(pl, "videoconvert") flt = New MediaFilter(pl, "video/x-raw,framerate=25/1") enc = New MediaControl(pl, "theoraenc") mux = New MediaControl(pl, "oggmux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.ogg" snk["sync"] = False ' Collega fra loro i plugin di "GStreamer": src.LinkTo(cnv) cnv.LinkTo(flt) flt.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Avvia la registrazione video: pl.Play() tm = Now While pl.State = Media.Ready i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale: Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) Wait 0.01 Wend End Public Sub Button2_Click() pl.Stop() pl.Close() Print "Registrazione terminata !" End
Creare un file video di formato "Matroska"
Public Sub Form_Open() Dim mp As New MapPoint(41.89018, 12.49230) With MapView1.Map .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") .Zoom = 15 .Center = mp End With End Private pl As MediaPipeline Public Sub Button1_Click() Dim src, cnv, enc, mux, snk As MediaControl Dim tm As Date Dim i As Integer If Exist("/tmp/video.mkv") Then Kill "/tmp/video.mkv" pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare: src["xid"] = MapView1.Id 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" ' Collega fra loro i plugin di "GStreamer": src.LinkTo(cnv) cnv.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Avvia la registrazione video: pl.Play() tm = Now While pl.State = Media.Ready i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale: Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) Wait 0.01 Wend End Public Sub Button2_Click() pl.Stop() pl.Close() Print "Registrazione terminata !" End
Creare un file video di formato "FLV"
Public Sub Form_Open() Dim mp As New MapPoint(41.89018, 12.49230) With MapView1.Map .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") .Zoom = 15 .Center = mp End With End Private pl As MediaPipeline Public Sub Button1_Click() Dim src, cnv, enc, mux, snk As MediaControl Dim tm As Date Dim i As Integer If Exist("/tmp/video.flv") Then Kill "/tmp/video.flv" pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare: src["xid"] = MapView1.Id cnv = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "flvmux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.flv" ' Collega fra loro i plugin di "GStreamer": src.LinkTo(cnv) cnv.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Avvia la registrazione video: pl.Play() tm = Now While pl.State = Media.Ready i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale: Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) Wait 0.01 Wend End Public Sub Button2_Click() pl.Stop() pl.Close() Print "Registrazione terminata !" End
Creare un file video di formato "AVI"
Public Sub Form_Open() Dim mp As New MapPoint(41.89018, 12.49230) With MapView1.Map .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") .Zoom = 15 .Center = mp End With End Private pl As MediaPipeline Public Sub Button1_Click() Dim src, cnv, mux, snk As MediaControl Dim tm As Date Dim i As Integer If Exist("/tmp/video.avi") Then Kill "/tmp/video.avi" pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla proprietà "xid" il numero identificativo della finestra della "MapView" da registrare: src["xid"] = MapView1.Id cnv = New MediaControl(pl, "videoconvert") mux = New MediaControl(pl, "avimux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.avi" ' Collega fra loro i plugin di "GStreamer": src.LinkTo(cnv) cnv.LinkTo(mux) mux.LinkTo(snk) ' Avvia la registrazione video: pl.Play() tm = Now While pl.State = Media.Ready i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato nell'intestazione del "Form" principale: Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) Wait 0.01 Wend End Public Sub Button2_Click() pl.Stop() pl.Close() Print "Registrazione terminata !" End