关于使用waveOutWrite播放音频的问题

数字蛋糕 2006-04-28 12:39:05
初始化都正确,声音也能够听到,音调听上去也正确。只是Unprepare的时间比正常时耗(我设定的是每帧40毫秒)的要多出20多毫秒,总计60毫秒以上。不知道有没有人有这方面的经验?

var
t : Cardinal;
begin
t := GetTickCount;

FBuffer.Load(ALeftChannel, ARightChannel, ALength); //将两个浮点声道转换成
//交错的16位音频
//ALength为样点数
//在48000khz的采样频率下是1920
FWaveHeader.dwBufferLength := FBuffer.Size; //返回总缓冲区的大小。
//应该是 ALength * 2字节 * 2声道 = 7680
//ShowMessage('FWaveHeader.dwBufferLength: ' + IntToStr(FWaveHeader.dwBufferLength));
//ShowMessage('SampleRate: ' + IntToStr(FSampleRate));
FWaveHeader.lpData := PChar(FBuffer.Data); //缓冲区指针
waveOutPrepareHeader(FHandle, @FWaveHeader, SizeOf(FWaveHeader));
waveOutWrite(FHandle, @FWaveHeader, SizeOf(FWaveHeader));

Stop; //循环检测Unprepare的返回值,如果是PLAYING就Sleep(1);

t := GetTickCount - t;
//ShowMessage('WriteWave: ' + IntToStr(t));

望大家不吝赐教
...全文
329 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
数字蛋糕 2006-05-12
55555555~~~~~~~,没人理我……
  • 打赏
  • 举报
回复
数字蛋糕 2006-05-03
没有人答,只好自己顶了……
  • 打赏
  • 举报
回复
相关推荐
发帖
GAME,图形处理/多媒体
加入

1176

社区成员

Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
申请成为版主
帖子事件
创建了帖子
2006-04-28 12:39
社区公告
暂无公告