Jump to content

Certain files' metadata cannot be parsed despite being present in the presence of album art


Recommended Posts

Poweramp version: build-893-arm32-play [893002-ecc5e107], Full Version, 32 bit (activator build-302)
Device model: LG Stylus 3 (LGE M400-MT)
Android version: 7.0, build number NRD90U, kernel 3.18.35, security patch level February 1, 2017

Steps to reproduce:

    1. Download the following file (uploaded for bug reproduction): https://anonfiles.com/7bd8P8a2r2/01_Becherovka_flac
    2. Load the original file into Poweramp. Metadata and album art should be present.
    3. Convert the file using the following command (done locally with Ubuntu's ffmpeg installed from official apt repository):

ffmpeg -i '01 Becherovka.flac' -q 0 -map_metadata 0 -id3v2_version 3 '01 Bechevrovka.mp3'

    4. Load the converted file into Poweramp. Metadata and album art should not be present. Verifying the file with ffprobe will return identical metadata as the original, as well as album art.

Additional information:
    + Converting with the following command (effectively removing album art) will have Poweramp parsing metadata as normal:

ffmpeg -i '01 Becherovka.flac' -q 0 -map_metadata 0 -id3v2_version 3 -vn '01 Becherovka.mp3'

    + Moving the files around the device does not help.
    + Embedded album art is 10079790 bytes (sha256sum returns d5cae6299b6ec163287776218d181ea24251d9b427627f4f2ae0c3ea77632ea6), can be extracted with:

ffmpeg -i '01 Becherovka.flac' -an -vcodec copy out.jpg

 

Link to post
Share on other sites

The original FLAC and the ffmpeg (Windows version 4.3.2-2021-02-27) converted copy to MP3 both work fine for me in PA, as does a different conversion to MP3 done in foobar2000 (latest LAME 3.100). The cover artwork in the ffmpeg conversion is hugely excessive though - 3000x3000 17.6Mb PNG; even the original image in the FLAC file is big at 9.6Mb JPG, which is what foobar2000 embeds too. Mediainfo does not even properly parse the ffmpeg conversion.

[Edit] The metadata embedded by ffmpeg seems a little strange too - the ffmpeg Year and Comment info in UserDefinedText tags (TXXX) aren't picked up by PA for example:-

FLAC:

  | 0)  Album = Bright Colors 5
  | 1)  Albumartist = HARDCORE TANO*C
  | 2)  Artist = Massive New Krew
  | 3)  Comment = C98
  | 4)  Date = 2020/05/05
  | 5)  Discnumber = 1
  | 6)  Title = Becherovka
  | 7)  Disctotal = 1
  | 8)  Tracktotal = 12
  | 9)  TrackNumber = 1

foobar2000/LAME:

  + [ID3v2_3 directory, 10082115 bytes]
  | Title = Becherovka
  | Album = Bright Colors 5
  | Year = 2020/05/05
  | Track = 1/12
  | PartOfSet = 1/1
  | Artist = Massive New Krew
  | Band = HARDCORE TANO*C
  | Comment = C98
  | PictureMIMEType = image/jpeg

ffmpeg:

  + [ID3v2_3 directory, 18453287 bytes]
  | Album = Bright Colors 5
  | Band = HARDCORE TANO*C
  | Artist = Massive New Krew
  | UserDefinedText = (COMMENT) C98
  | UserDefinedText = (DATE) 2020/05/05
  | PartOfSet = 1
  | Title = Becherovka
  | UserDefinedText = (DISCTOTAL) 1
  | UserDefinedText = (TRACKTOTAL) 12
  | Track = 1
  | PictureMIMEType = image/png

Andre

Link to post
Share on other sites

I'm guessing either the conversion process or a device-specific issue. Assuming the lesser of two evils (the conversion process), can we verify that whatever is coming out of ffmpeg is the same for both of us?

  • My output that has been triggering the bug: (https://anonfiles.com/raf9D1i0rf/test_mp3) (sha256sum returns 7992a6f576277dde4e14d2a51f65a0e9ce11280edc6f347231255975c5467a76)
  • My ffmpeg configuration: https://pastebin.com/ciP1LXew (straight from sudo apt install ffmpeg)
  • I was able to verify that my ffmpeg when converting was using LAME 3.1 supplied by libmp3lame0, and my ffmpeg is a dynamic build (if that's the right word) since attempting to sudo apt remove libmp3lame0 result in ffmpeg being a candidate for uninstallation as well.

Using the same file as above, I was able to reproduce the bug on a non-root Samsung Galaxy J7 Prime (Android 8.1.0, kernel 3.18.14, build number M1AJQ.G610FDXS1CTE1, security update level April 1 2020) with a fresh installation of Poweramp Trial. Hope the file I sent can help.

Link to post
Share on other sites

I doubt it's device-related. Possibly version or settings of ffmpeg or the LAME library though.

Personally I would only do that kind of thing on a computer anyway, far too fiddly regularly messing around with command line processes on a small touch screen.

Andre

Link to post
Share on other sites
1 hour ago, mnmtsw said:

That works fine for me in PA. Cover artwork and all tags show exactly as expected (apart from Year and Comment, which ffmpeg encode oddly as I said before). The tag portion of this file is identical to the conversion that I did, although there is some difference in the later audio segment (which would be down to different default audio settings I guess). The cover artwork is still encoded as a PNG, which doubles the size from the source JPG image to a daft 17.6Mb.

Try doing a Full Rescan in PA, looks to me like your file's metadata has simply not been picked up by the scanner process correctly. Try looking at Info/Tags in PA, which will show you the live contents of the file metadata (not the contents of the pre-saved library scan).

Andre

Link to post
Share on other sites

@mnmtsw there is limit on the embedded image size. Embedding large image will break the limit and tag could be skipped. Limit is needed as lower end older devices just have no enough memory to allocate large enough memory block for the image.

Poweramp sets limit as 24mb for the devices allowing at least 256mb for app or 8mb if less than 256mb is allowed.
As you embedded 10mb and that failed to be processed, your device seems to allow less than 256mb for the app.

Also, some formats have implied limits (e.g. FLAC - 24mb max image), but you can embed a larger image basically creating non compliant flac. Poweramp though can still play those.

Link to post
Share on other sites
2 hours ago, maxmp said:

@mnmtsw [...] As you embedded 10mb and that failed to be processed, your device seems to allow less than 256mb for the app

So it really is a device-specific thing. Well shit.

6 hours ago, andrewilley said:

Try doing a Full Rescan in PA, looks to me like your file's metadata has simply not been picked up by the scanner process correctly. Try looking at Info/Tags in PA, which will show you the live contents of the file metadata (not the contents of the pre-saved library scan).

I really should have mentioned I did 4 Full Rescans prior and during the time of this report, as well as Info/Tag returns empty which makes sense given maxmp's response. Should have mentioned earlier. This is on me, my apology for lack of related information.

And I suppose the solution is to either get a new phone or resizing the album art down to a more manageable size/flat out removing the album art?

Link to post
Share on other sites
10 hours ago, mnmtsw said:

So it really is a device-specific thing.

[...]

And I suppose the solution is to either get a new phone or resizing the album art down to a more manageable size/flat out removing the album art?

When I said the issue wasn't device-related, I meant the re-encoding issue (which is where your problem lies) isn't going to vary by device.

As I said back at the start, 17.6Mb PNG cover images are hugely excessive in an otherwise 10Mb MP3 file. As Max has now confirmed, on your particular device they have probably become are too big for PA to cache within the limited memory allocation. Even the original JPG image copied directly from the FLAC file (9.6Mb) would probably be too large. Personally, I rarely have cover images much larger than 1000 pixels square, and JPG compressed to around 500Kb or less is usually sufficient.

I would suggest you either use a decent batch tag editor on a computer rather than trying to re-process files on a phone. For example use foobar2000 to batch convert your FLACs to MP3s, and then use MP3Tag to batch reduce the image sizes to 1000 pixel JPGs (which makes your sample file's image just 192Kb by the way).

Or if you really want to use ffmpeg on your phone you could try the scale parameter. I don't use ffmpeg myself, but a bit of Googling suggests something like:

ffmpeg -i Becherovka.flac -q 0 -map_metadata 0 -filter:v scale=w=1000:h=-1 -id3v2_version 3 Becherovka.mp3

(that still seems to create PNG images, but I'm sure there's a way to force it to use JPG instead which would be a much better idea)

Andre

Link to post
Share on other sites

As Android has hard limits on app memory and no virtual page file, as soon as app tries to get too much memory it fails and the tag won't be processed anyway (and crash/restart is imminent), so the mentioned limits are needed. Depending on the device/firmware app can get as low as 128mb or it can get 2-4Gb or more (e.g. on devices with 8-12+Gb). Limits in Poweramp are increased over time for the new devices with larger amount of memory.

 

Link to post
Share on other sites
2 hours ago, Bulletcross said:

how can i restore my back up playliat. I install and reinstall the app.

When you export internal Poweramp playlists, they will be written to storage as .M3U8 files. By default they would be in the Playlists folder on internal storage, although you may specify elsewhere if you wish.

When you are ready to use these playlists again, copy those .M3U8 files to whatever storage location you are using to store your music files - basically that could be any ticked location in PA Settings > Library > Music Folders. PA will see them on its next scan, and display them in the Playlists library category.

Andre

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...