Differenze tra le versioni di "Estrarre una traccia di un CD audio convertendola in un file MP3 con il Componente gb.media"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 5: Riga 5:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, cnv, enc, mux, snk As MediaControl
 
   Dim src, cnv, enc, mux, snk As MediaControl
 
    
 
    
  pl = New MediaPipeline
+
  pl = New MediaPipeline
 +
 
 +
  src = New MediaControl(pl, "cdiocddasrc")
 +
  src["track"] = 10
 +
  cnv = New MediaControl(pl, "audioconvert")
 +
  enc = New MediaControl(pl, "lamemp3enc")
 +
  enc["target"] = bitrate
 +
  enc["bitrate"] = 192
 +
  mux = New MediaControl(pl, "mpegpsmux")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/audio.mp3"
 +
 
 +
  src.LinkTo(cnv)
 +
  cnv.LinkTo(enc)
 +
  enc.LinkTo(mux)
 +
  mux.LinkTo(snk)
 
    
 
    
  src = New MediaControl(pl, "cdiocddasrc")
 
  src["track"] = 10
 
  cnv = New MediaControl(pl, "audioconvert")
 
  enc = New MediaControl(pl, "lamemp3enc")
 
  enc["target"] = bitrate
 
  enc["bitrate"] = 192
 
  mux = New MediaControl(pl, "mpegpsmux")
 
  snk = New MediaControl(pl, "filesink")
 
  snk["location"] = "/tmp/audio.mp3"
 
 
 
  src.LinkTo(cnv)
 
  cnv.LinkTo(enc)
 
  enc.LinkTo(mux)
 
  mux.LinkTo(snk)
 
 
 
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file MP3:''</font>
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file MP3:''</font>
  pl.Play()
+
  pl.Play()
    
+
  Do
+
   Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
    Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
    Wait 0.01
+
    Flush
  Loop Until (pl.Position >= pl.Duration)
+
    Wait 0.01
 +
  Until (pl.Position >= pl.Duration)
 
    
 
    
  pl.Stop()
+
  pl.Stop()
  pl.Close()
+
  pl.Close()
 
    
 
    
  '''End'''
+
  End
  
  
Analogamente possiamo utilizzare anche il plugin "''cdparanoiasrc''" di ''GStreamer''.
+
Analogamente possiamo utilizzare anche il plugin "cdparanoiasrc" di ''GStreamer''.
  
 
Mostriamo un semplice esempio pratico:
 
Mostriamo un semplice esempio pratico:
  '''Public''' Sub Main()
+
  Private Enum quality = 0, bitrate
 +
 +
 +
Public Sub Main()
 
    
 
    
 
   Dim pl As MediaPipeline
 
   Dim pl As MediaPipeline
 
   Dim src, cnv, enc, mux, snk As MediaControl
 
   Dim src, cnv, enc, mux, snk As MediaControl
 
    
 
    
  pl = New MediaPipeline
+
  pl = New MediaPipeline
 +
 
 +
  src = New MediaControl(pl, "cdparanoiasrc")
 +
  src["track"] = 10
 +
  cnv = New MediaControl(pl, "audioconvert")
 +
  enc = New MediaControl(pl, "lamemp3enc")
 +
  enc["target"] = bitrate
 +
  enc["bitrate"] = 192
 +
  mux = New MediaControl(pl, "mpegpsmux")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/audio.mp3"
 +
 
 +
  src.LinkTo(cnv)
 +
  cnv.LinkTo(enc)
 +
  enc.LinkTo(mux)
 +
  mux.LinkTo(snk)
 
    
 
    
  src = New MediaControl(pl, "cdparanoiasrc")
 
  src["track"] = 10
 
  cnv = New MediaControl(pl, "audioconvert")
 
  enc = New MediaControl(pl, "lamemp3enc")
 
  enc["target"] = bitrate
 
  enc["bitrate"] = 192
 
  mux = New MediaControl(pl, "mpegpsmux")
 
  snk = New MediaControl(pl, "filesink")
 
  snk["location"] = "/tmp/audio.mp3"
 
 
 
  src.LinkTo(cnv)
 
  cnv.LinkTo(enc)
 
  enc.LinkTo(mux)
 
  mux.LinkTo(snk)
 
 
 
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file MP3:''</font>
 
  <FONT Color=gray>' ''Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file MP3:''</font>
  pl.Play()
+
  pl.Play()
 
    
 
    
  Do
+
  Repeat
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
 
  <FONT Color=gray>' ''Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:''</font>
    Write #File.Out, "\rDurata del brano: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Date(0, 0, 0, 0, 0, 0, pl.Position * 1000))
+
    Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "  -  Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
    Wait 0.01
+
    Flush
  Loop
+
    Wait 0.01
 +
  Until (pl.Position >= pl.Duration)
 
    
 
    
  pl.Stop()
+
  pl.Stop()
  pl.Close()
+
  pl.Close()
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 08:11, 30 lug 2023

Per estrarre una traccia di un CD audio e convertirla conseguentemente in un file MP3 mediante il Componente gb.media, è possibile utilizzare il plugin "cdiocddasrc" di GStreamer.

Mostriamo un semplice esempio pratico:

Private Enum quality = 0, bitrate


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "cdiocddasrc")
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "lamemp3enc")
 enc["target"] = bitrate
 enc["bitrate"] = 192
 mux = New MediaControl(pl, "mpegpsmux")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/audio.mp3"
 
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(mux)
 mux.LinkTo(snk)
 
' Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file MP3:
 pl.Play()

 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration)
 
 pl.Stop()
 pl.Close()
  
End


Analogamente possiamo utilizzare anche il plugin "cdparanoiasrc" di GStreamer.

Mostriamo un semplice esempio pratico:

Private Enum quality = 0, bitrate


Public Sub Main()
 
 Dim pl As MediaPipeline
 Dim src, cnv, enc, mux, snk As MediaControl
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "cdparanoiasrc")
 src["track"] = 10
 cnv = New MediaControl(pl, "audioconvert")
 enc = New MediaControl(pl, "lamemp3enc")
 enc["target"] = bitrate
 enc["bitrate"] = 192
 mux = New MediaControl(pl, "mpegpsmux")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/audio.mp3"
 
 src.LinkTo(cnv)
 cnv.LinkTo(enc)
 enc.LinkTo(mux)
 mux.LinkTo(snk)
 
' Avvia la procedura di estrazione dei dati audio della traccia e della successiva conversione nel file MP3:
 pl.Play()
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati audio processati:
   Write "\rDurata del brano: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration)
 
 pl.Stop()
 pl.Close()
  
End