我怎么能用pygame播放mp3?

时间:2011-10-12 20:38:04

标签: python pygame

import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()

此输出,“处理完成退出代码0”,但它不播放任何内容。我该如何解决这个问题?

9 个答案:

答案 0 :(得分:17)

播放功能开始播放音乐,但立即返回。然后你的程序到达它结束,pygame对象被自动销毁,导致音乐停止。

正如你评论的那样,如果你在退出之前等待它,它确实会播放音乐 - 因为那时pygame对象不会被销毁,直到while循环结束。

while pygame.mixer.music.get_busy(): 
    pygame.time.Clock().tick(10)

答案 1 :(得分:12)

音乐停止是因为它是一个异步事件,这意味着它将继续使用脚本。然后,脚本立即停止,而不是让音乐有机会开始。 如前所述,你可以使用

while pygame.mixer.music.get_busy(): 
  pygame.time.Clock().tick(10)

然而,更好的是pygame.event.wait(),因为它会等待所有异步事件结束。

答案 2 :(得分:6)

这是一种超级简单的方法。

IN Component

import * as jwt from 'jsonwebtoken';

var maykey = privatekey;
var token = jwt.sign({ foo: 'bar' }, maykey, { algorithm: 'RS256' });

答案 3 :(得分:2)

试试这个,

#!/usr/bin/env python
import pygame
from Tkinter import *
file = 'Your MP3 here'
root = Tk()
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
root.mainloop()

您将需要安装Tkinter,但它有望工作,您不需要手动设置时间。 如果这个工作请告诉我,我在我的电脑上测试了这个,但有时事情就是没有什么工作。如果可以,我会尽力帮助你。

答案 4 :(得分:2)

我从thepythongamebook.com找到了一个很好的解决方案:

pygame.mixer.pre_init(44100, -16, 2, 2048) # setup mixer to avoid sound lag

pygame.init()

pygame.mixer.init()

pygame.mixer.music.load('music_01.mp3')

pygame.mixer.music.play(-1)

答案 5 :(得分:1)

尝试这个。

import pygame

def pmusic(file):
    pygame.init()
    pygame.mixer.init()
    clock = pygame.time.Clock()
    pygame.mixer.music.load(file)
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        print("Playing...")
        clock.tick(1000)

def stopmusic():
    pygame.mixer.music.stop()


def getmixerargs():
    pygame.mixer.init()
    freq, size, chan = pygame.mixer.get_init()
    return freq, size, chan


def initMixer():
    BUFFER = 3072  # audio buffer size, number of samples since pygame 1.8.
    FREQ, SIZE, CHAN = getmixerargs()
    pygame.mixer.init(FREQ, SIZE, CHAN, BUFFER)

try:
    initMixer()
    file = 'C:\\data\\03.mp3'
    pmusic(file)
except KeyboardInterrupt:  # to stop playing, press "ctrl-c"
    stopmusic()
    print("\nPlay Stopped by user")
except Exception:
    print("unknown error")

print("Done")

答案 6 :(得分:0)

由于导入音频的方式,音频似乎无法播放。下面的代码按预期播放声音。此处没有任何更改,只有import pygame使用from pygame import mixer。这可能是因为Pygame是一个包,但我不确定。

from pygame import mixer

file = 'some.mp3'
mixer.init()
mixer.music.load(file)
mixer.music.play()

答案 7 :(得分:0)

您是否在终端/命令提示符中使用过pip3 install pygame

答案 8 :(得分:0)

PyGame有2个用于播放声音和音乐的模块,分别是pygame.mixer模块和pygame.mixer.music模块。该模块包含用于加载声音对象和控制播放的类。差异在文档中说明:

音乐播放和常规声音播放之间的区别在于,音乐是流式传输的,永远不会一次全部加载。混音器系统一次仅支持一个音乐流。

如果要播放 mp3 文件,则需要初始化模块。用pygame.mixer.music.load加载文件。调用pygame.mixer.music.play()以开始播放音乐流。最后,您必须等待文件播放。
使用pygame.mixer.music.get_busy()测试声音是否混合。连续循环查询调音台的状态。
在循环中,您需要将时间延迟pygame.time.delaypygame.time.Clock.tick。另外,您需要处理应用程序循环中的事件。分别参见pygame.event.get() pygame.event.pump()

对于游戏的每一帧,您都需要对事件队列进行某种调用。这样可以确保您的程序可以与操作系统的其余部分进行内部交互。

import pygame
pygame.init()

pygame.mixer.music.load('my_music.mp3')
pygame.mixer.music.play()

clock = pygame.time.Clock()
while pygame.mixer.music.get_busy():
    clock.tick(60)
    pygame.event.poll()
相关问题