windows播放wav音频文件

摘要

  遇到过很三次win10系统下调用sndPlaySound导致虚拟内存(分页缓冲池)泄露的情况,于是乎便尝试换个方式播放wav文件,使用zplay库进行播放,还是存在泄露。后来参照网上的教程调用waveOutWrite做了个dll库,还是存在泄露!

  目前还没有好的代码方案解决这个重复播放声音导致内存泄露的方案,希望有经验的大佬看到给个建议。

模块介绍

  PlayAudio.dll 完成将wav文件转为pcm文件,然后调用waveOutWrite进行播放。(模块的职责就是接受wav文件绝对路径,然后播放)

  PlaySound_Demo.exe调用PlayAudio.dll 播放声音。(模块的职责就是变着花样调用PlayAudio.dll)

批处理介绍

   这里简单说下我对于延迟环境变量setlocal ENABLEDELAYEDEXPANSION的理解,我们知道编译器将代码生成可执行程序的时候有个“优化”选项,有的时候存在一些变量被“优化掉”,具体表现就是没有重新计算,而是直接用的上一次的值。
   为了避免这个优化,需要用到volatile这个关键字。这个关键字告诉编译器这个变量每次都需要重新计算。批处理中的延迟环境变量和这个的道理大差不差。^ v ^

@echo off
setlocal ENABLEDELAYEDEXPANSION
echo %cd%
set ProgramName=PlaySound_Demo.exe
set FileName=%cd%\%ProgramName%

echo !FileName!
set /a sum=0
set /a ii=0
for /l %%i in (1,1,20) do (
	set /a ii+=1
	set /a sum+=ii
	start /d %cd% PlaySound_Demo.exe
	ping -n 10 127.0.0.1
	echo !ii!
)
pause

整个工程文件路径

链接: 点此下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值