錄音控件使用的是AudioRecord,壓縮使用的是LAME_enc,播放mp3 使用的Bass.dll多媒體函數庫,詳情見附件,所有的資料均來自網絡,歸原作者所有
以下代碼介紹AudioRecord的相關代碼:
- {-------------------------------------------------------------------------------
- 過程名: TForm1.Button1Click
- 作者: Administrator
- 日期: 2012.02.25
- 參數: Sender: TObject
- 返回值: 錄音和停止錄音
- -------------------------------------------------------------------------------}
- procedure TForm1.btnRecordClick(Sender: TObject);
- begin
- if btnRecord.Caption = '錄音' then begin
- if dlgSave.Execute then begin
- with AudioRecord1 do begin
- sFileName := dlgSave.FileName;
- //指定輸出類型
- OutType := Mp3FileStream;
- //指定輸出的文件路徑
- FileName := ChangeFileExt(sFileName,'');
- //開始錄音
- Open;
- btnPlay.Enabled := False;
- end;
- btnRecord.Caption := '停止';
- end;
- end else begin
- //停止錄音
- if AudioRecord1.Active then
- AudioRecord1.Close;
- btnRecord.Caption := '錄音';
- btnPlay.Enabled := True;
- end;
- end;
以下代碼介紹Bass.dll函數庫用的代碼
- {-------------------------------------------------------------------------------
- 過程名: BASS_Init
- 作者: Administrator
- 日期: 2012.02.22
- 參數: device: Integer; 指定輸出設備,-1表示使用當前設備,
- freq: DWORD;採樣率(44100,11025,22050)
- flags: DWORD; BASS_DEVICE_MONO 等常量的組合值
- win: HWND; 指定窗口句柄; 0 表示當前窗口
- clsid: PGUID 指定一個 GUID, 用以初始化 DirectSound; nil 表示使用默認
- 返回值: BOOL
- 功能: 播放前首先要初始化設備
- -------------------------------------------------------------------------------}
- function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall; external bassdll;
- {-------------------------------------------------------------------------------
- 過程名: BASS_StreamCreateFile
- 作者: Administrator
- 日期: 2012.02.22
- 參數: mem: BOOL; 從文件載入這裏是 False; 從內存載入這裏是 True
- f: Pointer; 文件名或內存流的指針
- offset: QWORD 播放起始點, 單位是 1/10 毫米; 只在參數 1: mem = False 時有效; 默認是 0
- length: QWORD; 播放終止點, 單位是 1/10 毫米; 只在參數 1: mem = False 時有效; 默認是 0 一般爲流的大小
- flags: DWORD BASS_SAMPLE_3D 等參數的組合; 控制播放效果、反覆和解碼等等
- BASS_SAMPLE_LOOP 直接創建循環播放的視頻流
- BASS_STREAM_DECODE 重新建立文件流 hs2, 最後的參數是: BASS_STREAM_DECODE,
- 這樣可以提前讀取波形數據,(但是是否需要以文件方式 不明確)
- 返回值: HSTREAM
- 功能: 創建播放音頻的文件流
- -------------------------------------------------------------------------------}
- function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; stdcall; external bassdll;
- {-------------------------------------------------------------------------------
- 過程名: BASS_ChannelPlay
- 作者: Administrator
- 日期: 2012.02.22
- 參數: handle: DWORD; restart: BOOL
- 返回值: BOOL
- 功能: 參數 1 是流句柄; 參數 2 若是 True 每次都會從頭播放
- -------------------------------------------------------------------------------}
- function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL; stdcall; external bassdll;