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).

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top