频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

linux下声卡编程试探

来源: 作者: 出处:巧巧读书 2006-06-07 进入讨论组

经过小第的不懈努力,终于对声卡编程有了一定的掌握.实现了一个小的录音
  
  程序,//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!\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.qqread.com/linux/2006/06/e310123061.html 更多文章 更多内容请看Linux集群技术体验Linux的音影世界Linux驱动大全专题,或进入讨论组讨论。

收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章