如何播放音频信号?

发布于 2022-10-15 09:06:31 字数 2793 浏览 30 评论 0

  1. wave的播放方法很多,可以用dsound,dshow,甚至是sndPlay,sendMciString等等方法都可以实现。但是这都是对于windows平台下的音频播放,如果换到windows mobile平台,就未必支持以上几种方式,这时就必须用到低级的wave系列的API了。
  2. 步骤1:
  3. 申请二个或二个以上的WAVEHDR结构,m_WaveHdr1,m_WaveHdr2
  4. 填充WAVEHDR结构, 如下:
  5. m_WaveHdr1.lpData           = (LPTSTR)_pWaveData + 44;
  6. m_WaveHdr1.dwBufferLength  = PLAY_BUFFE_SIZE;
  7. m_WaveHdr1.dwBytesRecorded = 0;
  8. m_WaveHdr1.dwUser          = 0;
  9. m_WaveHdr1.dwFlags         = WHDR_BEGINLOOP | WHDR_ENDLOOP;
  10. m_WaveHdr1.dwLoops         = 1;
  11. m_WaveHdr1.lpNext          = NULL;
  12. m_WaveHdr1.reserved        = 0;
  13. // 第二个的数据起止位置一定要大于第一个数据的播放缓冲大小,否则可能会声音不正常。
  14. m_WaveHdr2.lpData          = (LPTSTR)_pWaveData + 44 + PLAY_BUFFE_SIZE;
  15. m_WaveHdr2.dwBufferLength  = PLAY_BUFFE_SIZE;
  16. m_WaveHdr2.dwBytesRecorded = 0;
  17. m_WaveHdr2.dwUser          = 0;
  18. m_WaveHdr2.dwFlags         = WHDR_BEGINLOOP | WHDR_ENDLOOP;
  19. m_WaveHdr2.dwLoops         = 1;
  20. m_WaveHdr2.lpNext          = NULL;
  21. m_WaveHdr2.reserved        = 0;
  22. 步骤2:
  23. 在回调函数、回调线程或回调窗口的 WOM_DONE 响应里,作以下操作,
  24. LPWAVEHDR pWaveHeader  = (LPWAVEHDR)dwParam1;   // 系统自动识别是哪一个WAVEHDR播放完毕
  25. waveOutUnprepareHeader(hwo, pWaveHeader, sizeof(WAVEHDR)); // 清空设备缓存
  26.    pWaveHeader->lpData     += (5 * PLAY_BUFFE_SIZE);
  27.    pWaveHeader->dwBufferLength = pThis->m_lLeaveSize < PLAY_BUFFE_SIZE ? pThis->m_lLeaveSize : PLAY_BUFFE_SIZE;   // 得到正确的缓冲大小.
  28.    waveOutPrepareHeader(hwo, pWaveHeader, sizeof(WAVEHDR));
  29.    waveOutWrite(hwo, pWaveHeader, sizeof(WAVEHDR));
  30. 完成以上步骤,及可实现多段缓冲播放。

复制代码2.如何处理音频信号?

3.如何分析音频信号?

相关公式

窗函数类型矩型窗 RN(n)

汉明窗 0.54-0.46*cos[2*PI*n/(N-1)]         0≤n≤N-1

汉宁窗 0.5*[1-cos[2*PI*n/(N-1)]]             0≤n≤N-1

布莱克曼窗 0.42-0.5*cos[2*PI*n/(N-1)]+0.08cos[4*PI*n/(N-1))*RN(n)

计算功率 h(i)=sqrt(re(i)*re(i)+im(i)*im(i))

计算分贝 dBh(i)=20*log (h(i))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

坐在坟头思考人生 2022-10-22 09:06:31

你是搞数字信号处理的吗?
{:3_182:}{:3_182:}{:3_182:}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文