Воспроизведение 24-битного звука невозможно

Я пытаюсь воспроизвести 24-битный аудиофайл с помощью своего приложения AutoHotkey. Он просто использует SoundPlay . Windows 7 не имеет проблем, однако пользователи Windows XP не могут воспроизводить 24-битные файлы.

В документации сказано:

Все ОС Windows должны иметь возможность

Я пытаюсь воспроизвести 24-битный аудиофайл с помощью приложения AutoHotkey. Он просто использует SoundPlay . Windows 7 не имеет проблем, однако пользователи Windows XP не могут воспроизводить 24-битные файлы.

В документации сказано:

Все ОС Windows должны иметь возможность

Я пытаюсь воспроизвести 24-битный аудиофайл с помощью приложения AutoHotkey. Он просто использует SoundPlay . Windows 7 не имеет проблем, однако пользователи Windows XP не могут воспроизводить 24-битные файлы.

В документации сказано:

Все ОС Windows должны иметь возможность воспроизводить файлы .wav. Однако другие файлы (.mp3, .avi и т. д.) могут не поддерживаться воспроизводится, если правильные кодеки или функции не установлены в ОС.

Возможные исправления, упомянутые в статье Как воспроизводить 24-битные файлы WAV в Windows Media Player , устраняют проблему для Windows Media Player, но не для autohotkey:

Пошаговое руководство

  1. Загрузить Устаревший аудиофильтр HD
  2. regsvr32.exe AudioTypeConvert.ax
  3. Воспроизвести 24-битный файл в проигрывателе Windows Media (работает) и AHK (без звука).
  4. regsvr32.exe / u AudioTypeConvert.ax для удаления

Ожидаемое поведение: аудиофайл воспроизводится без ошибок как в проигрывателе Windows Media, так и в приложениях AutoHotkey. Фактическое поведение: аудиофайл воспроизводится без ошибок только в проигрывателе Windows Media и не воспроизводится в приложениях AutoHotkey под Windows XP.

Дальнейшее исследование

Как упоминалось на форумах AutoHotKey, SoundPlay использует mciSendString под hood и дополнительную информацию о природе ошибки можно получить, вызвав ее напрямую.

Используя альтернативный вызов DLL mciSendString, я получаю сообщение об ошибке 320 , которое соответствует MCIERR_WAVE_OUTPUTSINUSE

Все устройства сигналов, которые могут воспроизводить файлы в текущем формате, используются. Подождите, пока одно из этих устройств освободится; затем попробуйте еще раз.

Как воспроизвести 24-битные аудиофайлы в Windows XP в моем приложении AutoHotkey?

Тестовое приложение на основе SoundPlay ( загрузить )

#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
}

10
задан svandragt 29 November 2016 в 10:19
поделиться