Como faço para capturar o áudio que está sendo tocado?
-
03-07-2019 - |
Pergunta
Alguém sabe como capturar programaticamente o som que está sendo jogado (isto é, tudo o que vem da placa de som, não os dispositivos de entrada, como um microfone).
Solução
Assumindo que você está falando sobre o Windows, existem basicamente três maneiras de fazer isso.
O primeiro é abrir a saída principal do dispositivo de áudio como fonte de gravação. Isso só é possível quando o motorista suporta, embora a maioria fazer estes dias. Os nomes comuns para o dispositivo virtual são "What You Hear" ou "Wave Out". Você vai precisar usar uma API adequado (ver WaveIn ou DirectSound no MSDN) para fazer a captura.
A segunda maneira é escrever um driver de filtro que pode interceptar o fluxo de áudio antes de atingir o dispositivo físico. Mais uma vez, esta técnica só irá funcionar para dispositivos que possuem uma topologia driver adequado e certamente não é para o hearted-leve.
Isso significa que nenhuma dessas opções será garantido para trabalhar em um PC com hardware arbitrária.
A última alternativa é a utilização de um dispositivo de áudio virtual, tais como Virtual cabo de áudio. Se este dispositivo está definido como o dispositivo de reprodução defualt no Windows, em seguida, todos os aplicativos bem-comportados vai jogar com ele. Você pode, então, gravar a partir do mesmo dispositivo para capturar a saída somados. Contanto que você tem controle sobre o dispositivo que o aplicativo que você deseja usos recordes, então esta opção será sempre trabalho.
Todas estas técnicas têm seus prós e contras -., Cabe a você decidir qual seria o mais adequado para suas necessidades
Outras dicas
Você pode usar o Waveform Audio Interface, há um MSDN artigo sobre como acessá-lo por PInvoke.
A fim de captar o som que está sendo jogado, você só precisa abrir o dispositivo de reprodução em vez do microfone. Aberto para entrada, é claro, não para a saída; -)
Se você estava usando OSX, Audio Hijack Pro da Rogue Amoeba é provavelmente a maneira mais fácil de ir.
De qualquer forma, porque não basta looping suas costas áudio em sua linha e gravando isso? Esta é uma muito solução simples. Basta conectar um cabo na sua tomada de saída de áudio e sua linha em jack e começar recordung.
Você tem que permitir dispositivo mix estéreo. se você fizer isso, som direto encontrar este dispositivo.