lonkystar 发表于 2023-9-11 09:47:36

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

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")
    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)

yohoboy 发表于 2023-9-11 21:59:49

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

gyp2000 发表于 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)

lonkystar 发表于 2023-9-13 18:05:39

gyp2000 发表于 2023-9-11 23:57


还是不行,文件没释放成功就没法调用播放

lonkystar 发表于 2023-9-13 18:06:50

yohoboy 发表于 2023-9-11 21:59
可否看看位元速率 看能撥的跟不能撥的是差在哪? 可以的話試試 128k的看看

wav文件没问题,我用mp3格式的文件也试过不行,就是文件没释放到系统temp缓存目录

lonkystar 发表于 2023-9-13 18:07:44

风过无痕 发表于 2023-9-11 15:02
跟释放貌似没关系,我这边能正常释放(Win10 LTSC2019),感觉跟wav文件有关系。
现在的问题是有的wav能播放 ...

现在是文件无法释放到temp目录,如果调用同目录文件播放是没问题的

gyp2000 发表于 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第一个参数要么是相对路径,要么是绝对路径,这样试试看看行不行?
页: [1]
查看完整版本: 关于播放wav声音文件的问题