Salvare in un file OGV una ripresa video mediante una WebCam con il Componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 24 giu 2017 alle 09:05 di Vuott (Discussione | contributi)
Il Componente gb.media, utilizzando particolari plugin di GStreamer, consente di salvare una ripresa video mediante una WebCam in un file di formato OGV.
Vediamo un esempio - privo di audio - con un'applicazione a riga di comando:
Public Sub Main() Dim pl As MediaPipeline Dim src, the, ogg, snk As MediaControl Dim ftr As MediaFilter pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=30/1") the = New MediaControl(pl, "theoraenc") ogg = New MediaControl(pl, "oggmux") ogg["name"] = "mux" snk = New MediaControl(pl, "filesink") snk["location"] = "/percorso/del/file.ogv" ' Colleghiamo fra loro i plugin di "GStreamer": src.LinkTo(ftr) ftr.LinkTo(the) the.LinkTo(ogg) ogg.LinkTo(snk) ' Avvia la ripresa video: pl.Play() While True ' Il tempo trascorso dall'inizio della ripresa video viene mostrato in console/Terminale: Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) Wend End
Mostrare nel video anche il tempo trascorso
Per mostrare nella finestra del video anche il tempo trascorso dall'inizio della ripresa video, è necessario utilizzare il plugin timeoverlay:
Public Sub Main() Dim pl As MediaPipeline Dim src, tim, the, ogg, snk As MediaControl Dim ftr As MediaFilter pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=30/1") tim = New MediaControl(pl, "timeoverlay") the = New MediaControl(pl, "theoraenc") ogg = New MediaControl(pl, "oggmux") ogg["name"] = "mux" snk = New MediaControl(pl, "filesink") snk["location"] = "/percorso/del/file.ogv" ' Colleghiamo fra loro i plugin di "GStreamer": src.LinkTo(ftr) ftr.LinkTo(tim) tim.LinkTo(the) the.LinkTo(ogg) ogg.LinkTo(snk) ' Avvia la ripresa video: pl.Play() While True ' Mostra anche in console/Terminale il tempo trascorso dall'inizio della ripresa video: Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) Wend End