Frage

Gibt es eine Empfehlung für eine Bibliothek (c ++, Win32, Open Source), um den Ton von einem Mikrofon zu bekommen?

Danke

War es hilfreich?

Lösung

Versuchen Sie einen Blick auf OpenAL mit [1], es könnte zu viel des Guten, aber sollte in der Lage sein, von Mikrofon aufzunehmen, wie man wollte. Es gibt einige sehr gute Artikel über ihn auf Gamedev.net [2], obwohl ich Angst, keiner von ihnen bin erfahren Sie, wie von einem Mikrofon aufzeichnen. Sie sollten jedoch in der Lage sein, die Antwort darauf in der Dokumentation zu finden. :) viel Glück,


[1] http://connect.creativelabs.com/openal/default.aspx

[2] http://www.gamedev.net/reference/articles/ article2008.asp

Andere Tipps

Portaudio - portable Cross-Plattform-Audio-API

  

Portaudio bietet eine sehr einfache API   zum Aufzeichnen und / oder Abspielen von Sound   mit einer einfachen Callback-Funktion.

fand ich einige Code unter Codeproject (Standard Warnung: Bitte jedes Stück Code überprüfen Sie von Codeproject nehmen sorgfältig! Es ist nützlich, aber ich finde oft erschreckende Fehler in Proben, die ich dort!). Das sollte man einen guten Anhaltspunkt geben, wie auf die APIs und wie mit ihnen zu beginnen. Von dort können Sie Google nach Referenzen und verwandten Themen.

  • WaveInOpen -. Dies ist eine Funktion, die eine Welle Eingabegerät öffnet
  • WaveInPrepareHeader -. Bereiten Sie einen Aufnahmepuffer mit dieser Funktion
  • WaveInAddBuffer - Fügt ein Puffer aufgezeichnet werden.
  • WaveInStart - Zum Starte die Aufnahme.
  • WaveInClose -. Schließt eine Welle Eingabegerät

Wenn Sie keine Cross-Plattform benötigen, Directshow gut funktioniert. Obwohl es nicht Open Source ist, glaube ich, Sie Open-Source-Projekte, die die Directshow-Bibliotheken erfordern verteilen können.

Sie müssen nicht sagen, dass Sie Cross-Plattform-Unterstützung benötigen, wenn Cross-Plattform-Unterstützung nicht erforderlich ist, dass ich die Welle APIs oder Directsound verwenden würde -. Beide ziemlich straighforward sind zu verwenden

Ich habe die mci Funktionen in der Vergangenheit aufzunehmen. Sorry, das zeigt nicht dafür, dass das Mikrofon als Aufnahme Eingang gewählt ist, aber sobald seine Hand ausgewählt, wird es bleiben, wenn jemand sie sich ändert. Das war in einem Dialog, so ist das, was das Fenster Griff kam.

#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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top