歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> linux下聲卡編程試探

linux下聲卡編程試探

日期:2017/2/27 14:28:29   编辑:更多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。    




Copyright © Linux教程網 All Rights Reserved