patch from fork as official is archived
https://github.com/nullobsi/cantata/commit/45bac9eb3e99ed75b6539f92418556dac1c0193d.patch
diff --git a/tags/tags.cpp b/tags/tags.cpp
index ce86a1e8..5817dc1b 100644
--- a/tags/tags.cpp
+++ b/tags/tags.cpp
@@ -619,7 +619,7 @@ static void readAPETags(TagLib::APE::Tag *tag, Song *song, ReplayGain *rg, QImag
         if (map.contains("COVER ART (FRONT)")) {
             const TagLib::ByteVector nullStringTerminator(1, 0);
 
-            TagLib::ByteVector item = map["COVER ART (FRONT)"].value();
+            TagLib::ByteVector item = map["COVER ART (FRONT)"].binaryData();
             int pos = item.find(nullStringTerminator);   // Skip the filename
 
             if (++pos > 0) {
@@ -1301,7 +1301,7 @@ static void readTags(const TagLib::FileRef fileref, Song *song, ReplayGain *rg,
         }
     } else if (TagLib::RIFF::WAV::File *file = dynamic_cast< TagLib::RIFF::WAV::File * >(fileref.file())) {
         if (file->tag()) {
-            readID3v2Tags(file->tag(), song, rg, img, lyrics, rating);
+            readID3v2Tags(file->ID3v2Tag(), song, rg, img, lyrics, rating);
         }
     #ifdef TAGLIB_ASF_FOUND
     } else if (TagLib::ASF::File *file = dynamic_cast< TagLib::ASF::File * >(fileref.file())) {
@@ -1419,7 +1419,7 @@ static bool writeTags(const TagLib::FileRef fileref, const Song &from, const Son
         }
     } else if (TagLib::RIFF::WAV::File *file = dynamic_cast< TagLib::RIFF::WAV::File * >(fileref.file())) {
         if (file->tag()) {
-            changed=writeID3v2Tags(file->tag(), from, to, rg, img, rating) || changed;
+            changed=writeID3v2Tags(file->ID3v2Tag(), from, to, rg, img, rating) || changed;
         }
     #ifdef TAGLIB_ASF_FOUND
     } else if (TagLib::ASF::File *file = dynamic_cast< TagLib::ASF::File * >(fileref.file())) {
@@ -1455,7 +1455,7 @@ Song read(const QString &fileName)
 
     readTags(fileref, &song, nullptr, nullptr, nullptr, nullptr);
     song.file=fileName;
-    song.time=fileref.audioProperties() ? fileref.audioProperties()->length() : 0;
+    song.time=fileref.audioProperties() ? fileref.audioProperties()->lengthInSeconds() : 0;
     return song;
 }
 
