Domanda

Qualcuno sa come catturare a livello di codice il suono che viene riprodotto (cioè tutto ciò che proviene dalla scheda audio, non i dispositivi di input come un microfono).

È stato utile?

Soluzione

Supponendo che tu stia parlando di Windows, ci sono essenzialmente tre modi per farlo.

Il primo è quello di aprire l'uscita principale del dispositivo audio come sorgente di registrazione. Questo è possibile solo quando il driver lo supporta, anche se la maggior parte lo fa in questi giorni. I nomi comuni per il dispositivo virtuale sono " What You Hear " oppure "quotata in onda". Dovrai utilizzare un'API adatta (vedi WaveIn o DirectSound in MSDN) per eseguire l'acquisizione.

Il secondo modo è scrivere un driver di filtro in grado di intercettare il flusso audio prima che raggiunga il dispositivo fisico. Ancora una volta, questa tecnica funzionerà solo per dispositivi con una topologia di driver adatta e non è certamente per i deboli di cuore.

Ciò significa che nessuna di queste opzioni sarà garantita per funzionare su un PC con hardware arbitrario.

L'ultima alternativa è utilizzare un dispositivo audio virtuale, ad esempio Cavo audio virtuale . Se questo dispositivo è impostato come dispositivo di riproduzione predefinito in Windows, tutte le app ben educate lo riprodurranno. È quindi possibile registrare dallo stesso dispositivo per acquisire l'output sommato. Finché hai il controllo del dispositivo utilizzato dall'applicazione che desideri registrare, questa opzione funzionerà sempre.

Tutte queste tecniche hanno i loro pro e contro - sta a te decidere quale sarebbe la più adatta alle tue esigenze.

Altri suggerimenti

È possibile utilizzare l'interfaccia audio della forma d'onda, esiste un articolo MSDN su come accedervi tramite PInvoke.

Per acquisire l'audio riprodotto, è sufficiente aprire il dispositivo di riproduzione anziché il microfono. Aperto per input, ovviamente, non per output ;-)

Se si utilizza OSX, Audio Hijack Pro di Rogue Amoeba è probabilmente il modo più semplice di procedere.

Ad ogni modo, perché non semplicemente ricollegare l'audio alla linea e registrarlo? Questa è una soluzione molto semplice. Basta collegare un cavo alla presa di uscita audio e alla presa di linea in ingresso e avviare la registrazione.

Devi abilitare il mix stereo del dispositivo. se lo fai, l'audio diretto trova questo dispositivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top