kil*_*ode 2 c linux audio-recording
我不知道从哪里开始,我试图在linux上录制麦克风输入,是否有可能,我的意思是我知道一切都是linux下的文件描述符,它会像用fopen/fread读取文件一样容易吗?还有,它需要root吗?
谢谢.
它当然是可能的,但它并不像从文件中读取那么简单.最简单的方法是使用一个库,例如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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5404 次 |
| 最近记录: |