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. | + | While Not bo |
+ | Wait 0.01 | ||
+ | Wend | ||
+ | |||
+ | pl.Close | ||
+ | Quit | ||
End | End | ||
Riga 41: | Riga 46: | ||
Public Sub PLine_Position() | Public Sub PLine_Position() | ||
− | + | If pl.Position >= 1.0 Then | |
− | + | Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000)) | |
− | + | 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> | ||
− | + | Print "\nEstrazione audio terminata !" | |
− | Print "\nEstrazione terminata !" | + | bo = True |
− | |||
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") | ||
− | + | 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() | ||
− | + | ||
− | + | Print "Durata dell'audio: "; Time(0, 0, 0, pl.Duration * 1000) | |
+ | |||
+ | While Not bo | ||
Wait 0.01 | Wait 0.01 | ||
Wend | Wend | ||
− | + | ||
− | + | pl.Close | |
+ | Quit | ||
End | End | ||
Riga 97: | Riga 105: | ||
Public Sub PLine_Position() | Public Sub PLine_Position() | ||
− | + | If pl.Position >= 1.0 Then | |
− | + | Write "\rTempo trascorso: " & Str(Time(0, 0, 0, pl.Position * 1000)) | |
− | + | 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> | ||
− | + | Print "\nEstrazione audio terminata !" | |
− | Print "\nEstrazione terminata !" | + | bo = True |
− | |||
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. | + | 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 |
− | + | 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> | ||
− | + | Print "\nEstrazione audio terminata !" | |
− | Print "\nEstrazione terminata !" | + | bo = True |
− | |||
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