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.
 
(Una versione intermedia di uno stesso utente non è mostrata)
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===
 +
Private Const BITRATE As String = "bitrate"
 
  Private bo As Boolean
 
  Private bo As Boolean
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
  Dim datigrezzi As String
 
 
   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 16: Riga 15:
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
 
   Dim mix, lam, snk As MediaControl
 
   Dim mix, lam, snk As MediaControl
 
  datigrezzi = Temp
 
 
   
 
   
 
   pl = New MediaPipeline As "PLine"
 
   pl = New MediaPipeline As "PLine"
Riga 23: 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=gray>''/percorso/del/primo/file.wav''</font>"
+
   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 34: 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=gray>''/percorso/del/secondo/file.wav''</font>"
+
   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 51: 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"] = datigrezzi
+
   snk["location"] = "/tmp/fileMP3.mp3"
 
   
 
   
 
   src.LinkTo(wap)
 
   src.LinkTo(wap)
Riga 77: Riga 74:
 
     Wait 0.01
 
     Wait 0.01
 
   Until bo = True
 
   Until bo = True
 
  Copy datigrezzi To "/tmp/fileMP3.mp3"
 
 
   
 
   
 
   pl.Stop
 
   pl.Stop
Riga 85: Riga 80:
 
   Print "\n\e[0mOperazione terminata !"
 
   Print "\n\e[0mOperazione terminata !"
 
   
 
   
  Quit
+
End
 
   
 
   
'''End'''
 
 
   
 
   
  '''Public''' Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
+
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  End
  
  
Riga 100: Riga 94:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
  Dim datigrezzi As String
 
 
   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 108: Riga 101:
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
 
   Dim mix, vor, mux, snk As MediaControl
 
   Dim mix, vor, mux, snk As MediaControl
 
  datigrezzi = Temp
 
 
   
 
   
 
   pl = New MediaPipeline As "PLine"
 
   pl = New MediaPipeline As "PLine"
Riga 115: 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=gray>''/percorso/del/primo/file.wav''</font>"
+
   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 126: 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=gray>''/percorso/del/secondo/file.wav''</font>"
+
   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 141: Riga 132:
 
   mux = New MediaControl(pl, "oggmux")
 
   mux = New MediaControl(pl, "oggmux")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = datigrezzi
+
   snk["location"] = "/tmp/fileOGG.ogg"
 
   
 
   
 
   src.LinkTo(wap)
 
   src.LinkTo(wap)
Riga 168: Riga 159:
 
     Wait 0.01
 
     Wait 0.01
 
   Until bo = True
 
   Until bo = True
 
  Copy datigrezzi To "/tmp/fileOGG.ogg"
 
 
   
 
   
 
   pl.Stop
 
   pl.Stop
Riga 176: Riga 165:
 
   Print "\n\e[0mOperazione terminata !"
 
   Print "\n\e[0mOperazione terminata !"
 
   
 
   
  Quit
+
End
 
   
 
   
'''End'''
 
 
   
 
   
  '''Public''' Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
+
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  End
  
  
Riga 191: Riga 179:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
  Dim datigrezzi As String
 
 
   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 199: Riga 186:
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
 
   Dim mix, vor, mux, snk As MediaControl
 
   Dim mix, vor, mux, snk As MediaControl
 
  datigrezzi = Temp
 
 
   
 
   
 
   pl = New MediaPipeline As "PLine"
 
   pl = New MediaPipeline As "PLine"
Riga 206: 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=gray>''/percorso/del/primo/file.mp3''</font>"
+
   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 218: 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=gray>''/percorso/del/secondo/file.mp3''</font>"
+
   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 234: Riga 219:
 
   mux = New MediaControl(pl, "oggmux")
 
   mux = New MediaControl(pl, "oggmux")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = datigrezzi
+
   snk["location"] = "/tmp/fileOGG.ogg"
 
   
 
   
 
   src.LinkTo(par)
 
   src.LinkTo(par)
Riga 263: Riga 248:
 
     Wait 0.01
 
     Wait 0.01
 
   Until bo = True
 
   Until bo = True
 
  Copy datigrezzi To "/tmp/fileOGG.ogg"
 
 
   
 
   
 
   pl.Stop
 
   pl.Stop
Riga 271: Riga 254:
 
   Print "\n\e[0mOperazione terminata !"
 
   Print "\n\e[0mOperazione terminata !"
 
   
 
   
  Quit
+
End
 
   
 
   
'''End'''
 
 
   
 
   
  '''Public''' Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
+
  Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  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