Differenze tra le versioni di "Registrare quanto mostrato da una MapView e farne un video"

Da Gambas-it.org - Wikipedia.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
 
<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
Private bo As Boolean
 
 
   
 
   
 
  Public Sub Button1_Click()
 
  Public Sub Button1_Click()
Riga 53: Riga 52:
 
   tm = Now
 
   tm = Now
 
   
 
   
   While Not bo
+
   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()
 
   
 
   
  bo = True
 
 
   pl.Stop()
 
   pl.Stop()
 
   pl.Close()
 
   pl.Close()
Riga 88: Riga 86:
 
   
 
   
 
  Private pl As MediaPipeline
 
  Private pl As MediaPipeline
Private bo As Boolean
 
 
   
 
   
 
  Public Sub Button1_Click()
 
  Public Sub Button1_Click()
Riga 124: Riga 121:
 
   tm = Now
 
   tm = Now
 
   
 
   
   While Not bo
+
   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()
 
   
 
   
  bo = True
 
 
   pl.Stop()
 
   pl.Stop()
 
   pl.Close()
 
   pl.Close()
Riga 159: Riga 155:
 
   
 
   
 
  Private pl As MediaPipeline
 
  Private pl As MediaPipeline
Private bo As Boolean
 
 
   
 
   
 
  Public Sub Button1_Click()
 
  Public Sub Button1_Click()
Riga 191: Riga 186:
 
   tm = Now
 
   tm = Now
 
   
 
   
   While Not bo
+
   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&#058;//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&#058;//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()
 
   
 
   
  bo = True
 
 
   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.

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