关于使用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));

望大家不吝赐教
...全文
396 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
数字蛋糕 2006-05-12
  • 打赏
  • 举报
回复
55555555~~~~~~~,没人理我……
数字蛋糕 2006-05-03
  • 打赏
  • 举报
回复
没有人答,只好自己顶了……

1,185

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧