我正在尝试使用AutoHotkey应用播放24位音频文件。它只使用SoundPlay。 Windows 7没有问题,但Windows XP用户无法播放24位文件。
所有Windows操作系统都应该能够 播放.wav文件。但是,其他文件 (.mp3,.avi等)可能不是 如果正确的编解码器或 操作系统上未安装功能。
文章How to play 24bit WAV files in Windows Media Player中提到的可能修复方法正在解决Windows Media Player的问题,但不适用于自动密钥:
分步指南
预期行为:Windows Media Player和AutoHotkey应用程序中的音频文件回放没有错误。 实际情况:仅在Windows Media Player中播放没有错误的音频文件,并且不在Windows XP下的AutoHotkey应用程序中播放。
进一步调查
正如AutoHotKey论坛中提到的,SoundPlay正在使用mciSendString,并且可以通过直接调用来获取有关错误性质的更多信息。
使用mciSendString替代DLL调用我得到error message 320,对应MCIERR_WAVE_OUTPUTSINUSE
所有可以播放当前格式文件的波形设备都在使用中。等到其中一个设备空闲;然后,再试一次。
如何在AutoHotkey应用程序中播放Windows XP中的24位音频文件?
基于SoundPlay的测试应用(download)
#NoEnv
SetWorkingDir %A_ScriptDir%
FileSelectFile, f
SoundPlay, %f%
Msgbox, You should hear audio - except for 24bit wave files under Windows XP.
基于MCI的测试应用(download)
#NoEnv
SetWorkingDir %A_ScriptDir%
FileSelectFile, f
TryPlaySound(f)
Msgbox, You should hear audio - except for 24bit wave files under Windows XP.
; If SoundPlay does not work TryPlaySound
TryPlaySound( mFile )
{
; SKAN www.autohotkey.com/forum/viewtopic.php?p=361791#361791
VarSetCapacity( DN,16 ), DLLFunc := "winmm.dll\mciSendString" ( A_IsUnicode ? "W" : "A" )
DN := DllCall(DLLFunc, Str, "play " """" mFile """" "", Uint, 0, Uint, 0, Uint, 0)
Return DN
}
答案 0 :(得分:1)
我会将24位文件转换为16位文件,如果这完全可行的话。