Registrare quanto mostrato da una MapView e farne un video Ogg-Theora
Da Gambas-it.org - Wikipedia.
Versione del 15 mag 2023 alle 14:56 di Vuott (Discussione | contributi) (Creata pagina con "E' possibile catturare quanto mostrato da una ''MapView'' e salvarlo in un file video di formato "Ogg-Theora". Mostriamo un esempio pratico: Public Sub Form_Open() Dim m...")
E' possibile catturare quanto mostrato da una MapView e salvarlo in un file video di formato "Ogg-Theora".
Mostriamo un esempio pratico:
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 Private temporaneo As String Private bo As Boolean 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" temporaneo = Temp 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=5/1") enc = New MediaControl(pl, "theoraenc") mux = New MediaControl(pl, "oggmux") snk = New MediaControl(pl, "filesink") snk["location"] = temporaneo 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 Repeat 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 Until bo End Public Sub Button2_Click() bo = True pl.Stop() pl.Close() Copy temporaneo To "/tmp/video.ogg" Print "Registrazione terminata !" End