Differenze tra le versioni di "Salvare in un file MP4 una ripresa video mediante una WebCam con il Componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 11: | Riga 11: | ||
Dim primofile, mss As String | Dim primofile, mss As String | ||
− | + | primofile = "/tmp/primofile.mp4" | |
<FONT Color=gray>' ''Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente'' | <FONT Color=gray>' ''Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente'' | ||
' ''che la durata del video in secondi sarà uguale alla metà del valore immesso:''</font> | ' ''che la durata del video in secondi sarà uguale alla metà del valore immesso:''</font> | ||
− | + | dur = 20 | |
− | + | eff = (dur * 1000) / 2 | |
− | + | pl = New MediaPipeline | |
− | + | src = New MediaControl(pl, "v4l2src") | |
− | + | src["device"] = "/dev/video0" | |
− | + | 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 | |
<FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font> | <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font> | ||
− | + | src.LinkTo(cnv) | |
− | + | cnv.LinkTo(enc) | |
− | + | enc.LinkTo(mux) | |
− | + | mux.LinkTo(snk) | |
<FONT Color=gray>' ''Avvia la ripresa video:''</font> | <FONT Color=gray>' ''Avvia la ripresa video:''</font> | ||
− | + | pl.Play() | |
− | + | tm = Now | |
− | + | Repeat | |
− | + | i = DateDiff(tm, Now, gb.Millisecond) | |
− | |||
<FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:''</font> | <FONT Color=gray>' ''Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale:''</font> | ||
− | + | Write "\rTempo: " & CStr(Date(0, 0, 0, 0, 0, 0, i)) | |
− | + | Until i >= eff | |
− | + | ||
− | + | pl.Stop() | |
− | + | pl.Close() | |
− | + | Copy primofile To "/tmp/file.mp4" | |
− | + | Print "\nRegistrazione terminata !" | |
− | + | ||
− | |||
− | |||
− | |||
'''End''' | '''End''' |
Versione delle 09:15, 21 ago 2019
Il Componente gb.media, utilizzando particolari plugin di GStreamer, consente di salvare una ripresa video mediante una WebCam in un file di formato MP4.
Vediamo un esempio di ripresa video - priva di audio - con un'applicazione a riga di comando:
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, mss As String primofile = "/tmp/primofile.mp4" ' Imposta il numero di fotogrammi di cui sarà composto il video, tenendo presente ' che la durata del video in secondi sarà uguale alla metà del valore immesso: dur = 20 eff = (dur * 1000) / 2 pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") src["device"] = "/dev/video0" 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 ' Colleghiamo fra loro i plugin di "GStreamer": src.LinkTo(cnv) cnv.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Avvia la ripresa 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: " & CStr(Date(0, 0, 0, 0, 0, 0, i)) Until i >= eff pl.Stop() pl.Close() Copy primofile To "/tmp/file.mp4" Print "\nRegistrazione terminata !" End