Estrarre e salvare l'audio da un file video mediante il Componente gb.media
Da Gambas-it.org - Wikipedia.
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) Wait pl.Duration End Public Sub PLine_Position() ' Mostra il tempo trascorso dall'avvio del video: Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000) Flush End Public Sub PLine_End() ' Questo Evento viene sollevato, quando l'estrazione è terminata pl.Close Print "\nEstrazione terminata !" Quit 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") wav = New MediaControl(pl, "wavenc") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/file.mp3" src.LinkTo(bin) bin.LinkLaterTo(con) con.LinkTo(mp3) mp3.LinkTo(snk) pl.Play() While pl.Duration < 1 Wait 0.01 Wend Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000) Wait pl.Duration End Public Sub PLine_Position() ' Mostra il tempo trascorso dall'avvio del video: Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000) Flush End Public Sub PLine_End() ' Questo Evento viene sollevato, quando l'estrazione è terminata pl.Close Print "\nEstrazione terminata !" Quit 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) Wait pl.Duration End Public Sub PLine_Position() ' Mostra il tempo trascorso dall'avvio del video: Write "\rTempo trascorso: " & Time(0, 0, 0, pl.Position * 1000) Flush End Public Sub PLine_End() ' Questo Evento viene sollevato, quando l'estrazione è terminata pl.Close Print "\nEstrazione terminata !" Quit End