ITPub博客

首页 > 应用开发 > IT综合 > linux下声卡编程试探(转)

linux下声卡编程试探(转)

原创 IT综合 作者:BSDLite 时间:2007-08-11 17:21:38 0 删除 编辑
linux下声卡编程试探(转)[@more@]  经过小第的不懈努力,终于对声卡编程有了一定的掌握.实现了一个小的录音
  
  程序,//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<0||fd<0){
  
  printf("error in open the device! ");
  
  printf("id %d dsp%d seq%d ",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。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10617542/viewspace-946539/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    1872
  • 访问量
    4072346