⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux下声卡编程.htm

📁 介绍声卡编程的一些资料
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0055)http://linuxsoft.myrice.com/linuxclub/linuxbc/sound.htm -->
<!-- saved from url=(0056)http://www.yestime.net/linux/linux/bczn/linuxsndprg.html --><HTML><HEAD><TITLE>linux下声卡编程</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
<BODY bgProperties=fixed background=linux下声卡编程.files/back.gif>
<TABLE cellSpacing=0 cellPadding=0 width="89%" border=0>
  <TBODY>
  <TR>
    <TD width="100%">
      <DIR><FONT lang=ZH-CN face=宋体 size=3>
      <P align=center><FONT color=#008000>linux下声卡编程试探</FONT></FONT></P>
      <P align=justify><FONT lang=ZH-CN face=宋体 
      size=2>经过小第的不懈努力,终于对声卡编程有了一定的掌握.实现了一个小的录音</FONT></P>
      <P align=justify><FONT size=2><FONT lang=ZH-CN face=宋体>程序</FONT>,//hehe 
      //admire &lt;me&gt;</FONT></P>
      <P align=justify><FONT size=2><FONT lang=ZH-CN 
      face=宋体>当然还很不完善</FONT>,<FONT lang=ZH-CN face=宋体 
      size=3>还有一些细节我不大清楚</FONT>//shy,<FONT lang=ZH-CN face=宋体 
      size=3>现将原码贴出</FONT>,<FONT lang=ZH-CN face=宋体>请各位给帮</FONT></FONT></P>
      <P align=justify><FONT size=2><FONT lang=ZH-CN 
      face=宋体>忙指正</FONT>,//xixi</FONT></P>
      <P align=justify><FONT size=2>#include &lt;sys/soundcard.h&gt;</FONT></P>
      <P align=justify><FONT size=2>#include &lt;stdio.h&gt;</FONT></P>
      <P align=justify><FONT size=2>#include &lt;sys/types.h&gt;</FONT></P>
      <P align=justify><FONT size=2>#include &lt;sys/stat.h&gt;</FONT></P>
      <P align=justify><FONT size=2>#include &lt;fcntl.h&gt;</FONT></P>
      <P align=justify><FONT size=2>main()</FONT></P>
      <P align=justify><FONT size=2>{</FONT></P>
      <P align=justify><FONT size=2>int id,fd,i,j;</FONT></P>
      <P align=justify><FONT size=2>char testbuf[4096];</FONT></P>
      <P align=justify><FONT size=2>id=open("/dev/audio",O_RDWR);</FONT></P>
      <P align=justify><FONT size=2>fd=open("test.wav",O_RDWR);</FONT></P>
      <P align=justify><FONT size=2>if(id&lt;0||fd&lt;0){</FONT></P>
      <P align=justify><FONT size=2>printf("error in open the 
      device!\n");</FONT></P>
      <P align=justify><FONT size=2>printf("id %d\t dsp%d\t 
      seq%d\n",id,dsp,seq);</FONT></P>
      <P align=justify><FONT size=2>exit(-1);</FONT></P>
      <P align=justify><FONT size=2>}</FONT></P>
      <P align=justify><FONT size=2>post=0;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_RESET,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_SYNC,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=1;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_NONBLOCK,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=8000;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_SPEED,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=1;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_CHANNELS,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=8;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_SETFMT,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=3;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_SETTRIGGER,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=3;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_SETFRAGMENT,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>i=1;</FONT></P>
      <P align=justify><FONT size=2>ioctl(id,SNDCTL_DSP_PROFILE,(char 
      *)&amp;i);</FONT></P>
      <P align=justify><FONT size=2>for(j=0;j&lt;10;){</FONT></P>
      <P align=justify><FONT size=2>i=read(id,testbuf,4096);</FONT></P>
      <P align=justify><FONT size=2>if(i&gt;0){</FONT></P>
      <P align=justify><FONT size=2>write(fd,filebuf,i);</FONT></P>
      <P align=justify><FONT size=2>j++;</FONT></P>
      <P align=justify><FONT size=2>}</FONT></P>
      <P align=justify><FONT size=2>}</FONT></P>
      <P align=justify><FONT size=2>close(fd);</FONT></P>
      <P align=justify><FONT size=2>close(id);</FONT></P>
      <P align=justify><FONT lang=ZH-CN face=宋体 size=2>}</FONT></P><FONT size=3>
      <P align=justify></FONT><FONT size=2><FONT lang=ZH-CN 
      face=宋体>该程序只是简单地录一小段纯音频数据存储在</FONT>test.wav<FONT lang=ZH-CN 
      face=宋体>中</FONT>,<FONT lang=ZH-CN face=宋体>用命令</FONT></FONT></P>
      <P align=justify><FONT size=2>cat test.wav &gt;/dev/audio <FONT lang=ZH-CN 
      face=宋体>就可以播放出来</FONT></FONT></P><FONT size=3>
      <P align=justify></FONT><FONT size=2><FONT lang=ZH-CN 
      face=宋体>对了因为程序要读写声卡的设备文件</FONT>,<FONT lang=ZH-CN 
      face=宋体>所以你必须用相应的权限</FONT>,<FONT lang=ZH-CN 
      face=宋体>或者</FONT></FONT></P></DIR>
      <P align=justify><FONT size=2><FONT lang=ZH-CN 
      face=宋体>你是</FONT>root。</FONT></P></TD></TR></TBODY></TABLE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -