Seite 1 von 1

Cover Bilder von MP3 Dateien laden

Verfasst: Sonntag 3. Januar 2016, 23:52
von SteveDee
Guten Abend,
ich versuche die Cover Bilder von MP3 Dateien auszulesen und anzuzeigen.
Dafür habe ich den folgenden Code benutzt, jedoch wird nur ein Coverbild aus meiner Bibliothek geladen, obwohl im Windows Explorer viel mehr Lieder Coverbilder haben.
Ist der Code falsch oder was könnte der Fehler sein?

Code: Alles auswählen

# ...
    file = File(sFile)#bekommt Dateipfad aus Liste
    try:
        album_file = file.tags['APIC:'].data
        with open(titel + '.jpg', 'wb') as img:
            img.write(album_file)	
        cover = pygame.image.load(titel + '.jpg').convert()
    except KeyError:
        cover = pygame.image.load("noalbum.png").convert()

Re: Cover Bilder von MP3 Dateien laden

Verfasst: Montag 4. Januar 2016, 00:25
von BlackJack
@SteveDee: Die meisten Player schauen auch in dem Verzeichnis wo die Audiodatei liegt, ob es dort auch eine passende Grafikdatei gibt. MP3s können des weiteren mehr als einen APIC-Frame besitzen. Dessen Dateityp muss nicht JPEG sein, da gibt's auch noch andere Möglichkeiten. Statt Bilddaten kann auch eine URL in dem Frame kodiert sein unter der das Bild verfügbar ist. Neben dem APIC-Frame gibt es auch noch „General encapsulated object“-Frames (GEOB) in denen auch Bilddaten stecken können.

Edit: Schau Dir doch einfach mal die Tags von Dateien an die bei Dir scheinbar keine Bilder haben. Dann sollte Dir etwas auffallen.

Re: Cover Bilder von MP3 Dateien laden

Verfasst: Montag 4. Januar 2016, 00:30
von SteveDee
Also wie kann ich dann am besten Unterscheidungen vornehmen bzw wie sollte ich das Anzeigen der Coverbilder dann am besten realisieren?

Re: Cover Bilder von MP3 Dateien laden

Verfasst: Montag 4. Januar 2016, 00:37
von BlackJack
@SteveDee: Ups, hatte gerade eben noch ein ”Edit” nachgeschoben. Schau Dir die Tags doch einfach mal an von den Dateien bei denen Dein bisheriger Code kein Bild ermittelt. Der Schlüssel ist nicht nur 'APIC:'. Kann ja grundsätzlich nicht nur 'APIC:' sein wenn man weiss, dass es mehr als einen Frame vom Typ APIC geben kann. Was die Arten von APIC-Frames angeht und wie die Information kodiert ist um was für einen Dateityp es sich handelt, wirf am besten einen Blick in die IDv3-Spezifikation.