直接錄音 直接撥放 |
尚未結案
|
ker704334
一般會員 發表:2 回覆:1 積分:0 註冊:2003-12-16 發送簡訊給我 |
請問要如何在同一台電腦上面 即時錄音 再即時撥放? 這是我的程式碼 //------------------------------------------------------------------
#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 發送簡訊給我 |
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |