【问题标题】:pygame audio error Unrecognized audio formatpygame音频错误无法识别的音频格式
【发布时间】:2020-06-23 21:22:46
【问题描述】:

我正在使用 pygame 2.0.0 python 3.8.2 和 ubuntu 20 打开音频文件,但我仍然收到错误

Traceback (most recent call last):
  File "/home/aryan/Desktop/test.py", line 10, in <module>
    pygame.mixer.music.load("song.mp3")
pygame.error: Unrecognized audio format

song.mp3 文件和代码在同一个目录下,这是我的代码:

import pygame, sys, time
from pygame.locals import *

pygame.init()

DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello')


pygame.mixer.music.load("song.mp3")
pygame.mixer.music.play()
time.sleep(2)
pygame.mixer.music.stop()

while True: # Main Loop

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

有谁知道我应该怎么做才能修复这个错误

一些搜索告诉我 pygame 1.9.6 可以使用音频文件有没有办法将我的 pygame 从 2.0.0 降级到 1.9.6? 谢谢你的回答

【问题讨论】:

  • Pygame.mixer 不会加载 .MP3 文件,因为许可限制。您的代码需要使用 PyGame.music() - pygame.org/docs/ref/music.html 或者您可以将它们转换为 .OGG(或 .wav 等)。我认为 MP3 的专利现在已经过期了,所以也许有一天它会再次起作用。
  • Debian 10 也有同样的问题。@Kingsley pygame.mixer.music 不能解决问题。不得不降级

标签: python python-3.x audio pygame


【解决方案1】:

在 pygame 中播放 .mp3 歌曲的更好方法是将它们转换为 .ogg.wav。有什么方法可以在代码中本地进行吗?是的,确实如此。 你必须pip install pydub

使用pydub导入AudioSegment,然后将mp3转成ogg文件。

例子:

AudioSegment.from_mp3("mymp3.mp3").export('myogg.ogg', format='ogg')

希望它有效。

【讨论】:

    【解决方案2】:

    简单易行的解决方案,将mp3文件转成ogg格式再传(ogg文件转成上面的func),一定可以的。

    【讨论】:

    • 解决方案的示例代码肯定会提高此答案的质量,请考虑将其添加到答案中。
    【解决方案3】:

    第 1 步:安装 brew,如果您已经安装了 brew,请跳到第 2 步。在此处安装 brew for Linux:https://www.how2shout.com/how-to/how-to-install-homebrew-on-linux-or-wsl.html

    第 2 步:打开终端并输入这些命令,在每个命令后按回车:

    brew deinstall all
    
    brew install hg sdl etc
    
    compile sdl_mixer
    
    pip3 install pygame
    

    这对我有用

    【讨论】:

      【解决方案4】:

      您是否尝试过使用pygame.mixer.sound(filename)

      my_song = pygame.mixer.sound(os.path.join(IMG_FOLDER, 'song.mp3'))
      my_song.play()
      

      然后你可以使用预初始化“pygame.mixer”制作:

      pygame.mixer.pre_init(44100, 16, 2, 4096) #frequency, size, channels, buffersize
      pygame.init() #turn all of pygame on. This is the line where you wrote pygame.init()
      

      在初始化其他所有内容之前预初始化混音器。将此与第一种方法结合使用。

      文档是这样说的:

      https://www.pygame.org/docs/ref/mixer.html#pygame.mixer.Sound

      从文件名、python 文件对象或可读缓冲区对象加载新的声音缓冲区。

      如果您想安装不同版本的 pygame,请使用以下步骤:

      1. pip3 uninstall pygame
      2. pip3 install "pygame==1.9.6" # 将安装版本 '1.9.6'

      这将确保安装您想要的版本。

      【讨论】:

      • 我尝试了 .sound,但我得到了这个新错误:my_song = pygame.mixer.Sound('song.mp3') pygame.error: Unable to open file 'song.mp3'
      • @aryanesmailpour 试试我刚刚添加的新方法,如果不起作用,我将删除我的答案。
      • 新方法的结果还是一样
      • 您是否尝试重新安装您要求的版本?
      • 我知道这看起来很奇怪,但是我尝试安装的所有其他 pygame 版本都收到此错误错误:命令错误退出状态为 1:所以我可以使用的唯一版本是 pygame 2.0。 0.dev6 我也搜索过这个问题,唯一的答案是使用 pygame 2.0.0
      【解决方案5】:

      我将一个类似的 PyCharm 项目从 Windows 迁移到 Ubuntu 20.04,它并没有重现声音,我只是将 Python 解释器从 3.9 更改为 3.8,它工作得很好,它可以重现所有音频格式,值得一提的是,原来的项目有 python 3.9 作为一个 Python 解释器。

      【讨论】:

        【解决方案6】:

        另一种解决方案是使用 audioplayer 包。它提供了 pygame 的所有功能,并且支持 .mp3、.ogg 等格式。

        from audioplayer import AudioPlayer
        
        player = AudioPlayer("demo.mp3")
        
        player.play()
        
        player.stop() 
        
        player.pause()
        player.unpause()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-20
          • 2013-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多