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

直接錄音 直接撥放

尚未結案
ker704334
一般會員


發表:2
回覆:1
積分:0
註冊:2003-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-29 22:00:29 IP:61.63.xxx.xxx 未訂閱
請問要如何在同一台電腦上面 即時錄音 再即時撥放? 這是我的程式碼 //------------------------------------------------------------------ #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)); } //----------------------------------------------------------------- 這時候錄音的資料是在記憶體裡面沒有存成檔案 那要如何直接再記憶體裡面再撥放? 用的是waveOutOpen這個api函數 煩請提供解答 謝謝
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-11 05:10:13 IP:211.76.xxx.xxx 未訂閱
waveOutOpen 我不會用,我只會用  PlaySound 這個 API 就可以播放在記憶體內的 WAV 格式檔。參考: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_playsound.asp    SND_MEMORY A sound event's file is loaded in RAM. The parameter specified by pszSound must point to an image of a sound in memory.     吃軟也吃硬 dllee.ktop.com.tw 視動科技 VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
系統時間:2024-05-21 2:17:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!