Windows XP - 无法播放 24 位音频



我正在尝试使用我的自动热键应用程序播放24位音频文件。它只使用声音播放。Windows 7没有问题,但是Windows XP用户无法播放24位文件。

文档说:

所有Windows操作系统都应该能够 播放.wav文件。但是,其他文件 (.mp3、.avi等)可能不是 如果编解码器正确,则可播放,或者 操作系统上未安装功能。

文章 如何在Windows Media Player

中播放24位WAV文件中提到的可能修复程序正在修复Windows Media Player的问题,但不能解决Autohotkey的问题:

分步指南

  1. 下载旧版高清音频过滤器
  2. Regsvr32.exe AudioTypeConvert.ax
  3. 在Windows Media Player(作品)和AHK(无声音)中播放24位文件。
  4. 要卸载的 regsvr32.exe/u AudioTypeConvert.ax

预期行为:音频文件在Windows 媒体播放器和自动热键应用中播放且没有错误。实际行为:音频文件仅在Windows Media Player中播放而没有错误,并且在Windows XP下的AutoHotkey应用程序中不播放。

进一步调查

正如在AutoHotKey论坛中提到的,SoundPlay在引擎盖下使用了mciSendString,可以通过直接调用它来获得有关错误性质的更多信息。

使用 mciSendString 替代 DLL 调用,我收到对应于MCIERR_WAVE_OUTPUTSINUSE的错误消息 320

所有可以播放当前格式文件的波形设备都在使用中。等到这些设备之一空闲;然后,再试一次。

如何在我的自动热键应用程序中播放 Windows XP 中的 24 位音频文件?

基于声音播放的测试应用程序(下载)

#NoEnv 
SetWorkingDir %A_ScriptDir%
FileSelectFile, f
SoundPlay, %f%
Msgbox, You should hear audio - except for 24bit wave files under Windows XP.

基于 MCI 的测试应用程序(下载)

#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.dllmciSendString" ( A_IsUnicode ? "W" : "A" )
    DN := DllCall(DLLFunc, Str, "play " """" mFile """" "", Uint, 0, Uint, 0, Uint, 0)
    Return DN
}
如果

可行的话,我会将 24 位文件转换为 16 位文件。

最新更新