Differenze tra le versioni di "Registrare quanto mostrato da una MapView e farne un video Ogg-Theora"
Da Gambas-it.org - Wikipedia.
Riga 17: | Riga 17: | ||
Private pl As MediaPipeline | Private pl As MediaPipeline | ||
− | |||
Private bo As Boolean | Private bo As Boolean | ||
Riga 28: | Riga 27: | ||
If Exist("/tmp/video.ogg") Then Kill "/tmp/video.ogg" | If Exist("/tmp/video.ogg") Then Kill "/tmp/video.ogg" | ||
− | |||
− | |||
pl = New MediaPipeline | pl = New MediaPipeline | ||
Riga 37: | Riga 34: | ||
src["xid"] = MapView1.Id | src["xid"] = MapView1.Id | ||
cnv = New MediaControl(pl, "videoconvert") | cnv = New MediaControl(pl, "videoconvert") | ||
− | flt = New MediaFilter(pl, "video/x-raw,framerate= | + | flt = New MediaFilter(pl, "video/x-raw,framerate=25/1") |
enc = New MediaControl(pl, "theoraenc") | enc = New MediaControl(pl, "theoraenc") | ||
mux = New MediaControl(pl, "oggmux") | mux = New MediaControl(pl, "oggmux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = "/tmp/video.ogg" |
snk["sync"] = False | snk["sync"] = False | ||
Riga 59: | Riga 56: | ||
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> | ||
− | Me.Title "Tempo: " & Str(Time(0, 0, 0, i)) | + | Me.Title = "Tempo: " & Str(Time(0, 0, 0, i)) |
Wait 0.01 | Wait 0.01 | ||
Wend | Wend | ||
End | End | ||
+ | |||
Public Sub Button2_Click() | Public Sub Button2_Click() | ||
Riga 70: | Riga 68: | ||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
− | |||
Print "Registrazione terminata !" | Print "Registrazione terminata !" | ||
End | End |
Versione attuale delle 05:00, 18 gen 2024
E' possibile catturare quanto mostrato da una MapView e salvarlo in un file video di formato "Ogg-Theora".
E' necessario attivare anche il Componente gb.media.
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 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" 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 Not bo 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() bo = True pl.Stop() pl.Close() Print "Registrazione terminata !" End