당신은 예를 들어, ALSA 구성을 정리하기 위해 시도 할 수
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
은 /usr/share/alsa/alsa.conf
에 의해 발생 :
pcm.rear cards.pcm.rear
pcm.center_lfe cards.pcm.center_lfe
pcm.side cards.pcm.side
당신이이 줄을 주석되면
은 그 오류 메시지가 사라질 것입니다.
~/.asoundrc
및
/etc/asound.conf
도 확인하십시오.
그렇다면 실제 문제는 발생하지 않지만 구성에 문제가 있다는 메시지가 표시되는 경우가 있습니다. alsa.conf
은 원래 ALSA에 있었기 때문에 정리하지 않는 것이 좋습니다. alsa-lib를 업데이트하면 덮어 쓸 수 있습니다.
파이썬에서 메시지를 표시 할 수있는 방법이 여기에 샘플 코드입니다 :
#!/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()
내 컴퓨터에서 출력 : 그 메시지는 ALSA-lib 디렉토리에 의해 인쇄
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
, PyAudio 또는 PortAudio가 아닙니다. 이 코드는 alsa-lib snd_lib_error_set_handler
함수를 직접 사용하여 오류 처리기 py_error_handler
을 설정합니다.이 핸들러를 사용하여 메시지를 삭제할 수 있습니다.
다른 Python ALSA 바인딩 pyalsa 및 PyAlsaAudio를 검사했지만 오류 처리기 설정을 지원하지 않습니다. 그러나 PortAudio에는 an issue이 있으며 이전에 모든 ALSA 오류 메시지가 표시되지 않는 것 같습니다.
이 메시지는 JACK의 메시지를 삭제하지 않습니다. – Matthias