Niki Yoshiuc..
5
它当然是可能的,但它并不像从文件中读取那么简单.最简单的方法是使用一个库,例如PortAudio.PortAudio是跨平台的,使用起来相当简单.
PortAudio将允许您从麦克风录制,但它对文件格式一无所知.为此你需要另一个图书馆.我从来没有使用它,但libsndfile库可能会做你需要的.
在任何情况下,您都必须从麦克风录制并将数据存储在缓冲区中,然后将该缓冲区写入文件(通过libsndfile或类似的东西).
编辑:示例PortAudio的东西(未经测试,但你应该明白).
int main()
{
PaStream *stream;
/* allocate a buffer that can hold 30 seconds of audio at 44,100Hz */
int len = 44100*30;
float *buffer = malloc(len*sizeof(float));
Pa_Initialize();
/* open a default input (microphone) stream with a sampling rate of 44,100Hz */
Pa_OpenDefaultStream(&stream, 1, 0, paFloat32, 44100, paFramesPerBufferUnspecified, NULL, NULL);
Pa_StartStream(stream);
Pa_ReadStream(stream, buffer, len);
/* write buffer to a file here */
return 0;
}