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 1: Riga 1:
Mostriamo di seguito un esempio pratico per ottenere un unico file audio (in questo caso da due file WAV un unico file MP3) mediante la Classe ''MediaPipeline'' del Componente ''gb.media''.
+
Mostriamo di seguito un esempio pratico per ottenere un unico file audio mediante la Classe ''MediaPipeline'' del Componente ''gb.media''.
  
 
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===
 
  Private bo As Boolean
 
  Private bo As Boolean
 
   
 
   
Riga 42: Riga 45:
 
   mix = New MediaControl(pl, "audiomixer")
 
   mix = New MediaControl(pl, "audiomixer")
 
  <FONT Color=gray>' ''Garantisce nel nuovo file l'impostazione stereo del "pan":''</font>
 
  <FONT Color=gray>' ''Garantisce nel nuovo file l'impostazione stereo del "pan":''</font>
   fl = New MediaFilter(pl, "audio/x-raw, channels=2")
+
   flt = New MediaFilter(pl, "audio/x-raw, channels=2")
 
   lam = New MediaControl(pl, "lamemp3enc")
 
   lam = New MediaControl(pl, "lamemp3enc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
Riga 61: Riga 64:
 
   pan2.LinkTo(mix)  <FONT Color=gray>' ''La seconda sorgente audio alla fine converge nel mixer audio:''</font>
 
   pan2.LinkTo(mix)  <FONT Color=gray>' ''La seconda sorgente audio alla fine converge nel mixer audio:''</font>
 
   
 
   
   mix.LinkTo(fl)
+
   mix.LinkTo(flt)
   fl.LinkTo(lam)
+
   flt.LinkTo(lam)
 
   lam.LinkTo(snk)
 
   lam.LinkTo(snk)
 
   
 
   
Riga 83: Riga 86:
 
  '''End'''
 
  '''End'''
 
   
 
   
  '''Public''' Sub PLine_End() ' Questo Evento viene sollevato, quando la conversione è terminata
+
  '''Public''' Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
 +
 +
  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"
 +
 +
<FONT Color=gray>' ''Primo file audio wav:''</font>
 +
  src = New MediaControl(pl, "filesrc")
 +
  src["location"] = "<FONT Color=gray>''/percorso/del/primo/file.wav''</font>"
 +
  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    <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.wav''</font>"
 +
  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    <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(wap)
 +
  wap.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(wap2)
 +
  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
 
   bo = True
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 19:04, 15 set 2022

Mostriamo di seguito un esempio pratico per ottenere un unico file audio mediante la Classe MediaPipeline 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