將許多wav檔的buffer合併存成一個新的wav |
尚未結案
|
o1016
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-21 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
o1016您好:
引言:只是我現在需要將這些buffer存成一個新的wav檔~我不知道要用什麼方法才行?我看了您上次的文章: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27889 用TMemoryStream的方式 要存成新的wav檔,應該可以用下面的方式 TMemoryStream* wav=new TMemorySytrem(); //您之前的合併處理 wav->SaveToFile("New.wav"); //但是做這動作之前必須包含wav的檔頭資訊才行 delete wav;順心 <>~我也是在學習的階段,所以請您多多見諒與指教~> 發表人 - |
o1016
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-21 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
o1016
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-21 發送簡訊給我 |
恩~~貼這樣不知道大家能不能了解...
我還算新手~~~如果寫的方式很奇怪~~
請給予指教~這個是我用一本書上的範例修改而成的~
--------------------------------------------------------------------
int TForm1::open(char* fname,int j,int i) {
if(pVoiceBuffer[i])
pVoiceBuffer[i] = NULL;
if(v2)
v2 = NULL;
if(f) { f=NULL;}
PlayBtn->Enabled = true;
sOpenFileName = fname;
f = new TFileStream( sOpenFileName , fmShareDenyWrite );
cpHeader = new char[44];
f->ReadBuffer(cpHeader,44);
f->Seek(22,soFromBeginning);
f->Read(&sChannels,sizeof(short));
f->Seek(24,soFromBeginning);
f->Read(&lSamplingRate,sizeof(long));
f->Seek(34,soFromBeginning);
f->Read(&sBitsPerSample,sizeof(short));
f->Seek(40,soFromBeginning);
f->Read(&lFileSize,sizeof(long));
if(sBitsPerSample == 8)
iSampleSize = lFileSize;
else if(sBitsPerSample == 16)
iSampleSize = lFileSize/2;
else
{
MessageDlg("Not PCM formats!!",mtInformation,TMsgDlgButtons()<
|
o1016
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-21 發送簡訊給我 |
|
o1016
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-21 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
o1016您好:
幫不上忙實在是不好意思...
不過,我說說我的想法您參考一下
假設有wav1與wav2,下面的code是將wav2除了Header以外的
資訊存入buffer[]中
byte buffer[100000]="0"; if (OpenDialog1->Execute()) { TMemoryStream* wav1 = new TMemoryStream(); wav1->LoadFromFile(OpenDialog1->FileName); BYTE bBuf=0; for (int i=44;i< wav1->Size;i ) //從第45byte開始讀出 { wav1->Position=i; bBuf=i; wav1->Read(&bBuf,1); //寫wav1->Write(&bBuf, 1); buffer[i-44]=bBuf; } delete wav1; }緊接著把它(budder[])寫入wav1結尾資料之後,再修改Header內的資訊... 最後再用之前提到的方式存成New.wav 不知道我這樣想有沒有錯< > 順心< > ~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 - taishyang 於 2003/05/18 19:13:21 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |