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.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 88: | Riga 88: | ||
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" | ||
Riga 101: | Riga 98: | ||
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 119: | Riga 116: | ||
Wait 0.01 | Wait 0.01 | ||
Until bo | Until bo | ||
− | |||
− | |||
pl.Close | pl.Close | ||
Riga 136: | Riga 131: | ||
End | End | ||
− | ==Convertire un file video nel formato Matroska== | + | ==Convertire un file video senza audio nel formato Matroska== |
− | Si otterrà un file video del formato Matroska, ma < | + | Si otterrà un file video del formato Matroska, ma <U>privo di audio</u>: |
Private pl As New MediaPipeline | Private pl As New MediaPipeline | ||
Private bo As Boolean | Private bo As Boolean | ||
Riga 145: | Riga 140: | ||
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" | ||
Riga 158: | Riga 150: | ||
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 176: | Riga 168: | ||
Wait 0.01 | Wait 0.01 | ||
Until bo | Until bo | ||
− | |||
− | |||
pl.Close | pl.Close |
Versione delle 04:01, 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 Dim temporaneo As String temporaneo = Temp 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"] = temporaneo ' 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) Repeat Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo Copy temporaneo To "/tmp/file.ogg" 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 New 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) Repeat Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo 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 New 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) Repeat Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo pl.Close Quit Print "\n\e[0mConversione terminata !" End Public Sub PLine_End() bo = True End
Convertire un file video nel formato MP4
Si otterrà un file video del formato MP4, ma privo di audio:
Private pl As New MediaPipeline Private bo As Boolean Public Sub Main() Dim src, dcb, vdc, enc, mux, snk As MediaControl Dim temporaneo As String temporaneo = Temp 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"] = temporaneo 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) Repeat Write "\r\e[0mTempo trascorso: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo Copy temporaneo To "/tmp/video.mp4" pl.Close Quit Print "\n\e[0mConversione terminata !" End Public Sub PLine_End() bo = True End