Differenze tra le versioni di "Ottenere un unico file audio da due o più file audio mediante il componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 2: | Riga 2: | ||
I due file audio utilizzati devono avere la <SPAN Style="text-decoration:underline>medesima frequenza di campionamento</SPAN> ! | I due file audio utilizzati devono avere la <SPAN Style="text-decoration:underline>medesima frequenza di campionamento</SPAN> ! | ||
− | |||
===Ottenere da due file WAV un unico file MP3=== | ===Ottenere da due file WAV un unico file MP3=== | ||
Riga 9: | Riga 8: | ||
− | + | Public Sub Main() | |
− | |||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Dim src, wap, res, con, vol, pan As MediaControl | Dim src, wap, res, con, vol, pan As MediaControl | ||
Riga 17: | Riga 15: | ||
Dim flt As MediaFilter | Dim flt As MediaFilter | ||
Dim mix, lam, snk As MediaControl | Dim mix, lam, snk As MediaControl | ||
− | |||
− | |||
pl = New MediaPipeline As "PLine" | pl = New MediaPipeline As "PLine" | ||
Riga 24: | Riga 20: | ||
<FONT Color=gray>' ''Primo file audio wav:''</font> | <FONT Color=gray>' ''Primo file audio wav:''</font> | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/primo/file.wav''</font>" |
wap = New MediaControl(pl, "wavparse") | wap = New MediaControl(pl, "wavparse") | ||
res = New MediaControl(pl, "audioresample") | res = New MediaControl(pl, "audioresample") | ||
Riga 35: | Riga 31: | ||
<FONT Color=gray>' ''Secondo file audio wav:''</font> | <FONT Color=gray>' ''Secondo file audio wav:''</font> | ||
src2 = New MediaControl(pl, "filesrc") | src2 = New MediaControl(pl, "filesrc") | ||
− | src2["location"] = "<FONT Color= | + | src2["location"] = "<FONT Color=darkgreen>''/percorso/del/secondo/file.wav''</font>" |
wap2 = New MediaControl(pl, "wavparse") | wap2 = New MediaControl(pl, "wavparse") | ||
res2 = New MediaControl(pl, "audioresample") | res2 = New MediaControl(pl, "audioresample") | ||
Riga 52: | Riga 48: | ||
lam["bitrate"] = 192 <FONT Color=gray>' ''Imposta il valore del BItrate "Costante".''</font> | lam["bitrate"] = 192 <FONT Color=gray>' ''Imposta il valore del BItrate "Costante".''</font> | ||
snk = New MediaControl(pl, "filesink") | snk = New MediaControl(pl, "filesink") | ||
− | snk["location"] = | + | snk["location"] = "/tmp/fileMP3.mp3" |
src.LinkTo(wap) | src.LinkTo(wap) | ||
Riga 78: | Riga 74: | ||
Wait 0.01 | Wait 0.01 | ||
Until bo = True | Until bo = True | ||
− | |||
− | |||
pl.Stop | pl.Stop | ||
Riga 86: | Riga 80: | ||
Print "\n\e[0mOperazione terminata !" | Print "\n\e[0mOperazione terminata !" | ||
− | + | End | |
− | |||
− | + | Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font> | |
bo = True | bo = True | ||
− | + | End | |
Riga 101: | Riga 94: | ||
− | + | Public Sub Main() | |
− | |||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Dim src, wap, res, con, vol, pan As MediaControl | Dim src, wap, res, con, vol, pan As MediaControl | ||
Riga 109: | Riga 101: | ||
Dim flt As MediaFilter | Dim flt As MediaFilter | ||
Dim mix, vor, mux, snk As MediaControl | Dim mix, vor, mux, snk As MediaControl | ||
− | |||
− | |||
pl = New MediaPipeline As "PLine" | pl = New MediaPipeline As "PLine" | ||
Riga 116: | Riga 106: | ||
<FONT Color=gray>' ''Primo file audio wav:''</font> | <FONT Color=gray>' ''Primo file audio wav:''</font> | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/primo/file.wav''</font>" |
wap = New MediaControl(pl, "wavparse") | wap = New MediaControl(pl, "wavparse") | ||
res = New MediaControl(pl, "audioresample") | res = New MediaControl(pl, "audioresample") | ||
Riga 127: | Riga 117: | ||
<FONT Color=gray>' ''Secondo file audio wav:''</font> | <FONT Color=gray>' ''Secondo file audio wav:''</font> | ||
src2 = New MediaControl(pl, "filesrc") | src2 = New MediaControl(pl, "filesrc") | ||
− | src2["location"] = "<FONT Color= | + | src2["location"] = "<FONT Color=darkgreen>''/percorso/del/secondo/file.wav''</font>" |
wap2 = New MediaControl(pl, "wavparse") | wap2 = New MediaControl(pl, "wavparse") | ||
res2 = New MediaControl(pl, "audioresample") | res2 = New MediaControl(pl, "audioresample") | ||
Riga 142: | Riga 132: | ||
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/fileOGG.ogg" |
src.LinkTo(wap) | src.LinkTo(wap) | ||
Riga 169: | Riga 159: | ||
Wait 0.01 | Wait 0.01 | ||
Until bo = True | Until bo = True | ||
− | |||
− | |||
pl.Stop | pl.Stop | ||
Riga 177: | Riga 165: | ||
Print "\n\e[0mOperazione terminata !" | Print "\n\e[0mOperazione terminata !" | ||
− | + | End | |
− | |||
− | + | Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font> | |
bo = True | bo = True | ||
− | + | End | |
Riga 192: | Riga 179: | ||
− | + | Public Sub Main() | |
− | |||
Dim pl As MediaPipeline | Dim pl As MediaPipeline | ||
Dim src, par, dcd, res, con, vol, pan As MediaControl | Dim src, par, dcd, res, con, vol, pan As MediaControl | ||
Riga 200: | Riga 186: | ||
Dim flt As MediaFilter | Dim flt As MediaFilter | ||
Dim mix, vor, mux, snk As MediaControl | Dim mix, vor, mux, snk As MediaControl | ||
− | |||
− | |||
pl = New MediaPipeline As "PLine" | pl = New MediaPipeline As "PLine" | ||
Riga 207: | Riga 191: | ||
<FONT Color=gray>' ''Primo file audio wav:''</font> | <FONT Color=gray>' ''Primo file audio wav:''</font> | ||
src = New MediaControl(pl, "filesrc") | src = New MediaControl(pl, "filesrc") | ||
− | src["location"] = "<FONT Color= | + | src["location"] = "<FONT Color=darkgreen>''/percorso/del/primo/file.mp3''</font>" |
par = New MediaControl(pl, "mpegaudioparse") | par = New MediaControl(pl, "mpegaudioparse") | ||
dcd = New MediaControl(pl, "mpg123audiodec") | dcd = New MediaControl(pl, "mpg123audiodec") | ||
Riga 219: | Riga 203: | ||
<FONT Color=gray>' ''Secondo file audio wav:''</font> | <FONT Color=gray>' ''Secondo file audio wav:''</font> | ||
src2 = New MediaControl(pl, "filesrc") | src2 = New MediaControl(pl, "filesrc") | ||
− | src2["location"] = "<FONT Color= | + | src2["location"] = "<FONT Color=darkgreen>''/percorso/del/secondo/file.mp3''</font>" |
par2 = New MediaControl(pl, "mpegaudioparse") | par2 = New MediaControl(pl, "mpegaudioparse") | ||
dcd2 = New MediaControl(pl, "mpg123audiodec") | dcd2 = New MediaControl(pl, "mpg123audiodec") | ||
Riga 235: | Riga 219: | ||
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/fileOGG.ogg" |
src.LinkTo(par) | src.LinkTo(par) | ||
Riga 264: | Riga 248: | ||
Wait 0.01 | Wait 0.01 | ||
Until bo = True | Until bo = True | ||
− | |||
− | |||
pl.Stop | pl.Stop | ||
Riga 272: | Riga 254: | ||
Print "\n\e[0mOperazione terminata !" | Print "\n\e[0mOperazione terminata !" | ||
− | + | End | |
− | |||
− | + | Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font> | |
bo = True | bo = True | ||
− | + | End |
Versione attuale delle 18:24, 17 gen 2024
Mostriamo di seguito un esempio pratico per ottenere un unico file audio mediante alcune risorse del Componente gb.media.
I due file audio utilizzati devono avere la medesima frequenza di campionamento !
Ottenere da due file WAV un unico file MP3
Private Const BITRATE As String = "bitrate" Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, wap, res, con, vol, pan As MediaControl Dim src2, wap2, res2, con2, vol2, pan2 As MediaControl Dim flt As MediaFilter Dim mix, lam, snk As MediaControl pl = New MediaPipeline As "PLine" ' Primo file audio wav: src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/primo/file.wav" wap = New MediaControl(pl, "wavparse") res = New MediaControl(pl, "audioresample") con = New MediaControl(pl, "audioconvert") vol = New MediaControl(pl, "volume") vol["volume"] = 0.8 pan = New MediaControl(pl, "audiopanorama") pan["panorama"] = 1.00 ' Pan a destra ' Secondo file audio wav: src2 = New MediaControl(pl, "filesrc") src2["location"] = "/percorso/del/secondo/file.wav" wap2 = New MediaControl(pl, "wavparse") res2 = New MediaControl(pl, "audioresample") con2 = New MediaControl(pl, "audioconvert") vol2 = New MediaControl(pl, "volume") vol2["volume"] = 0.2 pan2 = New MediaControl(pl, "audiopanorama") pan2["panorama"] = -1.00 ' Pan a sinistra mix = New MediaControl(pl, "audiomixer") ' Garantisce nel nuovo file l'impostazione stereo del "pan": flt = New MediaFilter(pl, "audio/x-raw, channels=2") lam = New MediaControl(pl, "lamemp3enc") lam["target"] = BITRATE ' Imposta il BItrate. lam["cbr"] = True ' Imposta il BItrate "Costante". lam["bitrate"] = 192 ' Imposta il valore del BItrate "Costante". snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/fileMP3.mp3" src.LinkTo(wap) wap.LinkTo(res) res.LinkTo(con) con.LinkTo(vol) vol.LinkTo(pan) pan.LinkTo(mix) ' La prima sorgente audio alla fine converge nel mixer audio: src2.LinkTo(wap2) wap2.LinkTo(res2) res2.LinkTo(con2) con2.LinkTo(vol2) vol2.LinkTo(pan2) pan2.LinkTo(mix) ' La seconda sorgente audio alla fine converge nel mixer audio: mix.LinkTo(flt) flt.LinkTo(lam) lam.LinkTo(snk) pl.Play() Repeat Write "\r\e[0mTempo audio convertito: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo = True pl.Stop pl.Close Print "\n\e[0mOperazione terminata !" End Public Sub PLine_End() ' Questo Evento viene sollevato, quando la conversione è terminata bo = True End
Ottenere da due file WAV un unico file OGG
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, wap, res, con, vol, pan As MediaControl Dim src2, wap2, res2, con2, vol2, pan2 As MediaControl Dim flt As MediaFilter Dim mix, vor, mux, snk As MediaControl pl = New MediaPipeline As "PLine" ' Primo file audio wav: src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/primo/file.wav" wap = New MediaControl(pl, "wavparse") res = New MediaControl(pl, "audioresample") con = New MediaControl(pl, "audioconvert") vol = New MediaControl(pl, "volume") vol["volume"] = 0.8 pan = New MediaControl(pl, "audiopanorama") pan["panorama"] = 1.00 ' Pan a destra ' Secondo file audio wav: src2 = New MediaControl(pl, "filesrc") src2["location"] = "/percorso/del/secondo/file.wav" wap2 = New MediaControl(pl, "wavparse") res2 = New MediaControl(pl, "audioresample") con2 = New MediaControl(pl, "audioconvert") vol2 = New MediaControl(pl, "volume") vol2["volume"] = 0.2 pan2 = New MediaControl(pl, "audiopanorama") pan2["panorama"] = -1.00 ' Pan a sinistra mix = New MediaControl(pl, "audiomixer") ' Garantisce nel nuovo file l'impostazione stereo del "pan": flt = New MediaFilter(pl, "audio/x-raw, channels=2") vor = New MediaControl(pl, "vorbisenc") mux = New MediaControl(pl, "oggmux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/fileOGG.ogg" src.LinkTo(wap) wap.LinkTo(res) res.LinkTo(con) con.LinkTo(vol) vol.LinkTo(pan) pan.LinkTo(mix) ' La prima sorgente audio alla fine converge nel mixer audio: src2.LinkTo(wap2) wap2.LinkTo(res2) res2.LinkTo(con2) con2.LinkTo(vol2) vol2.LinkTo(pan2) pan2.LinkTo(mix) ' La seconda sorgente audio alla fine converge nel mixer audio: mix.LinkTo(flt) flt.LinkTo(vor) vor.LinkTo(mux) mux.LinkTo(snk) pl.Play() Repeat Write "\r\e[0mTempo audio convertito: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo = True pl.Stop pl.Close Print "\n\e[0mOperazione terminata !" End Public Sub PLine_End() ' Questo Evento viene sollevato, quando la conversione è terminata bo = True End
Ottenere da due file MP3 un unico file OGG
Private bo As Boolean Public Sub Main() Dim pl As MediaPipeline Dim src, par, dcd, res, con, vol, pan As MediaControl Dim src2, par2, dcd2, res2, con2, vol2, pan2 As MediaControl Dim flt As MediaFilter Dim mix, vor, mux, snk As MediaControl pl = New MediaPipeline As "PLine" ' Primo file audio wav: src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/primo/file.mp3" par = New MediaControl(pl, "mpegaudioparse") dcd = New MediaControl(pl, "mpg123audiodec") res = New MediaControl(pl, "audioresample") con = New MediaControl(pl, "audioconvert") vol = New MediaControl(pl, "volume") vol["volume"] = 0.8 pan = New MediaControl(pl, "audiopanorama") pan["panorama"] = 1.00 ' Pan a destra ' Secondo file audio wav: src2 = New MediaControl(pl, "filesrc") src2["location"] = "/percorso/del/secondo/file.mp3" par2 = New MediaControl(pl, "mpegaudioparse") dcd2 = New MediaControl(pl, "mpg123audiodec") res2 = New MediaControl(pl, "audioresample") con2 = New MediaControl(pl, "audioconvert") vol2 = New MediaControl(pl, "volume") vol2["volume"] = 0.4 pan2 = New MediaControl(pl, "audiopanorama") pan2["panorama"] = -1.00 ' Pan a sinistra mix = New MediaControl(pl, "audiomixer") ' Garantisce nel nuovo file l'impostazione stereo del "pan": flt = New MediaFilter(pl, "audio/x-raw, channels=2") vor = New MediaControl(pl, "vorbisenc") mux = New MediaControl(pl, "oggmux") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/fileOGG.ogg" src.LinkTo(par) par.LinkTo(dcd) dcd.LinkTo(res) res.LinkTo(con) con.LinkTo(vol) vol.LinkTo(pan) pan.LinkTo(mix) ' La prima sorgente audio alla fine converge nel mixer audio: src2.LinkTo(par2) par2.LinkTo(dcd2) dcd2.LinkTo(res2) res2.LinkTo(con2) con2.LinkTo(vol2) vol2.LinkTo(pan2) pan2.LinkTo(mix) ' La seconda sorgente audio alla fine converge nel mixer audio: mix.LinkTo(flt) flt.LinkTo(vor) vor.LinkTo(mux) mux.LinkTo(snk) pl.Play() Repeat Write "\r\e[0mTempo audio convertito: \e[31m" & Time(0, 0, 0, pl.Position * 1000) Wait 0.01 Until bo = True pl.Stop pl.Close Print "\n\e[0mOperazione terminata !" End Public Sub PLine_End() ' Questo Evento viene sollevato, quando la conversione è terminata bo = True End