Mp3 Lyrics are truncated

Started by WHA1949, October 30, 2012, 12:14:33 PM

Previous topic - Next topic

WHA1949

Windows XP, ExifTool 9.02.

Problem: The Lyrics of a mp3 file are not displayed correctly.

"C:\Dokumente und Einstellungen\Kevin\Eigene Dateien\Downloads\exiftool-9.02\exiftool" -charset UTF8 -ext mp3 -q $UserDefinedText %1 > %1\ExifToolDir.xml

gives (only partial output displayed)

ID3 Size                        : 38344
Track                           : 1
User Defined Text               : (LYRICS) 䤀昀 礀漀甀 挀愀渀
Album                           : The Best of Suzi Quatro
Artist                          : Suzi Quatro


the concerned mp3 file has ID3V2_3 tags, and it has a lyrics text of more than 100 characters. The lyrics are displayed correctly in other programs (ex. mediainfo, foobar2000). They are:

QuoteCan the Can
(Chinn/Chapman)


Well you call your mama tiger
And we all know you are lying
And your boyfriend's name is eagle
...

Phil Harvey

This may be FAQ number 3.  Try adding -a -G1 to your command.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

WHA1949

Adding -a -G1 -s shows that the correct tag was selected, but its contents is really truncated. Could it be that I have to add a language suffix (e.g. -eng) to the tag?. But it seems that using ExifTool I cannot find out the correct language.

gives

[ExifTool]      ExifToolVersion                 : 9.02
[System]        FileName                        : Suzi Quatro - The Best of Suzi Quatro - 01 - Can the Can.mp3
[System]        Directory                       : C:/Dokumente und Einstellungen/Kevin/Eigene Dateien/SMIL/BSG20/testsuite/media/Asien1920To1080
[System]        FileSize                        : 8.2 MB
[System]        FileModifyDate                  : 2012:10:30 16:16:36+01:00
[System]        FileAccessDate                  : 2012:10:31 09:43:52+01:00
[System]        FilePermissions                 : rw-rw-rw-
[File]          FileType                        : MP3
[File]          MIMEType                        : audio/mpeg
[File]          ID3Size                         : 38344
[MPEG]          MPEGAudioVersion                : 1
[MPEG]          AudioLayer                      : 3
[MPEG]          AudioBitrate                    : 320 kbps
[MPEG]          SampleRate                      : 44100
[MPEG]          ChannelMode                     : Joint Stereo
[MPEG]          MSStereo                        : Off
[MPEG]          IntensityStereo                 : Off
[MPEG]          CopyrightFlag                   : False
[MPEG]          OriginalMedia                   : False
[MPEG]          Emphasis                        : None
[ID3v2_3]       Track                           : 1
[ID3v2_3]       UserDefinedText                 : (LYRICS) 䤀昀 礀漀ç"€â€€æŒ€æ,,€æ¸€
[ID3v2_3]       Album                           : The Best of Suzi Quatro
[ID3v2_3]       Artist                          : Suzi Quatro
[ID3v2_3]       Band                            : Suzi Quatro
[ID3v2_3]       Composer                        : Mike Chapman/Nicky Chinn
[ID3v2_3]       Genre                           : Rock
[ID3v2_3]       Length                          : 215.226 s
[ID3v2_3]       Publisher                       : Disky
[ID3v2_3]       Title                           : Can the Can
[ID3v2_3]       Year                            : 1998
[ID3v2_3]       PictureMimeType                 : image/jpeg
[ID3v2_3]       PictureType                     : Front Cover
[ID3v2_3]       PictureDescription              :
[ID3v2_3]       Picture                         : (Binary data 32077 bytes, use -b option to extract)
[ID3v2_3]       WM_MediaClassPrimaryID          : (Binary data 16 bytes, use -b option to extract)
[ID3v2_3]       WM_MediaClassSecondaryID        : (Binary data 16 bytes, use -b option to extract)
[ID3v2_3]       WM_WMContentID                  : (Binary data 16 bytes, use -b option to extract)
[ID3v2_3]       WM_UniqueFileIdentifier         : (Binary data 114 bytes, use -b option to extract)
[ID3v2_3]       MusicCDIdentifier               : (Binary data 198 bytes, use -b option to extract)
[ID3v2_3]       WM_WMCollectionID               : (Binary data 16 bytes, use -b option to extract)
[ID3v2_3]       WM_WMCollectionGroupID          : (Binary data 16 bytes, use -b option to extract)
[ID3v2_3]       WM_Provider                     : (Binary data 8 bytes, use -b option to extract)
[ID3v2_3]       Comment                         : Suzi Quatro
[ID3v2_3]       Comment                         : http://beam.to/STHtemp
[ID3v1]         Title                           : Can the Can
[ID3v1]         Artist                          : Suzi Quatro
[ID3v1]         Album                           : The Best of Suzi Quatro
[ID3v1]         Year                            : 1998
[ID3v1]         Comment                         : Suzi Quatro
[ID3v1]         Track                           : 1
[ID3v1]         Genre                           : Rock
[Composite]     DateTimeOriginal                : 1998
[Composite]     Duration                        : 0:03:35 (approx)


Phil Harvey

I can't help much further without seeing the file.  If you could mail it to me I will take a look (philharvey66 at gmail.com)

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

Phil Harvey

I got the sample, thanks.

Wow.  This is an ExifTool bug!  Nice catch!!

This will be fixed in version 9.04 (to be released in a couple of days).

Thanks for reporting this, and for following up with the sample!!!

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

WHA1949

I checked with 9.04 and Unsynchronized Lyrics is displayed. Thank you for your fast update. There is a minor problem with some rubbish at the end of lyrics:

Help me get my feet back on the ground.



Won't you please, please Help me?



Help me.

Help me!

oooooommmmmm.





Offset: @AAFEGNGEOFGLELRuFmMtFQFTGkIrNkIlYuEoLsFQGSHlHsMnGlXtFoLuFTESGlHrNmHiFLTY_

ID: wsozcnsh"


With synchronized lyrics (tag SYLT) ExifTool outputs only:

synLyrics="Binary data 1519 bytes"


While it is true, that there exists binary data (e.g AbsoluteTime) in SYLT tag, it would be nice (feature request) to get something like:

[02:00.86]Help me get my feet back on the ground.[02:04.66]



Phil Harvey

If you send me samples of these I'll take a look at them.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

Phil Harvey

#7
I got the sample, thanks.

The rubbish at the end of the Lyrics is really there.  Your software seems to write "Artist:", "Title:" and "Album:" at the start of the lyrics, and "Offset:" and "ID:" at the end.  I have no idea why.  The "Offset:" information contains some weird characters.

I can now convert the SYLT information into a more readable format.  I'm thinking that making this a list-type tag may be best, then each entry in the list is a timestamp followed by text.

One problem is that the timestamp may be either in seconds or in MPEG frames.  I would like to be consistent and only use seconds, but I don't parse the audio stream (other than reading the header) and I don't know if/how I can calculate the frame times.  Luckily though, the sample you provided uses seconds.

ExifTool 9.05 will decode SynchronizedLyricsText, and will add 2 new tags: SynchronizedLyricsType and SynchronizedLyricsDescription.

- Phil

Edit: Here is what I am currently extracting from your sample:

> exiftool "-sync*" -X a.mp3
<?xml version='1.0' encoding='UTF-8'?>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

<rdf:Description rdf:about='a.mp3'
  xmlns:et='http://ns.exiftool.ca/1.0/' et:toolkit='Image::ExifTool 9.05'
  xmlns:ID3='http://ns.exiftool.ca/ID3/ID3/1.0/'>
<ID3:SynchronizedLyricsType>Lyrics</ID3:SynchronizedLyricsType>
<ID3:SynchronizedLyricsDescription>Lyrics were Saved by MiniLyrics.</ID3:SynchronizedLyricsDescription>
<ID3:SynchronizedLyricsText>
  <rdf:Bag>
   <rdf:li>[00:00.00]</rdf:li>
   <rdf:li>[00:14.02]Love, Love Me Do.</rdf:li>
   <rdf:li>[00:16.07]</rdf:li>
   <rdf:li>[00:16.93]You know I love you.</rdf:li>
   <rdf:li>[00:19.29]</rdf:li>
   <rdf:li>[00:20.16]I&#39;ll always be true.</rdf:li>
   <rdf:li>[00:22.65]</rdf:li>
   <rdf:li>[00:23.39]So please,</rdf:li>
   <rdf:li>[00:27.30]</rdf:li>
   <rdf:li>[00:27.97]Love Me Do.</rdf:li>
   <rdf:li>[00:30.15]</rdf:li>
   <rdf:li>[00:30.84]Whoa - oh, Love Me Do.</rdf:li>
   <rdf:li>[00:33.75]</rdf:li>
   <rdf:li>[00:35.24]Love, Love Me Do.</rdf:li>
   <rdf:li>[00:37.23]</rdf:li>
   <rdf:li>[00:38.11]You know I love you.</rdf:li>
   <rdf:li>[00:40.54]</rdf:li>
   <rdf:li>[00:41.41]I&#39;ll always be true.</rdf:li>
   <rdf:li>[00:43.83]</rdf:li>
   <rdf:li>[00:44.57]So please,</rdf:li>
   <rdf:li>[00:48.61]</rdf:li>
   <rdf:li>[00:49.27]Love Me Do.</rdf:li>
   <rdf:li>[00:51.47]</rdf:li>
   <rdf:li>[00:52.03]Whoa - oh, Love Me Do.</rdf:li>
   <rdf:li>[00:55.25]</rdf:li>
   <rdf:li>[00:56.50]Someone to love.</rdf:li>
   <rdf:li>[00:59.29]</rdf:li>
   <rdf:li>[00:59.73]Somebody new.</rdf:li>
   <rdf:li>[01:02.65]</rdf:li>
   <rdf:li>[01:03.03]Someone to love.</rdf:li>
   <rdf:li>[01:05.81]</rdf:li>
   <rdf:li>[01:06.19]Someone like you.</rdf:li>
   <rdf:li>[01:08.30]</rdf:li>
   <rdf:li>[01:09.48]Love, Love Me Do.</rdf:li>
   <rdf:li>[01:11.60]</rdf:li>
   <rdf:li>[01:12.40]You know I love you.</rdf:li>
   <rdf:li>[01:14.82]</rdf:li>
   <rdf:li>[01:15.63]I&#39;ll always be true.</rdf:li>
   <rdf:li>[01:18.12]</rdf:li>
   <rdf:li>[01:18.86]So please,</rdf:li>
   <rdf:li>[01:22.95]</rdf:li>
   <rdf:li>[01:23.39]Love Me Do.</rdf:li>
   <rdf:li>[01:26.06]</rdf:li>
   <rdf:li>[01:26.50]Whoa - oh, Love Me Do.</rdf:li>
   <rdf:li>[01:29.85]</rdf:li>
   <rdf:li>[01:49.98]Love, Love Me Do.</rdf:li>
   <rdf:li>[01:51.97]</rdf:li>
   <rdf:li>[01:52.77]You know I love you.</rdf:li>
   <rdf:li>[01:55.13]</rdf:li>
   <rdf:li>[01:55.95]I&#39;ll always be true.</rdf:li>
   <rdf:li>[01:58.37]</rdf:li>
   <rdf:li>[01:59.11]So please,</rdf:li>
   <rdf:li>[02:03.17]</rdf:li>
   <rdf:li>[02:03.70]Love Me Do.</rdf:li>
   <rdf:li>[02:06.19]</rdf:li>
   <rdf:li>[02:06.50]Whoa - oh, Love Me Do.</rdf:li>
   <rdf:li>[02:09.35]</rdf:li>
   <rdf:li>[02:09.79]Yeah, Love Me Do.</rdf:li>
   <rdf:li>[02:12.40]</rdf:li>
   <rdf:li>[02:12.96]Whoa - oh, Love Me Do.</rdf:li>
   <rdf:li>[02:15.75]</rdf:li>
   <rdf:li>[02:16.39]Yeah, Love Me Do.</rdf:li>
   <rdf:li>[02:18.48]</rdf:li>
  </rdf:Bag>
</ID3:SynchronizedLyricsText>
</rdf:Description>
</rdf:RDF>
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

WHA1949

I think it would be useful to output the other LRC tags (ar:, ti:, al:, by:, id:, length:, id:) too.  This way you know to which song the lyrics belong.

This xml format  is very convenient for me, because I want to process this output further with XSLT.


Phil Harvey

Quote from: WHA1949 on November 06, 2012, 02:09:17 PM
I think it would be useful to output the other LRC tags (ar:, ti:, al:, by:, id:, length:, id:) too.

You mean from the ID3 lyrics?  I don't know if it makes sense for ExifTool to do this since this isn't a standard ID3 feature.  You can do this yourself if you want by creating user-defined Composite tags to pull the desired information from the Lyrics.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

WHA1949

You are right.
I thought that this info (ar:, ti: ...) was also stored in SYLT tag, but by looking at mp3 I found this is not the case, and also not included in ID3 specs.

Walter