經過小第的不懈努力,終於對聲卡編程有了一定的掌握.實現了一個小的錄音 程序,//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。