Rafiuth / Soggfy

Spotify ogg dumper
Creative Commons Zero v1.0 Universal
873 stars 53 forks source link

Lyrics tag field weird behaviour #31

Open viktorrko opened 2 years ago

viktorrko commented 2 years ago

I assume that currently, the lyrics are written into a 'USLT' tag field, which should be fairly standard, but I noticed that other applications behave quite strange. MusicBee doesn't recognize lyrics at all, and Mp3tag reports the field as 'USLT' instead of 'UNSYNCEDLYRICS', even though it should be the same thing, according to Mp3tag documentation.

I noticed that when manually writing an 'UNSYNCEDLYRICS' tag via Mp3tag, it automatically adds an eng|| prefix (or already contains it), which is not present in the Soggfy output files, maybe it's related to this? FFprobe reports the working tag field as 'lyrics-eng' while the field in Soggfy output is only reported as 'lyrics'

Rafiuth commented 2 years ago

I assume that currently, the lyrics are written into a 'USLT' tag field

I thought that was the case, but apparently, ffmpeg is doing that incorrectly. The USLT tag is being put inside a TXXX tag, so that's probably why MusicBee isn't picking it up.

I noticed that when manually writing an 'UNSYNCEDLYRICS' tag via Mp3tag, it automatically adds an eng|| prefix

Another ffmpeg issue. Looks like it doesn't support lyrics language tags and just displays it that way. It will probably break if you use it to reencode the file.

I don't have plans to fix this right now, but as a workaround, you could use mp3tag to rename the tags, or just enable the save to .lrc option if you can.

viktorrko commented 2 years ago

After I opened this issue I tried manually writing the lyrics metadata using ffmpeg, and you are right, I came to the same conclusion. I found an open ffmpeg ticket describing this behaviour but nothing was done about it, and I haven't found any other way. (This is the first time that FFmpeg was missing a feature that I needed)

Luckily you can easily convert the incorrect USLT field into a proper UNSYNCEDLYRICS field with Mp3tag, and it's already part of my pipeline so I'll just keep doing it that way. Or just use the .lrc/.txt option, that works too.