无法播放24位音频

时间:2011-05-17 14:59:25

标签: windows-xp audio autohotkey codec mci

我正在尝试使用AutoHotkey应用播放24位音频文件。它只使用SoundPlay。 Windows 7没有问题,但Windows XP用户无法播放24位文件。

documentation说:

  

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

文章How to play 24bit WAV files in Windows Media Player中提到的可能修复方法正在解决Windows Media Player的问题,但不适用于自动密钥:

分步指南

  1. 下载Legacy HD Audio Filter
  2. regsvr32.exe AudioTypeConvert.ax
  3. 在Windows媒体播放器(有效)和AHK(无声)中播放24位文件。
  4. regsvr32.exe / u要卸载的AudioTypeConvert.ax
  5. 预期行为: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
    }
    

1 个答案:

答案 0 :(得分:1)

我会将24位文件转换为16位文件,如果这完全可行的话。