Differenze tra le versioni di "Salvare in un file MKV una ripresa video mediante una WebCam con il Componente gb.media"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il Componente ''gb.media'', utilizzando particolari plugin di ''GStreamer'', consente di salvare una ripresa video mediante una WebCam in un file di formato MKV - ''Matroska''...") |
|||
Riga 6: | Riga 6: | ||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
− | Dim src, enc, mux, snk As MediaControl | + | Dim src, cnv, enc, mux, snk As MediaControl |
Dim ftr As MediaFilter | Dim ftr As MediaFilter | ||
Dim tm As Date | Dim tm As Date | ||
Riga 22: | Riga 22: | ||
src = New MediaControl(pl, "v4l2src") | src = New MediaControl(pl, "v4l2src") | ||
+ | src["device"] = "/dev/video0" | ||
src["num-buffers"] = dur | src["num-buffers"] = dur | ||
ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480") | ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480") | ||
+ | cnv = New MediaControl(pl, "videoconvert") | ||
enc = New MediaControl(pl, "x264enc") | enc = New MediaControl(pl, "x264enc") | ||
mux = New MediaControl(pl, "matroskamux") | mux = New MediaControl(pl, "matroskamux") | ||
Riga 31: | Riga 33: | ||
<FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font> | <FONT Color=gray>' ''Colleghiamo fra loro i plugin di "GStreamer":''</font> | ||
src.LinkTo(ftr) | src.LinkTo(ftr) | ||
− | ftr.LinkTo(enc) | + | ftr.LinkTo(cnv) |
+ | cnv.LinkTo(enc) | ||
enc.LinkTo(mux) | enc.LinkTo(mux) | ||
mux.LinkTo(snk) | mux.LinkTo(snk) | ||
Riga 52: | Riga 55: | ||
Quit | Quit | ||
Endif | Endif | ||
− | Write | + | Write mss |
Loop | Loop | ||
'''End''' | '''End''' |
Versione delle 18:51, 15 mag 2019
Il Componente gb.media, utilizzando particolari plugin di GStreamer, consente di salvare una ripresa video mediante una WebCam in un file di formato MKV - Matroska.
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 ftr As MediaFilter Dim tm As Date Dim dur, eff, i As Integer Dim primofile, mss 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à 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 ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480") cnv = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "matroskamux") snk = New MediaControl(pl, "filesink") snk["location"] = primofile ' Colleghiamo fra loro i plugin di "GStreamer": src.LinkTo(ftr) ftr.LinkTo(cnv) cnv.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Avvia la ripresa video: pl.Play() tm = Now Do i = DateDiff(tm, Now, gb.Millisecond) If i < eff Then ' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale: mss = "\rTempo: " & CStr(Date(0, 0, 0, 0, 0, 0, i)) Else pl.Stop() pl.Close() Copy primofile To "/tmp/file.mkv" mss = "\rRegistrazione terminata !" Quit Endif Write mss Loop End