AutoHotkey アプリで 24 ビット オーディオ ファイルを再生しようとしています。それは単にSoundPlayを使用します。Windows 7 では問題ありませんが、Windows XP ユーザーは 24 ビット ファイルを再生できません。
ドキュメントには次のように記載されています。
すべての Windows OS で .wav ファイルを再生できる必要があります。ただし、適切なコーデックまたは機能が OS にインストールされていない場合、他のファイル (.mp3、.avi など) は再生できない場合があります。
Windows Media Player で 24 ビット WAV ファイルを再生する方法の記事に記載されている可能な修正は、Windows Media Playerの問題を修正していますが、autohotkey の問題は修正していません。
ステップバイステップガイド
- レガシー HD オーディオ フィルタをダウンロード
- regsvr32.exe AudioTypeConvert.ax
- Windows Media Player (動作) および AHK (音なし) で 24 ビット ファイルを再生します。
- アンインストールする regsvr32.exe /u AudioTypeConvert.ax
予想される動作: Windows Media Player と AutoHotkey アプリの両方で、オーディオ ファイルがエラーなしで再生されます。実際の動作: Windows Media Player でのみオーディオ ファイルがエラーなしで再生され、Windows XP の AutoHotkey アプリでは再生されません。
さらなる調査
AutoHotKey フォーラムで述べたように、SoundPlay は内部でmciSendStringを使用しており、直接呼び出すことでエラーの性質に関する詳細情報を得ることができます。
mciSendString 代替 DLL 呼び出しを使用すると、MCIERR_WAVE_OUTPUTSINUSEに対応するエラー メッセージ 320が表示されます
現在の形式でファイルを再生できるすべての波形デバイスが使用されています。これらのデバイスのいずれかが解放されるまで待ちます。その後、再試行してください。
AutoHotkey アプリで Windows XP の 24 ビット オーディオ ファイルを再生するにはどうすればよいですか?
SoundPlay ベースのテスト アプリ(ダウンロード)
#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.dll\mciSendString" ( A_IsUnicode ? "W" : "A" )
DN := DllCall(DLLFunc, Str, "play " """" mFile """" "", Uint, 0, Uint, 0, Uint, 0)
Return DN
}