录音控件使用的是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;
转载于:https://blog.51cto.com/adadream/789483