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.
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
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''. | 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'': | Vediamo un esempio di ripresa video - ''priva di audio'' - con un'applicazione ''a riga di comando'': | ||
− | + | Public Sub Main() | |
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Riga 10: | 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 | + | <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> |
− | + | 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"] = temporaneo | |
<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) | |
− | + | ftr.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(Time(0, 0, 0, i)) | |
− | + | Until i >= eff | |
− | + | ||
− | + | pl.Stop() | |
− | + | pl.Close() | |
− | + | Copy temporaneo To "/tmp/file.mkv" | |
− | + | Print "\nRegistrazione terminata !" | |
− | + | ||
− | + | End | |
− | |||
− | |||
− |
Versione attuale delle 09:18, 5 ott 2023
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 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à 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"] = temporaneo ' 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 Repeat i = DateDiff(tm, Now, gb.Millisecond) ' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale: Write "\rTempo: " & CStr(Time(0, 0, 0, i)) Until i >= eff pl.Stop() pl.Close() Copy temporaneo To "/tmp/file.mkv" Print "\nRegistrazione terminata !" End