我在网上弄到的一个程序,定义声音文件的格式如下
const
  WAVE_FORMAT_GSM610 = $0031;
begin
  PtrWaveFormatRs := AllocMem(SizeOf(TWaveFormatRs));
  with PtrWaveFormatRs^ do begin
    with WFX do begin
      wFormatTag := WAVE_FORMAT_GSM610;
      nChannels := 1;
      nSamplesPerSec := 44025;
      nAvgBytesPerSec := 2239;
      nBlockAlign := 65;
      wBitsPerSample := 0;
      cbSize := 2;
    end;用这个格式是可以录制声音的,但当我想换一种格式要求声音效果好一点的时候,无论怎么设都不行,程序一执行就出错,高人来帮帮我吧!!

解决方案 »

  1.   

    nChannels 为声道,可以改为双声道
    nSamplesPerSec 为采样频率,44025已经很高了CD也只有这么高的采样频率,可以不改。
    wBitsPerSample 为采样位数,一般用8或16,CD用24位甚至更高,这个是可以明显改变音质的!但一般用16也够了。
    nAvgBytesPerSec为每秒字节数固定为wBitsPerSample*nChannels*nSamplesPerSec/8
      

  2.   

    你改了没有用,而且出错,可能是因为
      一、wBitsPerSample := 0采样频率为0;
      二、nAvgBytesPerSec不满足wBitsPerSample*nChannels*nSamplesPerSec/8;
      

  3.   

    Haofei(昊飞) 
    谢谢了
    我的各项参数是按照
    wFormatTag := WAVE_FORMAT_PCM;
          nChannels := 2;
          nSamplesPerSec := 22050;
          nAvgBytesPerSec := 88200;
          nBlockAlign := 4;
          wBitsPerSample := 16;
          cbSize := 2;
     设置的,可是录音不到两秒就出错,用那个低采样率的却不出错,能不能帮我看看是什么毛病呢?