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 149: | Riga 149: | ||
src2.LinkTo(wap2) | src2.LinkTo(wap2) | ||
wap2.LinkTo(res2) | wap2.LinkTo(res2) | ||
+ | res2.LinkTo(con2) | ||
+ | con2.LinkTo(vol2) | ||
+ | vol2.LinkTo(pan2) | ||
+ | pan2.LinkTo(mix) <FONT Color=gray>' ''La seconda sorgente audio alla fine converge nel mixer audio:''</font> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | Copy datigrezzi To "/tmp/fileOGG.ogg" | ||
+ | |||
+ | pl.Stop | ||
+ | pl.Close | ||
+ | |||
+ | Print "\n\e[0mOperazione terminata !" | ||
+ | |||
+ | Quit | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font> | ||
+ | |||
+ | bo = True | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | ===Ottenere da due file MP3 un unico file OGG=== | ||
+ | Private bo As Boolean | ||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | Dim datigrezzi As String | ||
+ | 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 | ||
+ | |||
+ | datigrezzi = Temp | ||
+ | |||
+ | pl = New MediaPipeline As "PLine" | ||
+ | |||
+ | <FONT Color=gray>' ''Primo file audio wav:''</font> | ||
+ | src = New MediaControl(pl, "filesrc") | ||
+ | src["location"] = "<FONT Color=gray>''/percorso/del/primo/file.mp3''</font>" | ||
+ | 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 <FONT Color=gray>' ''Pan a destra''</font> | ||
+ | |||
+ | <FONT Color=gray>' ''Secondo file audio wav:''</font> | ||
+ | src2 = New MediaControl(pl, "filesrc") | ||
+ | src2["location"] = "<FONT Color=gray>''/percorso/del/secondo/file.mp3''</font>" | ||
+ | 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 <FONT Color=gray>' ''Pan a sinistra''</font> | ||
+ | |||
+ | mix = New MediaControl(pl, "audiomixer") | ||
+ | <FONT Color=gray>' ''Garantisce nel nuovo file l'impostazione stereo del "pan":''</font> | ||
+ | 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"] = datigrezzi | ||
+ | |||
+ | src.LinkTo(par) | ||
+ | par.LinkTo(dcd) | ||
+ | dcd.LinkTo(res) | ||
+ | res.LinkTo(con) | ||
+ | con.LinkTo(vol) | ||
+ | vol.LinkTo(pan) | ||
+ | pan.LinkTo(mix) <FONT Color=gray>' ''La prima sorgente audio alla fine converge nel mixer audio:''</font> | ||
+ | |||
+ | src2.LinkTo(par2) | ||
+ | par2.LinkTo(dcd2) | ||
+ | dcd2.LinkTo(res2) | ||
res2.LinkTo(con2) | res2.LinkTo(con2) | ||
con2.LinkTo(vol2) | con2.LinkTo(vol2) |
Versione delle 19:15, 15 set 2022
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 bo As Boolean Public Sub Main() Dim datigrezzi As String 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 datigrezzi = Temp 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") snk = New MediaControl(pl, "filesink") snk["location"] = datigrezzi 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 Copy datigrezzi To "/tmp/fileMP3.mp3" pl.Stop pl.Close Print "\n\e[0mOperazione terminata !" Quit 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 datigrezzi As String 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 datigrezzi = Temp 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"] = datigrezzi 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 Copy datigrezzi To "/tmp/fileOGG.ogg" pl.Stop pl.Close Print "\n\e[0mOperazione terminata !" Quit 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 datigrezzi As String 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 datigrezzi = Temp 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"] = datigrezzi 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 Copy datigrezzi To "/tmp/fileOGG.ogg" pl.Stop pl.Close Print "\n\e[0mOperazione terminata !" Quit End Public Sub PLine_End() ' Questo Evento viene sollevato, quando la conversione è terminata bo = True End