Differenze tra le versioni di "Creare mediante il Componente gb.media un file video da più file immagini"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Con le risorse del Componente ''gb.media'' è possibile generare un file video da più file immagine. Mostriamo un esempio, nel quale sarà generato un file video di formato...") |
|||
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
Con le risorse del Componente ''gb.media'' è possibile generare un file video da più file immagine. | Con le risorse del Componente ''gb.media'' è possibile generare un file video da più file immagine. | ||
− | Mostriamo un esempio, nel quale sarà generato un file video di formato MP4 da molteplici file immagine di formato PNG, che supponiamo comincino con il nome "frame" seguito da 5 cifre decimali: <B><SUP> | + | Mostriamo un esempio, nel quale sarà generato un file video di formato "'''MP4'''" da molteplici file immagine di formato PNG, che supponiamo comincino con il nome "frame" seguito da 5 cifre decimali: <B><SUP>[[[#Note|nota 1]]]</sup></b> |
+ | Private VIDEO As String = "/tmp/video.mp4" | ||
+ | |||
+ | |||
Public Sub Main() | Public Sub Main() | ||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
− | Dim msc, png, vcn, enc | + | Dim msc, png, vcn, enc, mux, snk As MediaControl |
+ | Dim i, post As Integer | ||
pl = New MediaPipeline | pl = New MediaPipeline | ||
Riga 11: | Riga 15: | ||
msc = New MediaControl(pl, "multifilesrc") | msc = New MediaControl(pl, "multifilesrc") | ||
msc["location"] = <FONT Color=darkgreen>"''/percorso/dei/file/immagine/<B>frame%05d</b>.png''</font>" | msc["location"] = <FONT Color=darkgreen>"''/percorso/dei/file/immagine/<B>frame%05d</b>.png''</font>" | ||
− | msc["caps"] = "image/png,framerate=10/1" | + | msc["caps"] = "image/png,framerate='''10'''/1" <FONT Color=gray>' ''Si abbia cura di impostare il "framerate" secondo la necessità (qui ad esempio "10" fps)''</font> |
png = New MediaControl(pl, "pngdec") | png = New MediaControl(pl, "pngdec") | ||
vcn = New MediaControl(pl, "videoconvert") | vcn = New MediaControl(pl, "videoconvert") | ||
Riga 17: | Riga 21: | ||
mux = New MediaControl(pl, "mp4mux") | mux = New MediaControl(pl, "mp4mux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = VIDEO |
<FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font> | <FONT Color=gray>' ''Collega fra loro i plugin di "GStreamer":''</font> | ||
Riga 29: | Riga 33: | ||
pl.Play() | pl.Play() | ||
− | Wait | + | <FONT Color=gray>' ''Consente la generazione del file video:''</font> |
+ | Repeat | ||
+ | post = i | ||
+ | Wait 0.1 | ||
+ | i = Stat(VIDEO).Size | ||
+ | Until post == i | ||
pl.Stop | pl.Stop |
Versione attuale delle 20:35, 15 lug 2024
Con le risorse del Componente gb.media è possibile generare un file video da più file immagine.
Mostriamo un esempio, nel quale sarà generato un file video di formato "MP4" da molteplici file immagine di formato PNG, che supponiamo comincino con il nome "frame" seguito da 5 cifre decimali: [nota 1]
Private VIDEO As String = "/tmp/video.mp4" Public Sub Main() Dim pl As MediaPipeline Dim msc, png, vcn, enc, mux, snk As MediaControl Dim i, post As Integer pl = New MediaPipeline msc = New MediaControl(pl, "multifilesrc") msc["location"] = "/percorso/dei/file/immagine/frame%05d.png" msc["caps"] = "image/png,framerate=10/1" ' Si abbia cura di impostare il "framerate" secondo la necessità (qui ad esempio "10" fps) png = New MediaControl(pl, "pngdec") vcn = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "mp4mux") snk = New MediaControl(pl, "filesink") snk["location"] = VIDEO ' Collega fra loro i plugin di "GStreamer": msc.LinkTo(png) png.LinkTo(vcn) vcn.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) ' Effettua la generazione del file video: pl.Play() ' Consente la generazione del file video: Repeat post = i Wait 0.1 i = Stat(VIDEO).Size Until post == i pl.Stop pl.Close() Print "Creazione del file video MP4 effettuato !" End
Note
[1] Vedasi il seguente paragrafo della Wiki: Catturare più fotogrammi da una ripresa video.