Differenze tra le versioni di "Salvare in un file video con il Componente gb.media quanto mostrato sullo schermo"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Usando le Classi "MediaPipeline" e "MediaControl" del Componente "gb.media" unitamente ad alcuni ''plugin'' di GStreamer, è possibile salvare in un file video quanto mostrato...") |
(Nessuna differenza)
|
Versione delle 00:11, 7 apr 2023
Usando le Classi "MediaPipeline" e "MediaControl" del Componente "gb.media" unitamente ad alcuni plugin di GStreamer, è possibile salvare in un file video quanto mostrato sullo schermo.
Salvare in un file video del formato "Matroska"
Mostriamo un esempio per salvare in un file video - senza audio - del formato "Matroska" quanto mostrato sullo schermo.
Public Sub Main() Dim pl As MediaPipeline Dim src, cnv, enc, mux, snk As MediaControl Dim tm As Date Dim dur, eff, i As Integer Dim primofile As String primofile = "/tmp/primofile" ' Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente che la durata del video in secondi sarà approssimativamente uguale a 1/4 del valore immesso: dur = 60 eff = (dur * 1000) / 2 pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") src["num-buffers"] = dur cnv = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "matroskamux") snk = New MediaControl(pl, "filesink") snk["location"] = primofile snk["sync"] = False ' 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 Repeat i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale: Write "\rTempo: " & Time(0, 0, 0, i) Wait 0.01 Until i >= eff pl.Stop() pl.Close() Copy primofile To "/tmp/file.mkv" Print "\nRegistrazione terminata !" End
Salvare in un file video del formato "MP4"
Mostriamo un esempio per salvare in un file video - senza audio - del formato "MP4" quanto mostrato sullo schermo.
Public Sub Main() Dim pl As MediaPipeline Dim src, cnv, enc, mux, snk As MediaControl Dim tm As Date Dim dur, eff, i As Integer Dim primofile As String primofile = "/tmp/primofile" ' Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente che la durata del video in secondi sarà approssimativamente uguale a 1/4 del valore immesso: dur = 60 eff = (dur * 1000) / 2 pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") src["num-buffers"] = dur cnv = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "mp4mux") snk = New MediaControl(pl, "filesink") snk["location"] = primofile snk["sync"] = False ' 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 Repeat i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale: Write "\rTempo: " & Time(0, 0, 0, i) Wait 0.01 Until i >= eff pl.Stop() pl.Close() Copy primofile To "/tmp/file.mp4" Print "\nRegistrazione terminata !" End