2017-08-27 6 views
0

Ich arbeite an einer Anwendung, die mp3-Dateien mit Python 3.5.2 in IDLE mit pygame 1.9.3 läuft. Das Problem ist, dass einige mp3-Dateien korrekt abgespielt werden und andere nicht überhaupt spielen.Pygame kann einige mp3-Dateien nicht wiedergeben, aber keine anderen

Prüfregeln verwendet, um das Problem zu bewerten:

import pygame 
from pygame import mixer 
from pygame.locals import * 
pygame.init() 
mixer.init() 
mixer.music.load('good.mp3') 
mixer.music.play() 
u = input('Good file') 
mixer.music.load('bad.mp3') 
mixer.music.play() 
u = input('Bad file') 

Die Datei ‚gut‘ markiert spielt richtig, während die eine ‚schlechte‘ labled nicht. Beide Dateien befinden sich im selben Verzeichnis; beide Dateien spielen mit einem Musikplayer; und beide Dateien arbeiten mit Python 3.4 und Pygame auf einem Windows 7-Rechner.

Antwort

0

Pygame hatte noch nie eine gute MP3-Unterstützung. Laut der Dokumentation: "Beachten Sie, dass die MP3-Unterstützung begrenzt ist. Auf einigen Systemen kann ein nicht unterstütztes Format das Programm zum Absturz bringen, z. B. Debian Linux. Verwenden Sie stattdessen OGG."

http://www.pygame.org/docs/ref/music.html

FWIW, habe ich hatte nie ein Problem mit OGG-Dateien, und es ist ziemlich einfach mit ffmpeg oder einem Online-Konverter zu konvertieren.

+0

Leider ist das keine praktische Lösung für diese Anwendung. – user7823241

+0

Aber mit dieser Methode löst das Problem nicht? Es wäre dann eine Lösung, wenn auch nicht die optimale Lösung? https://stackoverflow.com/questions/5464912/simple-way-to-transcode-mp3-to-ogg-in-python-live – srattigan

0

Es kann ein Problem mit der Pygame-Unterstützung von MP3 sein. Können Sie versuchen, die VLC module?

>>> import vlc 
>>> p = vlc.MediaPlayer("bad.mp3") 
>>> p.play() 

Wenn das nicht funktioniert, können Sie versuchen, MP3-Umwandlung -> wav -> mp3 keine Codierung Probleme zu beheben, die für pygame problematisch sein kann. Wie von Chris vorgeschlagen, ist ffmpeg der einfachste Weg zu kodieren.

$ ffmpeg -i bad.mp3 -acodec pcm_u8 bad.wav 
$ ffmpeg -i bad.wav -codec:a libmp3lame -qscale:a 2 bad2.mp3 
Verwandte Themen