2011-05-17 23 views
10

Estoy tratando de reproducir un archivo de audio de 24 bits con mi aplicación AutoHotkey. Solo usa SoundPlay. Windows 7 no tiene ningún problema, sin embargo, los usuarios de Windows XP no pueden reproducir los archivos de 24 bits.Reproducción de audio de 24 bits no posible

El documentation dice:

Todos los sistemas operativos de Windows debe ser capaz de reproducir archivos .wav . Sin embargo, otros archivos (.mp3, .avi, etc.) pueden no ser reproducibles si los códecs correctos o las características no están instalados en el sistema operativo.

correcciones

posibles mencionados en el artículo How to play 24bit WAV files in Windows Media Player están arreglando el problema para Reproductor de Windows Media, sin embargo, pero no para autohotkey:

Paso a paso guía

  1. Descargar Legacy HD Audio Filter
  2. regsvr32.exe AudioTypeConvert.ax
  3. Reproducir archivo de 24 bits en windows media playe r (funciona) y AHK (sin sonido).
  4. regsvr32.exe/u AudioTypeConvert.ax desinstalar

comportamiento esperado: playsback archivo de audio sin errores en Windows Media Player y AutoHotkey Aplicaciones. Comportamiento real: reproducción de archivos de audio sin errores solo en el Reproductor de Windows Media y no se reproduce en las aplicaciones de AutoHotkey bajo Windows XP.

Investigación Adicional

Como se mencionó en los foros AutoHotKey SoundPlay está utilizando mciSendString bajo el capó y más información sobre la naturaleza del error se puede ganar llamando directamente.

El uso de la llamada DLL alternativa mciSendString consigo error message 320 que corresponde a MCIERR_WAVE_OUTPUTSINUSE

Todos los dispositivos de forma de onda que pueden reproducir archivos en el formato actual están en uso. Espere hasta que uno de estos dispositivos sea gratuito; vuelva a intentarlo.

¿Cómo reproduzco los archivos de audio de 24 bits en Windows XP en mi aplicación AutoHotkey?

aplicación de prueba basada SoundPlay (download)

#NoEnv 
SetWorkingDir %A_ScriptDir% 
FileSelectFile, f 
SoundPlay, %f% 
Msgbox, You should hear audio - except for 24bit wave files under Windows XP. 

aplicación de prueba basada 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 
} 
+0

Las ideas para mejorar la pregunta en sí son aceptadas felizmente en los comentarios. – svandragt

+0

Cómo mejorar algo que es tan perfecto. +1 para los detalles proporcionados en cuestión. –

Respuesta

1

Me gustaría convertir el archivo de 24 bits a un archivo de 16 bits , si eso es del todo factible.

+0

En este caso, no tengo ningún control sobre los archivos. Supongo que la única solución es llamar a un DLL de terceros como Bass para hacer la reproducción. – svandragt

+0

Si fuera yo, verificaría el encabezado del archivo para 24 bits y haría una copia temporal de 16 bits y jugaría eso antes de insertar otra DLL, pero soy de la vieja escuela. –

Cuestiones relacionadas