Usted puede tratar de limpiar su configuración de ALSA, por ejemplo,
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
son causados por /usr/share/alsa/alsa.conf
:
pcm.rear cards.pcm.rear
pcm.center_lfe cards.pcm.center_lfe
pcm.side cards.pcm.side
Una vez que comentar estas líneas, los mensaje de error habrá desaparecido. También es posible que desee comprobar ~/.asoundrc
y /etc/asound.conf
.
Dicho eso, algunos de esos mensajes dicen que algo está mal en su configuración, aunque no causan ningún problema real. No recomiendo que limpie el alsa.conf
, porque originalmente es de ALSA, puede sobrescribirse cuando actualiza alsa-lib.
Hay una manera de suprimir el mensaje en Python, aquí es un ejemplo de código:
#!/usr/bin/env python
from ctypes import *
import pyaudio
# From alsa-lib Git 3fd4ab9be0db7c7430ebd258f2717a976381715d
# $ grep -rn snd_lib_error_handler_t
# include/error.h:59:typedef void (*snd_lib_error_handler_t)(const char *file, int line, const char *function, int err, const char *fmt, ...) /* __attribute__ ((format (printf, 5, 6))) */;
# Define our error handler type
ERROR_HANDLER_FUNC = CFUNCTYPE(None, c_char_p, c_int, c_char_p, c_int, c_char_p)
def py_error_handler(filename, line, function, err, fmt):
print 'messages are yummy'
c_error_handler = ERROR_HANDLER_FUNC(py_error_handler)
asound = cdll.LoadLibrary('libasound.so')
# Set error handler
asound.snd_lib_error_set_handler(c_error_handler)
# Initialize PyAudio
p = pyaudio.PyAudio()
p.terminate()
print '-'*40
# Reset to default error handler
asound.snd_lib_error_set_handler(None)
# Re-initialize
p = pyaudio.PyAudio()
p.terminate()
Una salida de mi ordenador:
messages are yummy
messages are yummy
messages are yummy
messages are yummy
messages are yummy
messages are yummy
----------------------------------------
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Esos mensajes se imprimen por alsa-lib , no PyAudio o PortAudio. El código utiliza directamente la función alsa-lib snd_lib_error_set_handler
para establecer un controlador de errores py_error_handler
, que puede usar para eliminar cualquier mensaje.
He comprobado otros enlaces ALSA de Python, pyalsa y PyAlsaAudio, no son compatibles con el controlador de errores de configuración. Sin embargo, hay an issue en PortAudio, todos los mensajes de error ALSA parecían suprimirse antes.
Esto no elimina los mensajes de JACK, ¿verdad? – Matthias