Differenze tra le versioni di "Salvare in un file OGV una ripresa video mediante una WebCam con il Componente gb.media"
Da Gambas-it.org - Wikipedia.
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 OGV. | 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'': | Vediamo un esempio - ''privo di audio'' - con un'applicazione ''a riga di comando'': | ||
+ | Private bo As Boolean | ||
+ | |||
+ | |||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 8: | Riga 10: | ||
Dim src, the, ogg, snk As MediaControl | Dim src, the, ogg, snk As MediaControl | ||
Dim ftr As MediaFilter | Dim ftr As MediaFilter | ||
− | + | Dim primofile As String | |
+ | |||
+ | bo = True | ||
+ | primofile = "/tmp/primofile.ogv" | ||
+ | |||
pl = New MediaPipeline | pl = New MediaPipeline | ||
− | + | ||
src = New MediaControl(pl, "v4l2src") | src = New MediaControl(pl, "v4l2src") | ||
− | ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate= | + | ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=1/1") |
the = New MediaControl(pl, "theoraenc") | the = New MediaControl(pl, "theoraenc") | ||
ogg = New MediaControl(pl, "oggmux") | ogg = New MediaControl(pl, "oggmux") | ||
ogg["name"] = "mux" | ogg["name"] = "mux" | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | 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> | ||
Riga 28: | Riga 34: | ||
pl.Play() | pl.Play() | ||
− | While | + | While bo |
<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 #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) | Write #File.Out, "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000) | ||
+ | Wait 0.001 | ||
Wend | Wend | ||
+ | |||
+ | Copy primofile To "/tmp/file.ogv" | ||
+ | pl.Stop() | ||
+ | pl.Close | ||
+ | |||
+ | Print "\nTermine registrazione" | ||
+ | Quit | ||
'''End''' | '''End''' | ||
− | + | ||
− | + | ||
− | + | '''Public''' Sub Application_Read() | |
− | |||
− | '''Public''' Sub | ||
− | |||
− | |||
− | |||
− | |||
− | + | Dim s As String | |
− | + | ||
− | + | Input s | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | bo = False | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
'''End''' | '''End''' | ||
+ | |||
+ | Per mostrare eventualmente nella finestra del video anche il tempo trascorso dall'inizio della ripresa video, è necessario utilizzare il plugin ''timeoverlay'': |
Versione delle 19:36, 9 ago 2017
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:
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, the, ogg, snk As MediaControl Dim ftr As MediaFilter Dim primofile As String bo = True primofile = "/tmp/primofile.ogv" pl = New MediaPipeline src = New MediaControl(pl, "v4l2src") ftr = New MediaFilter(pl, "video/x-raw,width=640,height=480,framerate=1/1") the = New MediaControl(pl, "theoraenc") ogg = New MediaControl(pl, "oggmux") ogg["name"] = "mux" snk = New MediaControl(pl, "filesink") snk["location"] = primofile ' 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 bo ' 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) Wait 0.001 Wend Copy primofile To "/tmp/file.ogv" pl.Stop() pl.Close Print "\nTermine registrazione" Quit End Public Sub Application_Read() Dim s As String Input s bo = False End
Per mostrare eventualmente nella finestra del video anche il tempo trascorso dall'inizio della ripresa video, è necessario utilizzare il plugin timeoverlay: