当前位置:Linux教程 - Linux综合 - linux下声卡编程试探

linux下声卡编程试探

经过小第的不懈努力,终于对声卡编程有了一定的掌握.实现了一个小的录音    程序,//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)