全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1872
推到 Plurk!
推到 Facebook!

錄音程式

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-18 09:23:01 IP:61.70.xxx.xxx 未訂閱
轉載文章 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, MPlayer; type TWavHeader = record //定義一個Wav文件頭格式 rId : longint; rLen : longint; wId : longint; fId : longint; fLen : longint; wFormatTag : word; nChannels : word; nSamplesPerSec : longint; nAvgBytesPerSec : longint; nBlockAlign : word; wBitsPerSample : word; dId : longint; wSampleLength : longint; end; TForm1 = class(TForm) MediaPlayer1: TMediaPlayer; BtStart: TButton; BtStop: TButton; procedure CreateWav(channels : word; resolution : word; rate : longint; fn : string);//自定義寫一個Wav文件頭過程 procedure BtStartClick(Sender: TObject); procedure BtStopClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.CreateWav( channels : word; { 1(單聲)或者2(立體聲) } resolution : word; { 8或者16,代表8位或16位聲音 } rate : longint; { 聲音頻率,如11025,22050, 44100} fn : string { 對應的文件名稱 } ); var wf : file of TWavHeader; wh : TWavHeader; begin wh.rId := $46464952; wh.rLen := 36; wh.wId := $45564157; wh.fId := $20746d66; wh.fLen := 16; wh.wFormatTag := 1; wh.nChannels := channels; wh.nSamplesPerSec := rate; wh.nAvgBytesPerSec := channels*rate*(resolution div 8); wh.nBlockAlign := channels*(resolution div 8); wh.wBitsPerSample := resolution; wh.dId := $61746164; wh.wSampleLength := 0; assignfile(wf,fn); {打開對應文件 } rewrite(wf); {移動指針到文件頭} write(wf,wh); {寫進文件頭 } closefile(wf); {關閉文件 } end; procedure TForm1.BtStartClick(Sender: TObject); begin try //在程序當前目錄下創建一個Wav文件Temp.wav CreateWav(1, 8, 11025, (ExtractFilePath(Application.ExeName) 'Temp.wav')); MediaPlayer1.DeviceType := dtAutoSelect; MediaPlayer1.FileName := (ExtractFilePath(Application.ExeName) 'Temp.wav'); MediaPlayer1.Open; MediaPlayer1.StartRecording; BtStart.Enabled:=false; BtStop.Enabled:=true; except BtStart.Enabled:=True; BtStop.Enabled:=false; Application.MessageBox('媒體設備初始化失敗!','錯誤',MB_ICONERROR MB_OK); end; end; procedure TForm1.BtStopClick(Sender: TObject); begin try MediaPlayer1.Stop; MediaPlayer1.Save; MediaPlayer1.Close; Application.MessageBox('聲音錄制完畢!','信息',MB_ICONINFORMATION MB_OK); BtStart.Enabled:=True; BtStop.Enabled:=false; except Application.MessageBox('保存聲音文件出錯!','錯誤',MB_ICONERROR MB_OK); BtStart.Enabled:=True; BtStop.Enabled:=false; end; end; end. 補充:1、錄制的文件播放時可能要把音頻屬性的Wav調大。 2、如果系統安裝了其它一些音頻驅動程序,則可能錄制的Wav文件大小為零,但會同時生成一個TMP結尾的文件,將其擴展名改 為Wav就是錄制的聲音文件。但這種情況很少發生。(機會幾乎為零^-^) 3、本程序在運行解霸和Replayer下錄制聲音通過。 ★作者: 陳經韜
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-05 22:33:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!