Differenze tra le versioni di "Convertire un file video in un formato OGG, Matroska e MP4 mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
(9 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | + | ==Convertire un file video nel formato OGG== | |
− | + | ||
− | Private pl As | + | ===Ottenere una conversione in formato OGG con audio=== |
+ | Si otterrà un file video del formato OGG, ma <SPAN Style="text-decoration:underline">con audio</span>, se il file originario è un file audio/video: | ||
+ | Private bo As Boolean | ||
+ | |||
+ | |||
+ | Public Sub Main() | ||
+ | |||
+ | Dim pl As MediaPipeline | ||
+ | Dim src, vdcb, tee, vcon, the, adcb, acon, vor, ogg, snk As MediaControl | ||
+ | Dim que1, que2, que3 As MediaControl | ||
+ | |||
+ | pl = New MediaPipeline As "PLine" | ||
+ | |||
+ | src = New MediaControl(pl, "filesrc") | ||
+ | src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>" | ||
+ | tee = New MediaControl(pl, "tee") | ||
+ | vdcb = New MediaControl(pl, "decodebin") | ||
+ | que1 = New MediaControl(pl, "queue") | ||
+ | vcon = New MediaControl(pl, "videoconvert") | ||
+ | the = New MediaControl(pl, "theoraenc") | ||
+ | adcb = New MediaControl(pl, "decodebin") | ||
+ | que2 = New MediaControl(pl, "queue") | ||
+ | acon = New MediaControl(pl, "audioconvert") | ||
+ | vor = New MediaControl(pl, "vorbisenc") | ||
+ | que3 = New MediaControl(pl, "queue") | ||
+ | ogg = New MediaControl(pl, "oggmux") | ||
+ | snk = New MediaControl(pl, "filesink") | ||
+ | snk["location"] = "/tmp/video.ogg" | ||
+ | |||
+ | <FONT Color=gray>' '''''Parte video:'''''</font> | ||
+ | src.LinkTo(tee) | ||
+ | tee.LinkTo(vdcb) | ||
+ | vdcb.LinkLaterTo(que1) | ||
+ | que1.LinkTo(vcon) | ||
+ | vcon.LinkTo(the) | ||
+ | the.LinkTo(ogg) | ||
+ | <FONT Color=gray>' '''''Parte audio:'''''</font> | ||
+ | tee.LinkTo(adcb) | ||
+ | adcb.LinkLaterTo(que2) | ||
+ | que2.LinkTo(acon) | ||
+ | acon.LinkTo(vor) | ||
+ | vor.LinkTo(que3) | ||
+ | <FONT Color=gray>' '''''Combinazione dei dati audio e video:'''''</font> | ||
+ | que3.LinkTo(ogg) | ||
+ | <FONT Color=gray>' '''''Creazione del file ogg finale:'''''</font> | ||
+ | ogg.LinkTo(snk) | ||
+ | |||
+ | <FONT Color=gray>' ''Avvia la conversione audio-video:''</font> | ||
+ | pl.Play() | ||
+ | |||
+ | While pl.Duration < 1 | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) | ||
+ | While Not bo | ||
+ | Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | |||
+ | pl.Stop() | ||
+ | pl.Close() | ||
+ | Print "\nTermine registrazione" | ||
+ | Quit | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub PLine_End() | ||
+ | |||
+ | bo = True | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | ===Ottenere una conversione in formato OGG senza audio=== | ||
+ | Si otterrà un file video del formato OGG, ma <SPAN Style="text-decoration:underline">privo di audio</span>: | ||
+ | Private pl As MediaPipeline | ||
Private bo As Boolean | Private bo As Boolean | ||
Riga 8: | Riga 84: | ||
Dim src, dcb, vdc, enc, mux, snk As MediaControl | Dim src, dcb, vdc, enc, mux, snk As MediaControl | ||
− | |||
− | |||
− | |||
pl = New MediaPipeline As "PLine" | pl = New MediaPipeline As "PLine" | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>" |
dcb = New MediaControl(pl, "decodebin") | dcb = New MediaControl(pl, "decodebin") | ||
vdc = New MediaControl(pl, "videoconvert") | vdc = New MediaControl(pl, "videoconvert") | ||
Riga 21: | Riga 94: | ||
mux = New MediaControl(pl, "oggmux") | mux = New MediaControl(pl, "oggmux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = "/tmp/video.ogg" |
src.LinkTo(dcb) | src.LinkTo(dcb) | ||
Riga 31: | Riga 104: | ||
pl.Play() | pl.Play() | ||
+ | While pl.Duration < 1 | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) | ||
While Not bo | While Not bo | ||
+ | Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) | ||
Wait 0.01 | Wait 0.01 | ||
Wend | Wend | ||
− | + | pl.Close | |
+ | Quit | ||
− | + | Print "\n\e[0mConversione terminata !" | |
− | |||
End | End | ||
+ | |||
Public Sub PLine_End() | Public Sub PLine_End() | ||
Riga 48: | Riga 127: | ||
End | End | ||
− | + | ==Convertire un file video senza audio nel formato Matroska== | |
− | Private pl As | + | Si otterrà un file video del formato Matroska, ma <U>privo di audio</u>: |
+ | Private pl As MediaPipeline | ||
Private bo As Boolean | Private bo As Boolean | ||
Riga 56: | Riga 136: | ||
Dim src, dcb, vdc, enc, mux, snk As MediaControl | Dim src, dcb, vdc, enc, mux, snk As MediaControl | ||
− | |||
− | |||
− | |||
pl = New MediaPipeline As "PLine" | pl = New MediaPipeline As "PLine" | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>" |
dcb = New MediaControl(pl, "decodebin") | dcb = New MediaControl(pl, "decodebin") | ||
vdc = New MediaControl(pl, "videoconvert") | vdc = New MediaControl(pl, "videoconvert") | ||
Riga 69: | Riga 146: | ||
mux = New MediaControl(pl, "matroskamux") | mux = New MediaControl(pl, "matroskamux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = "/tmp/video.mkv" |
src.LinkTo(dcb) | src.LinkTo(dcb) | ||
Riga 79: | Riga 156: | ||
pl.Play() | pl.Play() | ||
+ | While pl.Duration < 1 | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) | ||
While Not bo | While Not bo | ||
+ | Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) | ||
Wait 0.01 | Wait 0.01 | ||
Wend | Wend | ||
− | + | pl.Close | |
+ | Quit | ||
− | + | Print "\n\e[0mConversione terminata !" | |
− | |||
End | End | ||
+ | |||
Public Sub PLine_End() | Public Sub PLine_End() | ||
Riga 96: | Riga 179: | ||
End | End | ||
− | + | ==Convertire un file video senza audio nel formato MP4== | |
− | Private pl As | + | Si otterrà un file video del formato MP4, ma <U>privo di audio</u>: |
+ | Private pl As MediaPipeline | ||
Private bo As Boolean | Private bo As Boolean | ||
Riga 104: | Riga 188: | ||
Dim src, dcb, vdc, enc, mux, snk As MediaControl | Dim src, dcb, vdc, enc, mux, snk As MediaControl | ||
− | |||
− | |||
− | |||
pl = New MediaPipeline As "PLine" | pl = New MediaPipeline As "PLine" | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>" |
dcb = New MediaControl(pl, "decodebin") | dcb = New MediaControl(pl, "decodebin") | ||
vdc = New MediaControl(pl, "videoconvert") | vdc = New MediaControl(pl, "videoconvert") | ||
Riga 117: | Riga 198: | ||
mux = New MediaControl(pl, "mp4mux") | mux = New MediaControl(pl, "mp4mux") | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = "/tmp/video.mp4" |
src.LinkTo(dcb) | src.LinkTo(dcb) | ||
Riga 127: | Riga 208: | ||
pl.Play() | pl.Play() | ||
+ | While pl.Duration < 1 | ||
+ | Wait 0.01 | ||
+ | Wend | ||
+ | Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) | ||
While Not bo | While Not bo | ||
+ | Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) | ||
Wait 0.01 | Wait 0.01 | ||
Wend | Wend | ||
− | + | pl.Close | |
+ | Quit | ||
− | + | Print "\n\e[0mConversione terminata !" | |
− | |||
End | End | ||
+ | |||
Public Sub PLine_End() | Public Sub PLine_End() |
Versione attuale delle 04:38, 3 lug 2024
Indice
Convertire un file video nel formato OGG
Ottenere una conversione in formato OGG con audio
Si otterrà un file video del formato OGG, ma con audio, se il file originario è un file audio/video:
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, vdcb, tee, vcon, the, adcb, acon, vor, ogg, snk As MediaControl Dim que1, que2, que3 As MediaControl pl = New MediaPipeline As "PLine" src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/video" tee = New MediaControl(pl, "tee") vdcb = New MediaControl(pl, "decodebin") que1 = New MediaControl(pl, "queue") vcon = New MediaControl(pl, "videoconvert") the = New MediaControl(pl, "theoraenc") adcb = New MediaControl(pl, "decodebin") que2 = New MediaControl(pl, "queue") acon = New MediaControl(pl, "audioconvert") vor = New MediaControl(pl, "vorbisenc") que3 = New MediaControl(pl, "queue") ogg = New MediaControl(pl, "oggmux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.ogg" ' Parte video: src.LinkTo(tee) tee.LinkTo(vdcb) vdcb.LinkLaterTo(que1) que1.LinkTo(vcon) vcon.LinkTo(the) the.LinkTo(ogg) ' Parte audio: tee.LinkTo(adcb) adcb.LinkLaterTo(que2) que2.LinkTo(acon) acon.LinkTo(vor) vor.LinkTo(que3) ' Combinazione dei dati audio e video: que3.LinkTo(ogg) ' Creazione del file ogg finale: ogg.LinkTo(snk) ' Avvia la conversione audio-video: pl.Play() While pl.Duration < 1 Wait 0.01 Wend Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) While Not bo Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Wend pl.Stop() pl.Close() Print "\nTermine registrazione" Quit End Public Sub PLine_End() bo = True End
Ottenere una conversione in formato OGG senza audio
Si otterrà un file video del formato OGG, ma privo di audio:
Private pl As MediaPipeline Private bo As Boolean Public Sub Main() Dim src, dcb, vdc, enc, mux, snk As MediaControl pl = New MediaPipeline As "PLine" src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/video" dcb = New MediaControl(pl, "decodebin") vdc = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "theoraenc") mux = New MediaControl(pl, "oggmux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.ogg" src.LinkTo(dcb) dcb.LinkLaterTo(vdc) vdc.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) pl.Play() While pl.Duration < 1 Wait 0.01 Wend Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) While Not bo Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Wend pl.Close Quit Print "\n\e[0mConversione terminata !" End Public Sub PLine_End() bo = True End
Convertire un file video senza audio nel formato Matroska
Si otterrà un file video del formato Matroska, ma privo di audio:
Private pl As MediaPipeline Private bo As Boolean Public Sub Main() Dim src, dcb, vdc, enc, mux, snk As MediaControl pl = New MediaPipeline As "PLine" src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/video" dcb = New MediaControl(pl, "decodebin") vdc = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "matroskamux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.mkv" src.LinkTo(dcb) dcb.LinkLaterTo(vdc) vdc.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) pl.Play() While pl.Duration < 1 Wait 0.01 Wend Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) While Not bo Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Wend pl.Close Quit Print "\n\e[0mConversione terminata !" End Public Sub PLine_End() bo = True End
Convertire un file video senza audio nel formato MP4
Si otterrà un file video del formato MP4, ma privo di audio:
Private pl As MediaPipeline Private bo As Boolean Public Sub Main() Dim src, dcb, vdc, enc, mux, snk As MediaControl pl = New MediaPipeline As "PLine" src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/video" dcb = New MediaControl(pl, "decodebin") vdc = New MediaControl(pl, "videoconvert") enc = New MediaControl(pl, "x264enc") mux = New MediaControl(pl, "mp4mux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/video.mp4" src.LinkTo(dcb) dcb.LinkLaterTo(vdc) vdc.LinkTo(enc) enc.LinkTo(mux) mux.LinkTo(snk) pl.Play() While pl.Duration < 1 Wait 0.01 Wend Print "Durata del file video: "; Time(0, 0, 0, pl.Duration * 1000) While Not bo Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Wend pl.Close Quit Print "\n\e[0mConversione terminata !" End Public Sub PLine_End() bo = True End