要求:用声卡采集声音并压缩存储,并且能够在原声音文件继续插入更多的音频数据。能够指定从某一个时间段开始播放。压缩算法没有什么要求,因为要录很久,所以wav过于占用空间,所以希望能够压缩一些空间。什么算法比较好实现有现成代码的就提供哪一个吧。
因为时间比较赶,所以希望提供一个基本代码或者模板,让我能很快上手。
谢谢

解决方案 »

  1.   

    用API的话,waveIn系统API读入数据,压缩算法mpeg1,2都不错,lame是开源的mp3压缩库,压缩效果和速度都不错。
    用现成的开发包,有DirectShow和DirectSound。采集,压缩,加工都可以。
      

  2.   

    DirectSound做声卡采集不错的,压缩的话有很多现成的可用
      

  3.   

    DirectSound是DirectX的部件吧,大家开发一般是用什么版本?Xp自带的版本是多少?
      

  4.   

    下载DirectX SDK才能开发Direct程序。
    http://www.microsoft.com/downloads/details.aspx?FamilyID=bc7ddedd-af62-493d-8055-5e57bab71e1a&DisplayLang=en
      

  5.   

    算了,我觉得我对音质要求不高,我想直接录成wav格式,PCM格式,采样率低一点,文件就不会大了。我看了这篇文章 :基于API的录音机程序 作者/栾义明
    http://www.vckbase.com/document/viewdoc/?id=904
    觉得还可以,但是不知道如何将录音文件保存起来。另外,基于api的调用挺复杂的,有没有现成的类?
      

  6.   

    先清楚WAV的文件格式,在waveInOpen的时候把文件头写好,MM_WIM_DATA中把缓存写入文件就可以了。
    其实waveIn系列使用并不复杂,就是MM_WIM_OPEN, MM_WIM_CLOSE, MM_WIM_DATA三个消息的处理罢了
      

  7.   

    请问在MM_WIM_DATA中如何把缓存写入文件?用什么函数?
      

  8.   

    嗯。现在的问题是如何把声音存入wav文件,而且还要求可以往以前的wav文件加入新的声音数据,急!
      

  9.   

    ft,搞了一天。 参考了i_noname的意见,直接写wav文件。