播放测试时,发现声音播放速度不对,找了不少地方,没发现错误,无奈,采用定时器,抓捕播放通知事件时间,发现每秒多了4次,这才恍然大悟,缺少对齐数。原公式为:dwPlayBufLen = iSamplesPerSec / iFrameFpsPerSec; 缺少了nBlockAlign对齐数,因为播放长度是按字节排序的,必须存在采样字长概念,而采样字长是按字节计算,每字节计为1,公式为:nBlockAlign = (nChannels * wBitsPerSample) / 8; 修改播放缓冲区计算公式为:dwPlayBufLen = (iSamplesPerSec / iFrameFpsPerSec) * nBlockAlign; 播放速度正常。
时间: 2024-11-01 21:11:39