MusicPlayerDaemon / MPD

Music Player Daemon
https://www.musicpd.org/
GNU General Public License v2.0
2.19k stars 350 forks source link

Support for different embedded art tags #1989

Open gilphilbert opened 9 months ago

gilphilbert commented 9 months ago

Feature request

MPD currently supports readpicture which (I believe) reads the first embedded image in a file. My files, mostly FLAC, have multiple embedded images that are type-specified using ID3 image types. I currently have an API wrapper around MPD which I would love to drop and have my clients directly access the MPD instances.

It would be good to have a way to specify different image types, such as artist, media, etc. The default could be cover (or the first image) with the option to pick an image:

readpicture {URI} {OFFSET} [TYPE]

Below is an example of how my art is defined: Screenshot from 2024-02-06 23-38-59

If no image of that type exists in the file, no data would be returned.

gilphilbert commented 9 months ago

Adding some extra detail, the tag definitions (at least for MP3 and FLAC / Vorbis tags) follow the same definition:

Picture type:  $00  Other
               $01  32x32 pixels 'file icon' (PNG only)
               $02  Other file icon
               $03  Cover (front)
               $04  Cover (back)
               $05  Leaflet page
               $06  Media (e.g. lable side of CD)
               $07  Lead artist/lead performer/soloist
               $08  Artist/performer
               $09  Conductor
               $0A  Band/Orchestra
               $0B  Composer
               $0C  Lyricist/text writer
               $0D  Recording Location
               $0E  During recording
               $0F  During performance
               $10  Movie/video screen capture
               $11  A bright coloured fish
               $12  Illustration
               $13  Band/artist logotype
               $14  Publisher/Studio logotype

Reference: https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.2.html#attached-picture

MPconta commented 9 months ago

At first - sorry, i can not help you with your problem. ;) Just a suggestion, wouldn't it be easier to leave the pictures seperated in the folder, where the soundfiles are? Always with the same name-sheme of course. This would make it maybe more likely for the software to recognize the images and easier for you to edit them. Well, but for me the big question is - which MPD-client do you use? I also have different images für each album and searched a while for a client to show them, but it seems there are only clients which can present only one (folder-)image.

gilphilbert commented 9 months ago

I wanted to use the embedded images, since they're widely supported across clients since I use the same files for my phone, my DAP (I have an FiiO M11 Plus) and anywhere else I need them. Folder images are not widely supported, other than a simple "folder.jpg" which is usually interpreted as a cover. I have an API that wraps around MPD and extracts images from the files on demand. It's a bit slow, but my clients cache the images so it's only slow once.

As for my clients, I have a... bespoke setup. In three rooms in my house I have a small machine (a thin client) that's connected to a DAC and amp. This machine runs a custom player UI based on an API layer I wrote that goes over MPD. Each room also has a Microsoft Surface Go which runs a stripped down Debian OS and a custom touch front-end for the API. ui

I really only use the Web UI for managing the library as I haven't built that into the touch UI yet! It's not finished yet, since it's a pretty big project for one person to do alone!

MPconta commented 8 months ago

Your API looks very promising to me! Hope you manage to finalize it. I would be very happy to see it in the Google Playstore to use it with my Tablet. It's really strange why there are no clients, which can show more than one picture for an album. And there are evan more possibilities - its pleasant to have a pdf with the booklet of the album. Why not have the possibility to look at it within the MPD-client? Sometimes i really feel kind of restricted for not having the needed programming skills in this time of digitalization. ;-)