Differenze tra le versioni di "Modificare ad un file WAV la frequenza di campionamento, il numero di canali e la risoluzione bit mediante il componente gb.media"

Da Gambas-it.org - Wikipedia.
Riga 5: Riga 5:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, par, res, con1, con2, enc, snk As MediaControl
 
   Dim src, par, res, con1, con2, enc, snk As MediaControl
 
   Dim flt As MediaFilter
 
   Dim flt As MediaFilter
  Dim primofile As String
 
 
  primofile = Temp
 
 
   
 
   
 
   pl = New MediaPipeline As "PLine"
 
   pl = New MediaPipeline As "PLine"
Riga 25: Riga 22:
 
   enc = New MediaControl(pl, "wavenc")
 
   enc = New MediaControl(pl, "wavenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = primofile
+
   snk["location"] = "/tmp/nuovo_file.wav"
 
   
 
   
 
   src.LinkTo(par)
 
   src.LinkTo(par)
Riga 45: Riga 42:
 
   pl.Close()
 
   pl.Close()
 
   
 
   
  Copy primofile To "/tmp/nuovo_audio.wav"
 
 
   Write "\r\e[0mConversione terminata            "
 
   Write "\r\e[0mConversione terminata            "
 
    
 
    
  '''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 delle 18:03, 17 gen 2024

Mostriamo di seguito un esempio in cui con le risorse delle Classi "MediaPipeline", "MediaControl" e "Mediafilter" si procede alla modifica della frequenza di campionamento, del numero di canali e della risoluzione in bit di un file audio di formato WAV.

In particolare nell'esempio che segue un file WAV di hz 44100, 2 canali, 16 bit viene trasformato in un file audio WAV di hz 8000, 1 canale, 8 bit.

Private bo As Boolean


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, par, res, con1, con2, enc, snk As MediaControl
 Dim flt As MediaFilter

 pl = New MediaPipeline As "PLine"
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/file.wav"
 par = New MediaControl(pl, "wavparse")
 res = New MediaControl(pl, "audioresample")
 con1 = New MediaControl(pl, "audioconvert")
 flt = New MediaFilter(pl, "audio/x-raw,rate=8000,channels=1,format=S8")
 con2 = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "wavenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/nuovo_file.wav"

 src.LinkTo(par)
 par.LinkTo(res)
 res.LinkTo(con1)
 con1.LinkTo(flt)
 flt.LinkTo(con2)
 con2.LinkTo(enc)
 enc.LinkTo(snk)

 pl.Play()

 Repeat 
   Write "\r\e[31m\e[5mAttendere: conversione in atto...\e[0m"
   Wait 0.01
 Until bo

 pl.Stop()
 pl.Close()

 Write "\r\e[0mConversione terminata             "
 
End

Public Sub PLine_End()  ' Questo Evento viene sollevato, quando la conversione è terminata

 bo = True

End