Бесплатная библиотека C ++ (Win32) для записи микрофона [закрыта]

StackOverflow https://stackoverflow.com/questions/1009225

Вопрос

есть ли какие-либо рекомендации по библиотеке (c ++, Win32, с открытым исходным кодом) для получения звука с микрофона?

Спасибо

Это было полезно?

Решение

Попробуйте взглянуть на OpenAL [1] это может быть излишеством, но вы должны иметь возможность записывать с микрофона, как вы хотели.Об этом есть несколько довольно хороших статей на Gamedev.net [2] хотя, боюсь, ни в одной из них не рассказывается, как записывать с микрофона.Однако вы должны быть в состоянии найти ответ на этот вопрос в документации.:) удачи,


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

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

Другие советы

PortAudio - портативный кроссплатформенный аудио API

PortAudio предоставляет очень простой API для записи и / или воспроизведения звука с помощью простой функции обратного вызова.

Я нашел кое-какой код на Кодпроект (стандартное предупреждение:Пожалуйста, внимательно просмотрите каждый фрагмент кода, который вы берете из CodeProject!Это полезно, но я часто нахожу ужасающие ошибки в образцах, которые я получаю там!).Это должно дать вам хорошее представление об API и о том, как начать их использовать.Оттуда вы можете поискать в Google ссылки и связанные темы.

  • WaveInOpen - это функция, которая открывает устройство волнового ввода.
  • WaveInPrepareHeader - Подготовьте буфер записи с помощью этой функции.
  • WaveInAddBuffer - добавляет буфер для записи.
  • WaveInStart - используется для начала записи.
  • WaveInClose - закрывает устройство волнового ввода.

Если вам не нужна кроссплатформенность, Прямое шоу работает хорошо.Хотя это не с открытым исходным кодом, я полагаю, что вы можете распространять проекты с открытым исходным кодом, для которых требуются библиотеки DirectShow.

Вы не говорите, что вам нужна кроссплатформенная поддержка, если бы кроссплатформенная поддержка не была необходима, я бы использовал wave API или DirectSound - оба довольно просты в использовании.

В прошлом я использовал функции mci для записи.Извините, здесь не отображается, выбран ли микрофон в качестве входа для записи, но как только он будет выбран вручную, он останется, если кто-нибудь его не изменит.Это было в диалоговом окне, так что именно из него был взят дескриптор 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top