找回密码
 加入
搜索
查看: 333|回复: 8

关于播放wav声音文件的问题

  [复制链接]
发表于 2023-9-11 09:47:36 | 显示全部楼层 |阅读模式
1.本意想给脚本添加给背景音乐,我的思路是先将声音文件释放到系统的temp目录然后调用播放,但是运行后没看到有文件释放。试了两种代码如下:
;播放背景音乐
FileInstall('genbg.wav',@TempDir&'\bgmusic.wav',1)
SoundPlay(@TempDir& "\bgmusic.wav")
FileInstall("bgmusic.wav", @WindowsDir & "\temp\bgmusic.wav")
SoundPlay(@WindowsDir & "\temp\bgmusic.wav")
2.这里怀疑是系统目录写入权限的问题,决定先将音频文件释放到软件同目录下再试还是不能播放:
FileInstall("bgmusic.wav", @ScriptDir & "\bgmusic.wav")
SoundPlay(@ScriptDir&"\bgmusic.wav")

3.我用其他类型的文件测试打包是可以成功释放文件的:
FileInstall("test.txt", @ScriptDir & "\test.txt")
SoundPlay(@ScriptDir&"\test.txt")
请教各位前辈我这是哪里出错了?
发表于 2023-9-11 15:02:35 | 显示全部楼层
本帖最后由 风过无痕 于 2023-9-11 15:35 编辑

跟释放貌似没关系,我这边能正常释放(Win10 LTSC2019),感觉跟wav文件有关系。
现在的问题是有的wav能播放,有的wav文件好像播放不了,用帮助里面的示例稍微修改了下,播放了当前目录下的wav文件,一个能播放一个不能播放,但是会有错误代码,你可以试试看
#include <MsgBoxConstants.au3>
#include <Sound.au3>
Local $aSound = _SoundOpen(@ScriptDir &"\woofer.wav")
If @error = 2 Then
    MsgBox($MB_SYSTEMMODAL, "错误", "该文件不存在")
    Exit
ElseIf @extended <> 0 Then
    Local $iExtended = @extended ; 声明保存 DllStructCreate() 之后将为 @extended 赋值的变量.
    Local $tText = DllStructCreate("char[128]")
    DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $iExtended, "struct*", $tText, "int", 128)
    MsgBox($MB_SYSTEMMODAL, "错误", "打开文件失败." & @CRLF & "错误号码: " & $iExtended & @CRLF & "错误描述: " & DllStructGetData($tText, 1) & @CRLF & "请注意: 声音文件仍然可以正常播放.")
Else
    MsgBox($MB_SYSTEMMODAL, "成功", "成功打开该文件")
EndIf
_SoundPlay($aSound, 1)
_SoundClose($aSound)
发表于 2023-9-11 21:59:49 | 显示全部楼层
可否看看位元速率 看能撥的跟不能撥的是差在哪? 可以的話試試 128k的看看

本帖子中包含更多资源

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

×
发表于 2023-9-11 23:57:20 | 显示全部楼层
If Not FileExists(@TempDir) Then DirCreate(@TempDir)
FileInstall('genbg.wav',@TempDir&'\bgmusic.wav',1)
SoundPlay(@TempDir& "\bgmusic.wav")
Sleep(5000)
 楼主| 发表于 2023-9-13 18:05:39 | 显示全部楼层

还是不行,文件没释放成功就没法调用播放
 楼主| 发表于 2023-9-13 18:06:50 | 显示全部楼层
yohoboy 发表于 2023-9-11 21:59
可否看看位元速率 看能撥的跟不能撥的是差在哪? 可以的話試試 128k的看看

wav文件没问题,我用mp3格式的文件也试过不行,就是文件没释放到系统temp缓存目录
 楼主| 发表于 2023-9-13 18:07:44 | 显示全部楼层
风过无痕 发表于 2023-9-11 15:02
跟释放貌似没关系,我这边能正常释放(Win10 LTSC2019),感觉跟wav文件有关系。
现在的问题是有的wav能播放 ...

现在是文件无法释放到temp目录,如果调用同目录文件播放是没问题的
发表于 2023-9-13 18:19:22 来自手机 | 显示全部楼层
没释放,那就是被其他软件拦截了,比如系统的杀毒软件或者第三方杀毒软件。
发表于 2023-9-13 19:20:03 | 显示全部楼层
lonkystar 发表于 2023-9-13 18:07
现在是文件无法释放到temp目录,如果调用同目录文件播放是没问题的
#RequireAdmin
FileInstall(".\SoundTest.wav",@TempDir & "\SoundTest.wav",1)
SoundPlay(@TempDir & "\SoundTest.wav",1)
这样试试
fileinstall第一个参数要么是相对路径,要么是绝对路径,这样试试看看行不行?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 06:35 , Processed in 0.080536 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表