录音控件使用的是AudioRecord,压缩使用的是LAME_enc,播放mp3 使用的Bass.dll多媒体函数库,详情见附件,所有的资料均来自网络,归原作者所有

以下代码介绍AudioRecord的相关代码:

 
  
  1. {------------------------------------------------------------------------------- 
  2.   过程名:    TForm1.Button1Click 
  3.   作者:      Administrator 
  4.   日期:      2012.02.25 
  5.   参数:      Sender: TObject 
  6.   返回值:    录音和停止录音 
  7. -------------------------------------------------------------------------------} 
  8. procedure TForm1.btnRecordClick(Sender: TObject); 
  9. begin 
  10.   if btnRecord.Caption = '录音' then  begin 
  11.     if dlgSave.Execute then  begin 
  12.       with AudioRecord1 do begin 
  13.         sFileName := dlgSave.FileName; 
  14.         //指定输出类型 
  15.         OutType := Mp3FileStream; 
  16.         //指定输出的文件路径 
  17.         FileName := ChangeFileExt(sFileName,''); 
  18.         //开始录音 
  19.         Open
  20.         btnPlay.Enabled := False
  21.       end
  22.       btnRecord.Caption := '停止'
  23.     end
  24.   end  else begin 
  25.     //停止录音 
  26.     if AudioRecord1.Active then 
  27.       AudioRecord1.Close
  28.     btnRecord.Caption := '录音'
  29.     btnPlay.Enabled := True
  30.   end
  31. end

以下代码介绍Bass.dll函数库用的代码

 
  
  1. {------------------------------------------------------------------------------- 
  2.   过程名:    BASS_Init 
  3.   作者:      Administrator 
  4.   日期:      2012.02.22 
  5.   参数:      device: Integer; 指定输出设备,-1表示使用当前设备, 
  6.              freq: DWORD;采样率(44100,11025,22050) 
  7.              flags: DWORD; BASS_DEVICE_MONO 等常量的组合值 
  8.              win: HWND; 指定窗口句柄; 0 表示当前窗口 
  9.              clsid: PGUID  指定一个 GUID, 用以初始化 DirectSound; nil 表示使用默认 
  10.   返回值:    BOOL 
  11.  功能:     播放前首先要初始化设备 
  12. -------------------------------------------------------------------------------} 
  13. function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall; external bassdll; 
  14.  
  15. {------------------------------------------------------------------------------- 
  16.   过程名:   BASS_StreamCreateFile 
  17.   作者:     Administrator 
  18.   日期:     2012.02.22 
  19.   参数:     mem: BOOL; 从文件载入这里是 False; 从内存载入这里是 True 
  20.        f: Pointer; 文件名或内存流的指针 
  21.             offset: QWORD 播放起始点, 单位是 1/10 毫米; 只在参数 1: mem = False 时有效; 默认是 0 
  22.             length: QWORD; 播放终止点, 单位是 1/10 毫米; 只在参数 1: mem = False 时有效; 默认是 0 一般为流的大小 
  23.             flags: DWORD BASS_SAMPLE_3D 等参数的组合; 控制播放效果、反复和解码等等 
  24.               BASS_SAMPLE_LOOP 直接创建循环播放的视频流 
  25.               BASS_STREAM_DECODE 重新建立文件流 hs2, 最后的参数是: BASS_STREAM_DECODE, 
  26.                 这样可以提前读取波形数据,(但是是否需要以文件方式 不明确) 
  27.   返回值:    HSTREAM 
  28.  功能:    创建播放音频的文件流 
  29. -------------------------------------------------------------------------------} 
  30. function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; stdcall; external bassdll; 
  31. {------------------------------------------------------------------------------- 
  32.   过程名:    BASS_ChannelPlay 
  33.   作者:      Administrator 
  34.   日期:      2012.02.22 
  35.   参数:      handle: DWORD; restart: BOOL 
  36.   返回值:    BOOL 
  37.  功能:     参数 1 是流句柄; 参数 2 若是 True 每次都会从头播放 
  38. -------------------------------------------------------------------------------} 
  39. function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL; stdcall; external bassdll;