Wuindows의 waveInOpen()을 통해 사운드를 캡처하는 프로그램을 작성했습니다. 메인 보드의 마이크론 장치에서 잘 작동하지만 두 번째 사운드 카드에서 캡처하려고하면 잡음이 들립니다. SoundRecorder로 녹음하면 두 카드에서 모두 잘 작동합니다. any1 waveInOpen() 및 여러 입력 장치에 알려진 문제점이 있는지를 알고 있습니까?두 번째 사운드 카드에서 오디오를 캡처하는 문제
입력 디바이스를 여는 코드는 다음과 같습니다
void Audio::OpenDevice(const int device,
const Audio::SamplingRate samplingRate)
throw (Exception, std::exception)
{
switch(samplingRate)
{
...
case AUDIO_16BIT_44KHZ_STEREO:
bits_per_sample_ = 16;
hertz_ = 44100;
channels_ = 2;
break;
...
default:
throw Exception("Audio::OpenDevice(): Invalid enum value");
}
// Open the device
const UINT_PTR dev = (-1 == device) ? (UINT_PTR)WAVE_MAPPER : (UINT_PTR)device;
WAVEFORMATEX wf = {0};
wf.wFormatTag = WAVE_FORMAT_PCM;
wf.nChannels = channels_;
wf.wBitsPerSample = bits_per_sample_;
wf.nSamplesPerSec = hertz_;
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample/8;
`
const MMRESULT result = waveInOpen(&hwi_, dev, &wf,
(DWORD_PTR)OnWaveEvent, (DWORD_PTR)this, CALLBACK_FUNCTION);
if (MMSYSERR_NOERROR != result)
throw Exception("waveInOpen()");
std::cout << "Audio: Sampling at " << hertz_ << " hertz from "
<< channels_ << " channel(s) with " << bits_per_sample_
<< " bits per sample. "
<< std::endl;
}
yow! 코드를 다시 포맷하십시오. 사람들은 그것을 읽을 기회가 훨씬 많을 것입니다. :) –