Differenze tra le versioni di "Indirizzare l'uscita o l'entrata audio mediante il componente gb.media"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 4: Riga 4:
 
<BR> - il numero identificativo del dispositivo audio;
 
<BR> - il numero identificativo del dispositivo audio;
 
<BR> - il numero identificativo del sub-dispositivo audio.
 
<BR> - il numero identificativo del sub-dispositivo audio.
<BR>Questi tre valori possono essere individuati agevolmente nei file contenuti nel percorso "''/proc/asound/'' " e sono passati alla risorsa audio, utilizzata, mediante una stringa, che premette il simbolo "hw:", come nell'esempio seguente:
+
<BR>Questi tre valori possono essere individuati agevolmente nei file contenuti nel percorso "''/proc/asound/'' " e sono passati alla risorsa audio, utilizzata, mediante una stringa, che premette il simbolo "'''hw:'''", come nell'esempio seguente:
 
  "hw:0,1,0"
 
  "hw:0,1,0"
oppure con il simbolo "plughw:"
+
oppure con il simbolo "'''plughw:'''"
 
  "plughw:0,1,0"
 
  "plughw:0,1,0"
  
Riga 12: Riga 12:
  
 
==Indirizzamento con la Classe "''MediaPlayer'' "==
 
==Indirizzamento con la Classe "''MediaPlayer'' "==
Usando la Classe "''MediaPlayer'' " del Componente ''gb.media'', per identificare il dispositivo audio, al quale dirigere l'audio in uscita, è necessario usare la Proprietà "''.Audio.Output'' ", assegnando contestualmente ad essa il ''plugin'' di ''GStreamer'' - ad esempio - "''alsasink'' " mediante la Classe "''MediaControl'' " e specificando il dispositivo audio, con la stringa dei valori come sopra descritto.
+
===Dirigere l'audio in Uscita===
 
+
Usando la Classe ''MediaPlayer'' del Componente ''gb.media'', per identificare il dispositivo audio, al quale dirigere l'audio in uscita, è necessario usare la Proprietà ".Audio.Output", assegnando contestualmente ad essa il ''plugin'' di ''GStreamer'' - ad esempio - ''alsasink'' mediante la Classe ''MediaControl'' e specificando il dispositivo audio, con la stringa dei valori come sopra descritto.
Per l'indirizzamento dei dati in Entrata la logica è analoga, ma si farà uso della Proprietà "''.Audio.Input'' ".
 
  
 
====Esempio con la Classe "MediaPlayer"====
 
====Esempio con la Classe "MediaPlayer"====
 
Mostriamo un semplice esempio, nel quale indirizzeremo l'uscita dei dati audio al dispositivo audio mostrato nell'esempio precedente.
 
Mostriamo un semplice esempio, nel quale indirizzeremo l'uscita dei dati audio al dispositivo audio mostrato nell'esempio precedente.
<BR>Useremo la Classe "''MediaPlayer'' " del Componente ''gb.media'' .
+
  Public Sub Main()
  '''Public''' Sub Main()
 
 
    
 
    
 
   Dim mp As MediaPlayer
 
   Dim mp As MediaPlayer
 
    
 
    
 
   With mp = New MediaPlayer
 
   With mp = New MediaPlayer
     .URL = Media.URL("<FONT Color=gray>''/percorso/del/file/audio''</font>")
+
     .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file/audio''</font>")
 
     .Audio.Output = New MediaControl(mp, "alsasink")
 
     .Audio.Output = New MediaControl(mp, "alsasink")
 
  <FONT Color=gray>' ''Specifica il dispositivo audio, al quale indirizzare i dati audio:''</font>
 
  <FONT Color=gray>' ''Specifica il dispositivo audio, al quale indirizzare i dati audio:''</font>
     .Audio.Output["device"] = <FONT Color=#B22222>"hw:0,1,0"</font>
+
     .Audio'''.Output'''["'''device'''"] = "<FONT Color=red>hw:0,1,0</font>"
 
     .Play
 
     .Play
 
   End With
 
   End With
Riga 39: Riga 37:
 
   mp.Close
 
   mp.Close
 
    
 
    
  '''End'''
+
  End
 +
 
 +
===Dirigere l'audio in Entrata===
 +
Per l'indirizzamento dei dati in Entrata la logica è analoga, ma si farà uso della Proprietà ".Audio.Input".
  
  
 
==Indirizzamento con la Classe "MediaPipeline"==
 
==Indirizzamento con la Classe "MediaPipeline"==
Usando, invece, la Classe "''MediaPipeline'' ", si assegnerà alla Proprietà "''device'' " dell'Oggetto "''MediaControl'' " - al quale sia stato passato al suo 2° argomento ugualmente il plugin "''alsasink'' " - la stringa relativa all'individuazione del dispositivo audio utilizzabile.
+
Usando, invece, la Classe ''MediaPipeline'', si assegnerà alla Proprietà "device" dell'Oggetto ''MediaControl'' - al quale sia stato passato al suo 2° argomento ugualmente il plugin ''alsasink'' - la stringa relativa all'individuazione del dispositivo audio utilizzabile.
<BR>Con questa Classe sembra essere necessario l'uso del simbolo "plughw:".
+
<BR>Con questa Classe sembra essere necessario l'uso del simbolo "'''plughw:'''".
  
 
====Esempio con la Classe "MediaPipeline"====
 
====Esempio con la Classe "MediaPipeline"====
In questo esempio si eseguirà un file di formato .ogg, usando la Classe "''MediaPipeline'' " del Componente ''gb.media'' .
+
In questo esempio si eseguirà un file di formato OGG-Vorbis:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim pl As New MediaPipeline
 
   Dim pl As New MediaPipeline
Riga 54: Riga 55:
 
    
 
    
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/audio.ogg''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/audio.ogg''</font>"
 
   dem = New MediaControl(pl, "oggdemux")
 
   dem = New MediaControl(pl, "oggdemux")
 
   vor = New MediaControl(pl, "vorbisdec")
 
   vor = New MediaControl(pl, "vorbisdec")
 
   snk = New MediaControl(pl, "alsasink")
 
   snk = New MediaControl(pl, "alsasink")
   snk["device"] = <FONT Color=#B22222>"plughw:1,0,0"</font>
+
   snk["'''device'''"] = "<FONT Color=red>plughw:1,0,0</font>"
 
    
 
    
 
   src.LinkTo(dem)
 
   src.LinkTo(dem)
Riga 74: Riga 75:
 
   pl.Close
 
   pl.Close
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 07:23, 23 lug 2024

L'individuazione del dispositivo audio consente di indirizzare in modo specifico la sorgente audio in entrata o dei dati audio in uscita.
In particolare sarà necessario definire:
- il numero identificativo della scheda audio;
- il numero identificativo del dispositivo audio;
- il numero identificativo del sub-dispositivo audio.
Questi tre valori possono essere individuati agevolmente nei file contenuti nel percorso "/proc/asound/ " e sono passati alla risorsa audio, utilizzata, mediante una stringa, che premette il simbolo "hw:", come nell'esempio seguente:

"hw:0,1,0"

oppure con il simbolo "plughw:"

"plughw:0,1,0"

Questa operazione di indirizzamento specifico è possibile anche con le risorse del componente gb.media di Gambas.

Indirizzamento con la Classe "MediaPlayer "

Dirigere l'audio in Uscita

Usando la Classe MediaPlayer del Componente gb.media, per identificare il dispositivo audio, al quale dirigere l'audio in uscita, è necessario usare la Proprietà ".Audio.Output", assegnando contestualmente ad essa il plugin di GStreamer - ad esempio - alsasink mediante la Classe MediaControl e specificando il dispositivo audio, con la stringa dei valori come sopra descritto.

Esempio con la Classe "MediaPlayer"

Mostriamo un semplice esempio, nel quale indirizzeremo l'uscita dei dati audio al dispositivo audio mostrato nell'esempio precedente.

Public Sub Main()
 
 Dim mp As MediaPlayer
 
 With mp = New MediaPlayer
   .URL = Media.URL("/percorso/del/file/audio")
   .Audio.Output = New MediaControl(mp, "alsasink")
' Specifica il dispositivo audio, al quale indirizzare i dati audio:
   .Audio.Output["device"] = "hw:0,1,0"
   .Play
 End With
 
 Repeat         ' Consente a "MediaPlayer" di ritornare il corretto valore della durata del file audio
   Wait 0.01
 Until mp.Duration > 0.0
  
 Wait mp.Duration
 
 mp.Close
  
End

Dirigere l'audio in Entrata

Per l'indirizzamento dei dati in Entrata la logica è analoga, ma si farà uso della Proprietà ".Audio.Input".


Indirizzamento con la Classe "MediaPipeline"

Usando, invece, la Classe MediaPipeline, si assegnerà alla Proprietà "device" dell'Oggetto MediaControl - al quale sia stato passato al suo 2° argomento ugualmente il plugin alsasink - la stringa relativa all'individuazione del dispositivo audio utilizzabile.
Con questa Classe sembra essere necessario l'uso del simbolo "plughw:".

Esempio con la Classe "MediaPipeline"

In questo esempio si eseguirà un file di formato OGG-Vorbis:

Public Sub Main()

 Dim pl As New MediaPipeline
 Dim src, dem, vor, snk As MediaControl
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/file/audio.ogg"
 dem = New MediaControl(pl, "oggdemux")
 vor = New MediaControl(pl, "vorbisdec")
 snk = New MediaControl(pl, "alsasink")
 snk["device"] = "plughw:1,0,0"
  
 src.LinkTo(dem)
 dem.LinkLaterTo(vor)
 vor.LinkTo(snk)
 
 pl.Play

 Repeat
   Wait 0.01
 Until pl.Duration > 0.0
 
 Wait pl.Duration

 pl.Close

End