1

マイクからサウンドを取得するためのライブラリ(c ++、Win32、オープンソース)に関する推奨事項はありますか?

ありがとう

4

7 に答える 7

3

OpenAL [1]を見てみてください。やり過ぎかもしれませんが、必要に応じてマイクから録音できるはずです。Gamedev.net [2]にはかなり良い記事がいくつかありますが、マイクから録音する方法を教えてくれるものはありません。ただし、その答えはドキュメントで見つけることができるはずです。:) 幸運を、


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

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

于 2009-06-17T20:09:39.427 に答える
3

PortAudio-ポータブルクロスプラットフォームオーディオAPI

PortAudioは、シンプルなコールバック関数を使用してサウンドを録音および/または再生するための非常にシンプルなAPIを提供します。

于 2009-06-17T20:10:50.080 に答える
2
  • WaveInOpen-これは、ウェーブ入力デバイスを開く関数です。
  • WaveInPrepareHeader-この関数を使用してレコードバッファーを準備します。
  • WaveInAddBuffer-記録するバッファーを追加します。
  • WaveInStart-記録を開始するために使用されます。
  • WaveInClose-ウェーブ入力デバイスを閉じます。
于 2012-03-11T12:10:40.740 に答える
2

CodeProjectでいくつかのコードを見つけました(標準の警告:CodeProjectから取得したコードをすべて注意深く確認してください!便利ですが、そこにあるサンプルに恐ろしいバグが見つかることがよくあります!)。これにより、APIとその使用を開始する方法についての良い手がかりが得られるはずです。そこから、参照や関連トピックをGoogleで検索できます。

于 2009-06-17T20:06:25.410 に答える
1

クロスプラットフォームが必要ない場合は、DirectShowが適切に機能します。オープンソースではありませんが、DirectShowライブラリを必要とするオープンソースプロジェクトを配布できると思います。

于 2009-06-17T20:23:23.393 に答える
0

クロスプラットフォームのサポートが必要だとは言わないでください。クロスプラットフォームのサポートが必要ない場合は、waveAPIまたはDirectSoundを使用します。どちらもかなり簡単に使用できます。

于 2009-06-18T05:33:24.403 に答える
0

私は過去に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);
于 2009-06-19T00:19:45.240 に答える