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 temporaneo As String
 
 
  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"
 
  temporaneo = Temp
 
 
   
 
   
 
   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=5/1")
+
   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"] = temporaneo
+
   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()
  Copy temporaneo To "/tmp/video.ogg"
 
 
   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