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...") |
|||
Riga 9: | Riga 9: | ||
Dim tm As Date | Dim tm As Date | ||
Dim dur, eff, i As Integer | Dim dur, eff, i As Integer | ||
− | Dim | + | Dim temporaneo As String |
− | + | temporaneo = Temp | |
<FONT Color=gray>' ''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:''</font> | <FONT Color=gray>' ''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:''</font> | ||
Riga 25: | Riga 25: | ||
mux = New MediaControl(pl, "matroskamux") | mux = New MediaControl(pl, "matroskamux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = temporaneo |
snk["sync"] = False | snk["sync"] = False | ||
Riga 48: | Riga 48: | ||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
− | Copy | + | Copy temporaneo To "/tmp/file.mkv" |
Print "\nRegistrazione terminata !" | Print "\nRegistrazione terminata !" | ||
Riga 61: | Riga 61: | ||
Dim tm As Date | Dim tm As Date | ||
Dim dur, eff, i As Integer | Dim dur, eff, i As Integer | ||
− | Dim | + | Dim temporaneo As String |
− | + | temporaneo = Temp | |
<FONT Color=gray>' ''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:''</font> | <FONT Color=gray>' ''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:''</font> | ||
Riga 77: | Riga 77: | ||
mux = New MediaControl(pl, "mp4mux") | mux = New MediaControl(pl, "mp4mux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = temporaneo |
snk["sync"] = False | snk["sync"] = False | ||
Riga 100: | Riga 100: | ||
pl.Stop() | pl.Stop() | ||
pl.Close() | pl.Close() | ||
− | Copy | + | Copy temporaneo To "/tmp/file.mp4" |
Print "\nRegistrazione terminata !" | Print "\nRegistrazione terminata !" | ||
'''End''' | '''End''' |
Versione delle 02:08, 15 mag 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 temporaneo As String temporaneo = Temp ' 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"] = temporaneo 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 temporaneo 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 temporaneo As String temporaneo = Temp ' 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"] = temporaneo 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 temporaneo To "/tmp/file.mp4" Print "\nRegistrazione terminata !" End