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

請教聲音檔案(wav)取frame 的方法

尚未結案
f814030
一般會員


發表:20
回覆:22
積分:8
註冊:2008-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-28 12:05:21 IP:163.17.xxx.xxx 訂閱
學生有一個3秒的音訊檔

想要每0.1s 取一個frame,

也就是說每一個frame 有800個值

目前學生的做法是用for 迴圈的方式

但運算下來就是停不下來…就像進入了無限迴圈…


[code cpp]
TMemoryStream *ms = new TMemoryStream();
ms->LoadFromFile(OpenDlg->FileName);
Byte *pWaveData = (Byte* )ms->Memory;
for (int ii=0; ii < 24000; ii=ii 800) { //24000是指音訊檔總共所有的數值各數
if (ii=0) {
for (int i1 = ii; i1 < 800; i1 ) {
Memo1->Lines->Add(IntToHex(pWaveData[i1],2));
Memo1->Lines ->SaveToFile("800.txt");
}
}
if (ii=800) {
for (int i2 = ii; i2 < 1600; i2 ) {
Memo1->Lines->Add(IntToHex(pWaveData[i2],2));
Memo1->Lines ->SaveToFile("1600.txt");
}
}
}
delete ms;

[/code]


目前只想到很笨的方法…用迴圈來取數值(每800一個間隔)

請教各位先進,有無更好的方法呢?

懇請賜教~謝謝
------
Spencer~~~~*
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-30 10:42:43 IP:118.169.xxx.xxx 訂閱
TMemoryStream有Read可以用,用Postion來指定Read起始位址
系統時間:2024-04-25 5:25:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!