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.
Riga 1: Riga 1:
 
==Convertire un file video nel formato OGG==
 
==Convertire un file video nel formato OGG==
 +
 +
===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
 +
  Dim temporaneo As String
 +
 +
  temporaneo = Temp
 +
 
 +
  pl = New MediaPipeline As "PLine"
 +
 +
  src = New MediaControl(pl, "filesrc")
 +
  src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>"
 +
  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")
 +
  tee = New MediaControl(pl, "tee")
 +
  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
 +
 +
<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)
 +
  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===
 
===Ottenere una conversione in formato OGG senza audio===
Riga 17: Riga 95:
 
   
 
   
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/video''</font>"
+
   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 74: Riga 152:
 
   
 
   
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/video''</font>"
+
   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 131: Riga 209:
 
   
 
   
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/video''</font>"
+
   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")

Versione delle 19:58, 5 nov 2023

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"
 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")
 tee = New MediaControl(pl, "tee")
 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
 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, "theoraenc")
 mux = New MediaControl(pl, "oggmux")
 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.ogg"

 pl.Close
 Quit

 Print "\n\e[0mConversione terminata !"

End


Public Sub PLine_End()

 bo = True

End

Convertire un file video 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
 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, "matroskamux")
 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.mkv"

 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