致命的 Python 错误:(pygame 降落伞)使用 pygame.midi 的分段错误



我一直在pygame中播放midi文件,并不断遇到此错误。

致命的蟒蛇错误:(pygame降落伞(分段错误

Python 运行时状态:已初始化

这是我的代码:

import pygame.midi
pygame.midi.init()
device = pygame.midi.get_default_output_id()
player = pygame.midi.Output(0)

该错误被突出显示为最后一行的问题,但我不完全确定它有什么问题。

谢谢!

我认为这是 Pygame 中的一个错误,但跟踪器中似乎没有任何匹配的内容。 我可以用 PyGame 1.9.4.post1 复制这个问题。

问题的原因是调用pygame.midi.Output(),我对此进行了几次不同的调用,指定不同的参数会产生不同的错误 - 有时在呼叫中,但有时在关闭时。

这是一种解决方法,而不是解决方案 - 但您真的需要调用此函数吗? 基本的 MIDI 功能似乎可以在没有它的情况下工作。 下面的代码播放一个 MIDI 文件,然后干净地退出。

import sys
import pygame
import pygame.midi
pygame.init()
pygame.midi.init()
pygame.mixer.init()
midi_file = "popcorn.mid"
pygame.mixer.music.load( midi_file )
pygame.mixer.music.play()
device = pygame.midi.get_default_output_id()
device_info = pygame.midi.get_device_info( device )
print( "MIDI Device: " + str( device ) )
print( "Device Info: " + str( device_info ) )
#player = pygame.midi.Output( device, buffer_size=4096 )
clock = pygame.time.Clock()
while pygame.mixer.music.get_busy():
pygame.time.delay( 1500 )
print("🎜", end='')
sys.stdout.flush()   # just ensure the tick-mark is printed in-time
pygame.mixer.music.stop()
pygame.quit()

也许是PyGame的更高版本 - 甚至可能是(即将推出?SDL2 版本。

它应该是与 C 实现相关的错误。请查看以下命令是否有效:

apt-get install -y xserver-xorg

所以我面临着同样的问题,这是由于跨平台问题,就像我试图在 debian raspberri py 上使用一样,所以我所要做的就是在代码顶部必须放置它来解决这个问题。

if os.uname()[4].startswith("arm") and os.environ.get("DISPLAY", "") == "":
os.environ["SDL_VIDEODRIVER"] = "fbcon"
os.environ["SDL_FBDEV"] = "/dev/fb1"
os.environ["SDL_MOUSEDRV"] = "TSLIB"
os.environ["SDL_MOUSEDEV"] = "/dev/input/touchscreen" 

最新更新