Phonon не работает с некоторыми mp3-файлами - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь сделать музыкальный проигрыватель с 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 игнорировать изображение обложки при разборе файла, чтобы он не делал ошибку?

...