当前位置:  技术问答>linux和unix

请问如何实现声音的录制和播放?不够了再加分

    来源: 互联网  发布时间:2015-05-28

    本文导语:  1、有相关文章说播放wav文件只要读取文件头再设置dsp就可以播放了,请问dsp如何设置,是什么格式的,有没相关的原代码。 2、关于声音的录制,如何从microphone取得声音,wav的文件头如何设置。我现在的程序不能录...

1、有相关文章说播放wav文件只要读取文件头再设置dsp就可以播放了,请问dsp如何设置,是什么格式的,有没相关的原代码。
2、关于声音的录制,如何从microphone取得声音,wav的文件头如何设置。我现在的程序不能录音,生成的wav格式也不正确。

各位大哥帮帮忙啊
以下是我的代码:
    int i,j;
    int id,fd;
    char testBuf[4096]={0};

    if ( ( id=open( "/dev/audio",O_RDWR ) )==-1 )
    {
        QMessageBox::information(this,"Sound Card Error",
             "Can not find sound card.");
    }

    if ( ( fd=open("/mnt/test.wav",O_RDWR) )==-1 )
    {
        QMessageBox::information( this,"File Error",
             "No such File:test.wav" );
    }

    i=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 (int k=0;k0)
        {
          write(fd,testBuf,i);
          j++;
        }
     }
     
     close(id);
     close(fd);

|
其实录音就是从声卡读数据,播音就是向声卡写数据。如果要把声音存为特定的格式要参照相应的文件的文件头。

|
wav文件的开头是wav头,接着是PCM采样数据。
PCM是脉冲编码调制的意思。就是把模拟信号经过采样,量化和得到的数字波形表示。
http://www.linuxeden.com/edu/doctext.php?docid=2216

    
 
 

您可能感兴趣的文章:

  • 请问谁有weblogic6.1sp1的crack??大大加分!!请多帮忙!!!
  • 请问各位大哥:如何将FRAME上的咖啡标志改成自己设计的标记呢?一定加分!急!急!急!
  • 请问别人帮你回答了问题如何给他加分?
  • 请问谁知道网上那有免费的scjp bible,一定大大加分??
  • 请问jdk1.4+tomcat4.1.12在windowsXP下可否正常运行?加分,在线等待!
  • 请问怎样将系统信息不显示在主控台(tty1)上.高分,再加分的 !!
  • <help!!急!!!>请问如何将一linux机与一Windows 9X机互连?保证加分!!!!!
  • 请问VMware装FC6后怎么设置才能上网?[必加分!]
  • 请问各们JAVA高手,我想学JAVA,请问是VJ好还是JB好,如何入手。谢谢了。我现在最多可以出22分。以后加分
  • 请问SAMBA是如何配置的?我装的是FEDROA 6,用的是samba RPM包来装的,请指教!!!!!!! 加分!!!!
  • 请问有没有redhat屏幕录制工具?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问如何用java实现ie的save as...的功能?(200分求解,不够另加)
  • 请问jsp做完程序后,怎样打包,怎样做安装程序?(分不够在加!)
  • 想在aix4.3的usr下安装apache,可是空间不够,请问怎么扩大usr卷?
  • 我才学java 请问怎样才能快速学会java 一个月够不够?(这是我的最多得分了,下次一定多给)
  • 请问这个问题用什么方法可以实现?很着急的问!高分求,不够我再给!HOOK?Driver?
  • 我在windows下下载了三张fedora的镜像,请问能不能安装?(急,在线等,分不够再加)
  • 请问这个问题用什么方法可以实现?很着急的问!高分求,不够我再给!
  • ◆◆◆◆◆◆◆j2me中,用repaint()在同一地方重画图象,当我画到二十几遍后,手机模拟器就出错或者程序自动退出。我想是不是由于重画时,以前的图片好保存在模拟器的内存中,当重画到一定数时,内存不够,便出错了。还是其他的原因?请问如何解决?
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3