Lib C ++ gratuita (Win32) per registrare il microfono [chiuso]
-
06-07-2019 - |
Domanda
c'è qualche raccomandazione per una libreria (c ++, Win32, open source) per ottenere l'audio da un microfono?
Grazie
Soluzione
Prova a dare un'occhiata a OpenAL [1] potrebbe essere eccessivo, ma dovrebbe essere in grado di registrare dal microfono come desideri. Esistono alcuni articoli abbastanza interessanti al riguardo su Gamedev.net [2] anche se temo che nessuno di loro ti dica come registrare da un microfono. Dovresti comunque essere in grado di trovare la risposta nella documentazione. :) buona fortuna,
[1] http://connect.creativelabs.com/openal/default.aspx
[2] http://www.gamedev.net/reference/articles/ article2008.asp
Altri suggerimenti
PortAudio - API audio multipiattaforma portatile
PortAudio fornisce un'API molto semplice per la registrazione e / o la riproduzione del suono utilizzando una semplice funzione di richiamata.
Ho trovato del codice su CodeProject (avviso standard: per favore rivedere attentamente ogni bit di codice che prendi da CodeProject! È utile, ma spesso trovo bug orribili nei campioni che ci arrivo!). Questo dovrebbe darti una buona idea delle API e di come iniziare a usarle. Da lì puoi consultare Google per riferimenti e argomenti correlati.
- WaveInOpen - Questa è una funzione che apre un dispositivo di input wave.
- WaveInPrepareHeader: prepara un buffer dei record con questa funzione.
- WaveInAddBuffer - Aggiunge un buffer da registrare.
- WaveInStart: utilizzato per inizia a registrare.
- WaveInClose - Chiude un dispositivo di input wave.
Se non hai bisogno di più piattaforme, DirectShow funziona bene. Sebbene non sia open source, credo che tu possa distribuire progetti open source che richiedono le librerie DirectShow.
Non dici che hai bisogno del supporto multipiattaforma, se il supporto multipiattaforma non è necessario, userei le API wave o DirectSound - entrambi sono abbastanza semplici da usare.
Ho usato le funzioni mci per registrare in passato. Siamo spiacenti, questo non dimostra che il microfono sia selezionato come input di registrazione, ma una volta selezionato manualmente, rimarrà a meno che qualcuno non lo cambi. Questo è stato in una finestra di dialogo, quindi ecco da dove proviene la maniglia di Windows.
#define ALIAS "mci_alias"
char mci_command[100];
char ReturnString[300];
int mci_error;
// open the device
sprintf(mci_command, "open new type waveaudio alias %s", ALIAS);
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);
// set the time format
sprintf(mci_command,"set %s time format ms", ALIAS); // just set time format
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);
// start the record. specify notifications with a MM_MCINOTIFY message)
sprintf(mci_command, "record %s notify", ALIAS);
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);
// wait for a stop button, or an error to occur
sprintf(mci_command,"stop %s", ALIAS);
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);
// save the file
sprintf(mci_command, "save %s %s", ALIAS, m_filename);
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);
sprintf(mci_command,"stop %s", ALIAS);
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);
// close the device
sprintf(mci_command,"close %s", ALIAS);
mci_err = mciSendString(mci_command, ReturnString, sizeof(ReturnString), m_hWnd);