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

所錄的語音data是放在那邊?

尚未結案
Bio6
一般會員


發表:48
回覆:37
積分:17
註冊:2005-04-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-28 00:49:40 IP:61.219.xxx.xxx 未訂閱
請教各位大大,底下的程式所錄的語音data是放在那邊?找了又找. 是想用PlaySound 這個 API 來試一下播放在記憶體內的 WAV 格式檔 請指導一下... //------------------------------------------------------------------ #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; HWND Hwnd; static WAVEFORMATEX pcmWF; static HWAVEIN WaveIn=NULL; static LPWAVEHDR WaveHdr; static LPSTR Data; static DWORD Length; static HANDLE Gmem1,Gmem2; static HWAVEOUT WaveOut; LPWAVEHDR LpwaveHdr; //------------------------------------------------------------------ __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------------------------------------------------------------ void __fastcall TForm1::Button5Click(TObject *Sender) { Memo5->Clear(); Gmem1=GlobalAlloc(GMEM_SHARE|GMEM_MOVEABLE,sizeof(WAVEHDR)); Gmem2=GlobalAlloc(GMEM_SHARE|GMEM_MOVEABLE,(DWORD)10L*11025); WaveHdr=(LPWAVEHDR)GlobalLock(Gmem1); Data=(LPSTR)GlobalLock(Gmem2); pcmWF.wFormatTag=WAVE_FORMAT_PCM; pcmWF.wBitsPerSample=8; pcmWF.nChannels=2; pcmWF.nSamplesPerSec=11025; pcmWF.nAvgBytesPerSec=11025; pcmWF.nBlockAlign=1; waveInOpen(&WaveIn,65535,(LPWAVEFORMATEX)&pcmWF,(DWORD)Hwnd,NULL,CALLBACK_WINDOW); WaveHdr->lpData=Data; WaveHdr->dwBufferLength=(DWORD)10L*11025; waveInPrepareHeader(WaveIn,WaveHdr,sizeof(WAVEHDR)); waveInAddBuffer(WaveIn,WaveHdr,sizeof(WAVEHDR)); waveInStart(WaveIn); //waveInGetID(WaveIn,&DevID); Memo5->Lines->Add("裝置錄音中 "); Memo5->Lines->Add(""); } //------------------------------------------------------------------ void __fastcall TForm1::Button6Click(TObject *Sender) { waveInStop(WaveIn); waveInReset(WaveIn); Length=WaveHdr->dwBytesRecorded; Memo5->Lines->Add("裝置停止錄音"); waveInClose(WaveIn); waveInUnprepareHeader(WaveIn,WaveHdr,sizeof(WAVEHDR)); } //----------------------------------------------------------------- 錄自 http://delphi.ktop.com.tw/topic.php?topic_id=55587
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-29 12:37:29 IP:220.139.xxx.xxx 未訂閱
您好:    PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 >
Bio6
一般會員


發表:48
回覆:37
積分:17
註冊:2005-04-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-25 01:41:30 IP:61.219.xxx.xxx 未訂閱
不好意思,請版大幫忙移到網際網路程式設計討論區(C Builder).多謝 是否有.bpr範例可参考? 另外請教一下,用Indy是否就不會有封包Loss? 或是在RecvBufferSize, SendBufferSize設定多大最好? 請指教 謝謝 發表人 - bio6 於 2005/06/25 01:46:02
qmlab
一般會員


發表:0
回覆:6
積分:11
註冊:2008-02-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-02-20 15:33:36 IP:60.250.xxx.xxx 訂閱
 pSpeechBuffer=PWaveHdr->lpData; //指向錄音Buffer的位置
BufferLength=PWaveHdr->dwBytesRecorded; //錄音Buffer的長度

P.S. 上面的程式改成Double Buffer來錄音效果較好!
系統時間:2024-05-08 9:10:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!