2012-06-17 4 views
0

Я использую код:PyGame MP3 не будет играть

import pygame, sys, datetime 
from pygame.locals import * 
pygame.init() 
screen = pygame.display.set_mode((640, 480)) 
screen.fill((0, 0, 0, 255)) 
pygame.display.set_caption("TESTIFICATE") 
if datetime.date.today().month == 12 and datetime.date.today().day == 25: 
    pygame.mixer.music.load("8bit-jingle-twist.mp3") 
    print("Merry Christmas!") 
else: 
    pygame.mixer.music.load("timeless-mountains.mp3") 
print("Loading Music...") 
pygame.mixer.music.play(-1, 0.0) 
print("Playing Background Music...") 
while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
    pygame.display.update() 

Оба 8bit-jingle-twist.mp3 и timeless-mountains.mp3 существуют и могут быть воспроизведены с помощью VLC. Мой том : на, как и мое замешательство.

+0

Пробовал только сейчас; без изменений –

+0

Я мог бы предложить использовать простой миксер. Звук для воспроизведения музыки. Он работает так же хорошо. Также рассмотрите возможность игры с pygame.mixer.pre_init. – imallett

+0

Вызывает ли программа какое-либо исключение или просто не воспроизводит звук? –

ответ

0

Вы уверены, что искали их в правильном каталоге?

Попробуйте указать полный путь, т.е. "c:/programs/mygame/music/8bit-jingle-twist.mp3"

+0

Это не сработало, но спасибо в любом случае. Просто черное окно, но звука нет ... отключить звук ... –

0

Очень странно, я просто скопировал свой код и просто изменил аудио файлы на те, которые я имел, и он работал прекрасно.

Я думаю, поэтому он имеет какое-то отношение к самим файлам.

Возможно, как указал Хью Ботвелл, путь к файлу. В этом случае вы могли бы сделать три вещи:

Используйте весь путь к файлу:

pygame.mixer.music.load("C:/blah/blah/blah/8bit-jingle-twist.mp3")

Использовать не путь к файлу (Файл должен затем быть в той же папке, что и программа)

pygame.mixer.music.load("8bit-jingle-twist.mp3")

Или используйте скачок одной папки, где у вас есть папка в той же папке, что и ваша программа. Так, например, у вас есть ваша программа в «Мои документы», затем вы создаете другую папку под названием «Музыка для Pygame» внутри «Мои документы». Тогда код будет:

pygame.mixer.music.load("Music for Pygame/8bit-jingle-twist.mp3")

Я в основном использовать последний вариант, так что вы можете хранить ваши файлы организованы, имея папку для музыки, папка для изображений и т.д., и программа будет по-прежнему работать если вы переместили папку, в которой она была.

Конечно, это может быть и сам аудиофайл. Убедитесь, что это действительно .mp3 и что он отлично работает (VLC слишком крут и может играть все, попробуйте воспроизвести его на Windows-носителе или что-то на всякий случай)

Также, если вы используете ОС Windows 7, попробуйте запустить его как администратор, и это может решить проблему.

(Я побежал код на Windows XP и все работало нормально только сейчас)

+0

Я пробовал все 3 варианта пути, и я _may_ нашел проблему; В Windows это 'C: \ path \ file.mp3' то же самое, что и' C:/path/file.mp3'? Кроме того, как запустить скрипт python в качестве администратора? Я использую sudo ... –

+0

Я использую либо 'C:/path/file.mp3', либо' C: \\ path \\ file.mp3'. поскольку '\' может вызвать проблемы. Что касается работы с администратором, я не уверен. Я думаю, что это был бы другой вопрос, и, возможно, его уже спросили, осмотритесь и посмотрите, что вы можете найти. – hammythepig

+0

Я использую forward-slash. Я вернусь к вам в административной части ... –

0

На странице Pygame музыки: «Имейте в виду, что поддержка MP3 ограничена На некоторых системах неподдерживаемый формат может привести к сбою программы. например, Debian Linux. Вместо этого используйте OGG ».
Попробуйте использовать онлайн конвертер, как http://media.io/

+0

, но mp3 должен работать на win7-64, правильно? –

0

НОВЫЙ ОТВЕТ:

если вы сохранили свой mp3 файл как «filename.mp3», и вы записали расширение .mp3 файла самостоятельно, то имя файла в pygame's pygame.mixer.music.load() функция должна быть записана как 'filename.mp3.mp3', потому что python ожидает, что вы добавите .mp3. Иногда.mp3 уже включен в имя файла, если вы его вручную сохранили.

Поэтому, попробуйте следующее: pygame.mixer.music.load('filename.mp3.mp3')