Gravação de som Java e configurações do mixer
Pergunta
Estou usando o pacote javax.sound.sampled em um programa de decodificação de modo de dados de rádio.Para usar o programa, o usuário alimenta o áudio do receptor de rádio na entrada de linha do PC.O usuário também deve usar seu programa de mixagem para selecionar a entrada de linha como entrada de gravação.O problema é que alguns usuários não sabem como fazer isso e às vezes outros programas alteram a configuração de entrada de gravação.Então, minha pergunta é como meu programa pode detectar se a entrada de linha está definida como entrada de gravação?Também é possível que meu programa altere a configuração de entrada de gravação se detectar que está incorreta?
Obrigado pelo seu tempo.
Ian
Solução
Para responder à sua primeira pergunta, você pode verificar se o Linha.Info objeto para suas correspondências de entrada de gravação Informações.de.porta.LINE_IN assim:
public static boolean isLineIn(Line.Info lineInfo) {
Line.Info[] detected = AudioSystem.getSourceLineInfo(Port.Info.LINE_IN);
for (Line.Info lineIn : detected) {
if (lineIn.matches(lineInfo)) {
return true;
}
}
return false;
}
No entanto, isso não funciona com sistemas operacionais ou APIs de driver de placa de som que não fornecem o tipo de cada canal de mixer disponível.Então, quando eu testo no Windows ele funciona, mas não no Linux ou Mac.Para obter mais informações e recomendações, consulte este Perguntas frequentes.
Em relação à sua segunda pergunta, você pode tentar alterar as configurações de entrada de gravação através de um Ao controle aula.Em particular, veja FloatControl.Type para algumas configurações comuns.Lembre-se de que a disponibilidade desses controles depende do sistema operacional e dos drivers da placa de som, assim como a detecção de entrada de linha.