Differenze tra le versioni di "Estrarre e salvare l'audio da un file video mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 34: Riga 34:
 
   Wend
 
   Wend
 
   Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
 
   Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
   Wait pl.Duration
+
   While Not bo
 +
    Wait 0.01
 +
  Wend
 +
 +
  pl.Close
 +
  Quit
 
   
 
   
 
  End
 
  End
Riga 41: Riga 46:
 
  Public Sub PLine_Position()
 
  Public Sub PLine_Position()
 
   
 
   
<FONT Color=gray>' ''Mostra il tempo trascorso dall'avvio del video:''</font>
+
  If pl.Position >= 1.0 Then
  Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000)
+
    Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
   Flush
+
    Flush
 +
   Endif
 
   
 
   
 
  End
 
  End
Riga 50: Riga 56:
 
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'estrazione è terminata''</font>
 
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'estrazione è terminata''</font>
 
   
 
   
  pl.Close
+
   Print "\nEstrazione audio terminata !"
   Print "\nEstrazione terminata !"
+
   bo = True
   Quit
 
 
    
 
    
 
  End
 
  End
Riga 75: Riga 80:
 
   bin = New MediaControl(pl, "decodebin")
 
   bin = New MediaControl(pl, "decodebin")
 
   con = New MediaControl(pl, "audioconvert")
 
   con = New MediaControl(pl, "audioconvert")
   wav = New MediaControl(pl, "wavenc")
+
   mp3 = New MediaControl(pl, "lamemp3enc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
 
   snk["location"] = "/tmp/file.mp3"
 
   snk["location"] = "/tmp/file.mp3"
Riga 85: Riga 90:
 
   
 
   
 
   pl.Play()
 
   pl.Play()
 
+
   While pl.Duration < 1
+
   Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
 +
 +
  While Not bo
 
     Wait 0.01
 
     Wait 0.01
 
   Wend
 
   Wend
  Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
+
   Wait pl.Duration
+
  pl.Close
 +
   Quit
 
   
 
   
 
  End
 
  End
Riga 97: Riga 105:
 
  Public Sub PLine_Position()
 
  Public Sub PLine_Position()
 
   
 
   
<FONT Color=gray>' ''Mostra il tempo trascorso dall'avvio del video:''</font>
+
  If pl.Position >= 1.0 Then
  Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000)
+
    Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
   Flush
+
    Flush
 +
   Endif
 
   
 
   
 
  End
 
  End
Riga 106: Riga 115:
 
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'estrazione è terminata''</font>
 
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'estrazione è terminata''</font>
 
   
 
   
  pl.Close
+
   Print "\nEstrazione audio terminata !"
   Print "\nEstrazione terminata !"
+
   bo = True
   Quit
 
 
    
 
    
 
  End
 
  End
Riga 148: Riga 156:
 
   Wend
 
   Wend
 
   Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
 
   Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
   Wait pl.Duration
+
   While Not bo
 +
    Wait 0.01
 +
  Wend
 +
 +
  pl.Close
 +
  Quit
 
   
 
   
 
  End
 
  End
Riga 156: Riga 169:
 
   
 
   
 
  <FONT Color=gray>' ''Mostra il tempo trascorso dall'avvio del video:''</font>
 
  <FONT Color=gray>' ''Mostra il tempo trascorso dall'avvio del video:''</font>
   Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000)
+
   If pl.Position >= 1.0 Then
   Flush
+
    Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
 +
    Flush
 +
   Endif
 
   
 
   
 
  End
 
  End
Riga 164: Riga 179:
 
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'estrazione è terminata''</font>
 
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando l'estrazione è terminata''</font>
 
   
 
   
  pl.Close
+
   Print "\nEstrazione audio terminata !"
   Print "\nEstrazione terminata !"
+
   bo = True
   Quit
 
 
    
 
    
 
  End
 
  End

Versione delle 05:51, 3 lug 2024

Mostriamo alcuni esempi pratici per estrarre l'audio da un file video esalvarlo in un file audio.

Salvare l'audio in un file di formato WAV

Private pl As MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, bin, con, wav, snk As MediaControl
 Dim filevideo As String

 pl = New MediaPipeline As "PLine"

 filevideo = "/percorso/del/file/video"
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = filevideo
 bin = New MediaControl(pl, "decodebin")
 con = New MediaControl(pl, "audioconvert")
 wav = New MediaControl(pl, "wavenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/file.wav"

 src.LinkTo(bin)
 bin.LinkLaterTo(con)
 con.LinkTo(wav)
 wav.LinkTo(snk)

 pl.Play()
 
 While pl.Duration < 1 
   Wait 0.01
 Wend
  Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
 While Not bo
   Wait 0.01
 Wend

 pl.Close
 Quit

End


Public Sub PLine_Position()

 If pl.Position >= 1.0 Then 
   Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
   Flush
 Endif 

End


Public Sub PLine_End() ' Questo Evento viene sollevato, quando l'estrazione è terminata

 Print "\nEstrazione audio terminata !"
 bo = True
 
End


Salvare l'audio in un file di formato MP3

Private pl As MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, bin, con, mp3, snk As MediaControl
 Dim filevideo As String

 pl = New MediaPipeline As "PLine"

 filevideo = "/percorso/del/file/video"
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = filevideo
 bin = New MediaControl(pl, "decodebin")
 con = New MediaControl(pl, "audioconvert")
 mp3 = New MediaControl(pl, "lamemp3enc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/file.mp3"

 src.LinkTo(bin)
 bin.LinkLaterTo(con)
 con.LinkTo(mp3)
 mp3.LinkTo(snk)

 pl.Play()

 Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)

 While Not bo
   Wait 0.01
 Wend

 pl.Close
 Quit

End


Public Sub PLine_Position()

 If pl.Position >= 1.0 Then 
   Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
   Flush
 Endif 

End


Public Sub PLine_End() ' Questo Evento viene sollevato, quando l'estrazione è terminata

 Print "\nEstrazione audio terminata !"
 bo = True
 
End


Salvare l'audio in un file di formato OGG

Private pl As MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, bin, con, vor, ogg, snk As MediaControl
 Dim filevideo As String

 pl = New MediaPipeline As "PLine"

 filevideo = "/percorso/del/file/video"
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = filevideo
 bin = New MediaControl(pl, "decodebin")
 con = New MediaControl(pl, "audioconvert")
 vor = New MediaControl(pl, "vorbisenc")
 ogg = New MediaControl(pl, "oggmux")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/file.ogg"

 src.LinkTo(bin)
 bin.LinkLaterTo(con)
 con.LinkTo(vor)
 vor.LinkTo(ogg)
 ogg.LinkTo(snk)

 pl.Play()
 
 While pl.Duration < 1 
   Wait 0.01
 Wend
  Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000)
 While Not bo
   Wait 0.01
 Wend

 pl.Close
 Quit

End


Public Sub PLine_Position()

' Mostra il tempo trascorso dall'avvio del video:
 If pl.Position >= 1.0 Then 
   Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000))
   Flush
 Endif 

End


Public Sub PLine_End() ' Questo Evento viene sollevato, quando l'estrazione è terminata

 Print "\nEstrazione audio terminata !"
 bo = True
 
End