使用Delphi7,LAME_enc製作實時錄製MP3的錄音機

錄音控件使用的是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; 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章