2013-08-06 16 views
8

Sto cercando un modo per specificare un dispositivo di output con JavaFXJavaFX Selezione audio uscita

Ho un problema simile a questa domanda: JavaFX specific Audio Output, ma con esigenze diverse.

Ho bisogno di un modo per ottenere un elenco di tutti i possibili dispositivi di uscita audio (come quello che si vede nelle preferenze dell'utente) e consentire all'utente di selezionare quale si desidera che l'audio venga fuori in JavaFx. Questa sembra una funzionalità di base che dovrebbe essere presente in qualsiasi API di musica/media ed è essenziale per la maggior parte dei software audio.

Sto usando il MediaPlayer in JavaFx, anche se se c'è un'altra classe sono felice di usarlo. Nota comunque che ho bisogno della stessa funzionalità per il video (specificando l'output audio), quindi ho bisogno di una classe/soluzione che funzioni per entrambi.

Se c'è qualcosa in JavaFx 8 che può essere d'aiuto, posso sempre aspettare che venga rilasciato.

Quello che mi aspettavo davvero che ci sia stata la stessa cosa che la classe Screens:

Screen.getScreens() // Gets an observable list of all screens. 

sto bene con le soluzioni di hacker. Davvero, tutto ciò che funziona.

+0

Hai guardato 'javax.sound.sampled.AudioSystem.getMixerInfo()' per elencare audio sistemi? – assylias

+0

@assylias Spero di non dover usare java sound, dal momento che sarebbe molto complicato implementare con il video –

+2

Se non si ricevono risposte, il modo per ottenere una risposta è chiedere su uno degli invii JavaFX elenchi o per creare un nuovo problema Jira. – assylias

risposta

1

Per anni è stata una limitazione molto sfortunata dell'implementazione Java per OS X, essendo BTW particolare per quella piattaforma, che "Java Sound Audio Engine" è l'unica linea audio di uscita disponibile a livello di programmazione. Di conseguenza, qualunque cosa tu invii a questa linea, ad esempio da qualsiasi applicazione java che crei, sarà sempre indirizzata a ciò che è stato impostato come output predefinito nell'OS X, in genere altoparlanti interni. Quindi JSAE è solo la terminologia Java per "default audio out". Per nostra comprensione - purtroppo - questo è ancora il caso dell'ultima versione.

Perché sfortunato? Perché disattiva efficacemente anche l'audio modesto. Lavoriamo quotidianamente su questi argomenti e richiede ogni tipo di complessità aggiuntiva. Ci sono problemi di lavoro, ma tramite app di terze parti come SoundFlower e HiJack Pro. www.soundPimp.com per esempio.

+0

Esiste qualche tutorial o qualcosa su come implementare uno di quei work around? –

1

Come assylias ha sottolineato metodo getmixerinfo può aiutare a

 Info[] mixerInfo = AudioSystem.getMixerInfo(); 

    for(int i = 0; i < mixerInfo.length; i++) 
    { 
     System.out.println(mixerInfo[i].getName()); 
    } 

È possibile esplorare ulteriori dettagli here

+0

C'è un modo per farlo funzionare con JavaFx? –

Problemi correlati