我試圖用我的AutoHotkey應用程序播放24位音頻文件。它只是使用SoundPlay。 Windows 7沒有問題,但Windows XP用戶無法播放24位文件。播放24bit音頻不可能
所有Windows操作系統中應該能夠 播放.wav文件。但是,如果在OS上未安裝正確的編解碼器或功能,則其他文件 (.mp3,.avi等)可能不是 。然而卻沒有
文章 How to play 24bit WAV files in Windows Media Player中提到
可以修復被固定爲Windows Media Player的問題,AutoHotkey的:
步一步的指導
- 下載Legacy HD Audio Filter
- regsvr32.exe AudioTypeConvert.ax
- 在windows media playe中播放24位文件r(作品)和AHK(沒有聲音)。
- 的regsvr32.exe/U AudioTypeConvert.ax卸載
預期的行爲:沒有在這兩個Windows Media Player和AutoHotkey的應用程序錯誤的音頻文件playsback。 實際行爲:只在Windows Media Player中播放音頻文件沒有錯誤,並且在Windows XP下的AutoHotkey Apps中不播放。
此外調查
如SoundPlay使用罩和對誤差的性質的更多信息下mciSendString的AutoHotkey的論壇中提到可以通過直接調用它來獲得。
使用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
}
改進問題本身的想法在評論中被愉快地接受。 – svandragt 2011-05-30 11:21:37
如何改進如此完美的東西。問題中提供的詳細信息爲+1。 – 2011-05-31 01:57:00