栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PyAudio工作正常,但每次都会吐出错误消息

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PyAudio工作正常,但每次都会吐出错误消息

您可以尝试清理ALSA配置,例如,

ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rearALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfeALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side

是由于

/usr/share/alsa/alsa.conf

pcm.rear cards.pcm.rearpcm.center_lfe cards.pcm.center_lfepcm.side cards.pcm.side

一旦您注释掉这些行,那些错误消息就会消失。您可能还需要检查

~/.asoundrc
/etc/asound.conf

就是说,其中一些消息表明您的配置有问题,尽管它们并没有引起任何实际问题。我不建议您清理

alsa.conf
,因为它最初来自ALSA,所以在更新alsa-
lib时可能会覆盖它。

在Python中有一种抑制消息的方法,下面是一个示例代码:

#!/usr/bin/env pythonfrom 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, ...) ;# Define our error handler typeERROR_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 handlerasound.snd_lib_error_set_handler(c_error_handler)# Initialize PyAudiop = pyaudio.PyAudio()p.terminate()print '-'*40# Reset to default error handlerasound.snd_lib_error_set_handler(None)# Re-initializep = pyaudio.PyAudio()p.terminate()

我计算机的输出:

messages are yummymessages are yummymessages are yummymessages are yummymessages are yummymessages are yummy----------------------------------------ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slaveALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rearALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfeALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.sideALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback streamALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave

这些消息是通过alsa-lib而不是PyAudio或PortAudio打印的。该代码直接使用alsa-
lib

snd_lib_error_set_handler
函数设置一个错误处理程序
py_error_handler
,您可以使用它删除任何消息。

我检查了其他Python
ALSA绑定,pyalsa和PyAlsaAudio,它们不支持设置错误处理程序。但是,PortAudio上存在问题,以前似乎所有ALSA错误消息都已被抑制。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647852.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号