pygame试图使用alsa

时间:2015-08-06 05:30:33

标签: python pygame alsa

当我尝试运行使用pygame的程序时,我得到一个缓慢的"启动"(init)(4-5s)和来自ALSA的这个错误。修复ALSA不是我的目标,我想知道为什么在我的代码中没有使用音频时它被初始化。

$ python slides.py
aaaaaaaaaa
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
bbbbbbbbbbb

这是在消息之前运行的代码" conectando ..." (对不起,如果表格中断)

#!/usr/bin/python

import pygame

[...]
         print "aaaaaaaaaa"
         pygame.init()
         print "bbbbbbbbbbb"

所以基本上我只是初始化pygame。这可能有什么问题?

如果我这样做也会发生这种情况

>>> from pygame import display, init as pyg_init
>>> pyg_init()
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default

这是导入display和init后加载的模块列表(以" pygame"开头)

pygame.transform
pygame.sndarray
pygame.numpy
pygame._arraysurfarray
pygame.fastevent
pygame.threads.traceback
pygame.version
pygame.surflock
pygame.image
pygame.color
pygame._numpysndarray
pygame.joystick
pygame.overlay
pygame.imageext
pygame.sprite
pygame.mask
pygame.threads.Queue
pygame.pygame
pygame.event
pygame.threads.sys
pygame.threads
pygame.threads.pygame
pygame.scrap
pygame.copy_reg
pygame.movie
pygame.mouse
pygame._numpysurfarray
pygame.pixelarray
pygame.surface
pygame.key
pygame.base
pygame.compat
pygame.sysfont
pygame.colordict
pygame.string
pygame.sys
pygame.re
pygame.cursors
pygame.cdrom
pygame.time
pygame.mixer
pygame.os
pygame.draw
pygame
pygame.rect
pygame.rwobject
pygame.mixer_music
pygame.constants
pygame.surfarray
pygame.threads.threading
pygame.font
pygame.bufferproxy
pygame.display

2 个答案:

答案 0 :(得分:4)

pygame.init()尝试为您初始化所有pygame模块(documentation

如果您不希望发生这种情况(在您的情况下听起来像这样),您必须初始化您想要自己使用的每个模块。每个模块都有一个init方法,您可以在使用该模块之前调用该方法。您也可以多次为每个模块调用init,没有任何副作用。

答案 1 :(得分:1)

我最近遇到过此帖子,因为我遇到了类似的问题。当我安装Pygame及其模块时(我一直在学习图形),它可以正常工作。然后我有了安装Kivy的想法,因为我一直想使用它,但是像往常一样,我无法在Ubuntu 16.04(Windows APP版本)上运行它。然后,我卸载了它及其所有依赖项。当我运行pygame脚本时,系统提示我:

$ ./timer.py
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default

这促使我安装ASLA库并尝试并遵循Wiki。修补并尝试找出问题所在之后,我慢慢发现自己因读取多个线程而发疯,直到遇到jdonalds帖子:https://raspberrypi.stackexchange.com/questions/83254/pygame-and-alsa-lib-error。他的解决方案是通过在os模块中使用 os.environ 指定其他SDL默认声音驱动程序:

import os
os.environ['SDL_AUDIODRIVER'] = 'dsp'

由于我有多个不想更改的图形脚本,因此将以下行添加到我的 .bashrc

export SDL_AUDIODRIVER='dsp'

驱动程序的可用性取决于平台和SDL编译时选项。您还可以通过以下链接了解有关SDL的常见问题的更多信息:https://wiki.libsdl.org/FAQUsingSDL