经过小第的不懈努力,终于对声卡编程有了一定的掌握.实现了一个小的录音 程序,//hehe //admire 当然还很不完善,还有一些细节我不大清楚//shy,现将原码贴出,请各位给帮 忙指正,//xixi #include #include #include #include #include main() { int id,fd,i,j; char testbuf[4096]; id=open("/dev/audio",O_RDWR); fd=open("test.wav",O_RDWR); if(id<0fd<0){ printf("error in open the device!\n"); printf("id %d\t dsp%d\t seq%d\n",id,dsp,seq); exit(-1); } post=0; ioctl(id,SNDCTL_DSP_RESET,(char *)&i); ioctl(id,SNDCTL_DSP_SYNC,(char *)&i); i=1; ioctl(id,SNDCTL_DSP_NONBLOCK,(char *)&i); i=8000; ioctl(id,SNDCTL_DSP_SPEED,(char *)&i); i=1; ioctl(id,SNDCTL_DSP_CHANNELS,(char *)&i); i=8; ioctl(id,SNDCTL_DSP_SETFMT,(char *)&i); i=3; ioctl(id,SNDCTL_DSP_SETTRIGGER,(char *)&i); i=3; ioctl(id,SNDCTL_DSP_SETFRAGMENT,(char *)&i); i=1; ioctl(id,SNDCTL_DSP_PROFILE,(char *)&i); for(j=0;j<10;){ i=read(id,testbuf,4096); if(i>0){ write(fd,filebuf,i); j++; } } close(fd); close(id); } 该程序只是简单地录一小段纯音频数据存储在test.wav中,用命令 cat test.wav >/dev/audio 就可以播放出来 对了因为程序要读写声卡的设备文件,所以你必须用相应的权限,或者 你是root。
(出处:http://www.sheup.com)