爱体育

 
 加入
查看: 204|回复: 8

关于播放wav声音文件的问题-爱体育

  [复制链接]
发表于 2023-9-11 09:47:36 | 显示全部楼层 |
1.本意想给脚本添加给背景音乐,我的思路是先将声音文件释放到系统的temp目录然后调用播放,但是运行后没看到有文件释放。试了两种代码如下:

  1. ;播放背景音乐
  2. fileinstall('genbg.wav',@tempdir&'\bgmusic.wav',1)
  3. soundplay(@tempdir& "\bgmusic.wav")
复制代码
  1. fileinstall("bgmusic.wav", @windowsdir & "\temp\bgmusic.wav")
  2. soundplay(@windowsdir & "\temp\bgmusic.wav")
复制代码

2.这里怀疑是系统目录写入权限的问题,决定先将音频文件释放到软件同目录下再试还是不能播放:
  1. fileinstall("bgmusic.wav", @scriptdir & "\bgmusic.wav")
  2. soundplay(@scriptdir&"\bgmusic.wav")
复制代码


3.我用其他类型的文件测试打包是可以成功释放文件的:

  1. fileinstall("test.txt", @scriptdir & "\test.txt")
  2. soundplay(@scriptdir&"\test.txt")
复制代码
请教各位前辈我这是哪里出错了?
发表于 2023-9-11 15:02:35 | 显示全部楼层
本帖最后由 风过无痕 于 2023-9-11 15:35 编辑

跟释放貌似没关系,我这边能正常释放(win10 ltsc2019),感觉跟wav文件有关系。
现在的问题是有的wav能播放,有的wav文件好像播放不了,用帮助里面的示例稍微修改了下,播放了当前目录下的wav文件,一个能播放一个不能播放,但是会有错误代码,你可以试试看
  1. #include
  2. #include
  3. local $asound = _soundopen(@scriptdir &"\woofer.wav")
  4. if @error = 2 then
  5.     msgbox($mb_systemmodal, "错误", "该文件不存在")
  6.     exit
  7. elseif @extended <> 0 then
  8.     local $iextended = @extended ; 声明保存 dllstructcreate() 之后将为 @extended 赋值的变量.
  9.     local $ttext = dllstructcreate("char[128]")
  10.     dllcall("winmm.dll", "short", "mcigeterrorstringa", "str", $iextended, "struct*", $ttext, "int", 128)
  11.     msgbox($mb_systemmodal, "错误", "打开文件失败." & @crlf & "错误号码: " & $iextended & @crlf & "错误描述: " & dllstructgetdata($ttext, 1) & @crlf & "请注意: 声音文件仍然可以正常播放.")
  12. else
  13.     msgbox($mb_systemmodal, "成功", "成功打开该文件")
  14. endif
  15. _soundplay($asound, 1)
  16. _soundclose($asound)
复制代码

发表于 2023-9-11 21:59:49 | 显示全部楼层
可否看看位元速率 看能撥的跟不能撥的是差在哪? 可以的話試試 128k的看看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2023-9-11 23:57:20 | 显示全部楼层
  1. if not fileexists(@tempdir) then dircreate(@tempdir)
  2. fileinstall('genbg.wav',@tempdir&'\bgmusic.wav',1)
  3. soundplay(@tempdir& "\bgmusic.wav")
  4. sleep(5000)
复制代码
 楼主| 发表于 2023-9-13 18:05:39 | 显示全部楼层

还是不行,文件没释放成功就没法调用播放
 楼主| 发表于 2023-9-13 18:06:50 | 显示全部楼层

可否看看位元速率 看能撥的跟不能撥的是差在哪? 可以的話試試 128k的看看

wav文件没问题,我用mp3格式的文件也试过不行,就是文件没释放到系统temp缓存目录
 楼主| 发表于 2023-9-13 18:07:44 | 显示全部楼层

跟释放貌似没关系,我这边能正常释放(win10 ltsc2019),感觉跟wav文件有关系。
现在的问题是有的wav能播放 ...

现在是文件无法释放到temp目录,如果调用同目录文件播放是没问题的
发表于 2023-9-13 18:19:22 来自手机 | 显示全部楼层
没释放,那就是被其他软件拦截了,比如系统的杀毒软件或者第三方杀毒软件。
发表于 2023-9-13 19:20:03 | 显示全部楼层

现在是文件无法释放到temp目录,如果调用同目录文件播放是没问题的
  1. #requireadmin
  2. fileinstall(".\soundtest.wav",@tempdir & "\soundtest.wav",1)
  3. soundplay(@tempdir & "\soundtest.wav",1)
复制代码

这样试试
fileinstall第一个参数要么是相对路径,要么是绝对路径,这样试试看看行不行?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

||小黑屋|爱体育 ( ) "));

gmt 8, 2023-12-7 01:02 , processed in 0.099596 second(s), 21 queries .

powered by x3.5

© 2001-2023 .

返回列表
网站地图