Я пытаюсь сделать музыкальный проигрыватель с PyQt4 и Phonon.Плеер работает хорошо для большей части моей музыки, но некоторые файлы MP3 не будут работать.
Я пробовал с большим количеством MP3, примерно 1 из 10, кажется, проблема.Phonon не посылает никаких ошибок, он просто не воспроизводит песню.Просто чтобы быть уверенным, я сравнил две песни, одна из которых работает, а другая нет, и они используют один и тот же кодек (MPEG-1 Layer 3), обе на частотах 44100 Гц и 320 кбит / с, теги на ID3v2.3, ни один из них не используется.любые специальные символы в их тегах или пути к файлу, и оба работают корректно, когда я играю их в WMP.
Я инициализирую проигрыватель с помощью:
self.player = Phonon.createPlayer(Phonon.MusicCategory)
, затем, чтобы запустить песню, я использую:
self.player.setCurrentSource(Phonon.MediaSource(path_to_file))
self.player.play()
Очевидно, что между файлами должна быть какая-то разница, возможно, в том, как они были закодированы (целый альбом неработающей песни тоже не будет работать), но я понятия не имею, почемунекоторые файлы в порядке, а другие нет ... У вас есть представление о том, что может вызвать проблему?
РЕДАКТИРОВАТЬ:
Я нахожусь на Windows 10, работает PyQt 4.11.4 и Python2.7.15.Хотя не уверен насчет версии Phonon ...: - /
Я думаю, что нашел что-то, хотя ... Мне удалось получить ошибку для неправильных MP3:
"Контакты моглине подключаться, потому что они не поддерживают один и тот же транспорт. (0x80040266). "
Согласно этому посту , это вызвано метаданными файла, и когда я провел несколько тестовпохоже, это исходит из размера файла обложки альбома.Когда размер превышает ~ 108 КБ, MP3 не работает, но если я изменю размер изображения так, чтобы он был ниже этого предела, MP3 работает ...
Вот упрощенный код для тестирования с проблемный mp3 :
import sys
from functools import partial
from PyQt4.QtGui import *
from PyQt4.phonon import *
class MusicPlayer(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.player = Phonon.createPlayer(Phonon.MusicCategory)
BTN_play = QPushButton("Play")
BTN_play.pressed.connect(self.play)
self.setCentralWidget(BTN_play)
self.show()
def play(self):
path = "path/to/file.mp3"
self.player.setCurrentSource(Phonon.MediaSource(path))
self.player.play()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MusicPlayer()
sys.exit(app.exec_())
Тем не менее, я бы предпочел не редактировать метаданные каждого файла, чтобы исправить это.Может ли быть способ заставить Phonon игнорировать изображение обложки при разборе файла, чтобы он не делал ошибку?