Ich versuche, eine 24-Bit-Audiodatei mit meiner AutoHotkey-Anwendung abzuspielen. Es verwendet einfach SoundPlay . Windows 7 hat kein Problem, aber Windows XP-Benutzer können die 24-Bit-Dateien nicht abspielen.
Les Dokumentation sagt:
Alle Windows-Betriebssysteme sollten .wav-Dateien abspielen können. Allerdings können andere Dateien (.mp3, .avi, usw.) sind jedoch möglicherweise nicht abspielbar sein, wenn die richtigen Codecs oder Funktionen nicht auf dem Betriebssystem installiert sind.
Mögliche Abhilfemaßnahmen, die in dem Artikel erwähnt werden Wiedergabe von 24-Bit-WAV-Dateien in Windows Media Player beheben das Problem für Windows Media Player, aber nicht für Autohotkey:
Schritt-für-Schritt-Anleitung
- Herunterladen Älterer HD-Audiofilter
- regsvr32.exe AudioTypeConvert.ax
- Abspielen der 24bit-Datei im Windows Media Player (funktioniert) und AHK (kein Ton).
- regsvr32.exe /u AudioTypeConvert.ax zum Deinstallieren
Erwartetes Verhalten: fehlerfreie Wiedergabe der Audiodatei sowohl im Windows Media Player als auch in den AutoHotkey-Apps. Tatsächliches Verhalten: Die Audiodatei wird nur im Windows Media Player fehlerfrei wiedergegeben und nicht in AutoHotkey Apps unter Windows XP.
Weitere Ermittlungen
Wie in den AutoHotKey-Foren erwähnt, verwendet SoundPlay mciSendString unter der Haube und mehr Informationen über die Art des Fehlers können durch direkten Aufruf gewonnen werden.
Bei Verwendung des alternativen DLL-Aufrufs mciSendString erhalte ich Fehlermeldung 320 das entspricht MCIERR_WAVE_OUTPUTSINUSE
Alle Wellenformgeräte, die Dateien im aktuellen Format abspielen können, sind in Gebrauch. Warten Sie, bis eines dieser Geräte frei ist, und versuchen Sie es dann erneut.
Wie kann ich 24-Bit-Audiodateien unter Windows XP in meiner AutoHotkey-Anwendung abspielen?
SoundPlay-basierte Test-App ( herunterladen )
#NoEnv
SetWorkingDir %A_ScriptDir%
FileSelectFile, f
SoundPlay, %f%
Msgbox, You should hear audio - except for 24bit wave files under Windows XP.
MCI-basierte Test-App ( herunterladen )
#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
}