-
Bug
-
Resolution: Won't Do
-
P2: Important
-
None
-
5.13.1
-
None
-
Linux, GStreamer backend
I want to scan local audio files for their embedded metadata tags.
Current Qt (5.13.1) does not seem to make audio file (mp3 or ogg) metadata available on Linux with gstreamer backend. I manage to decode the audio data just fine (but that does not interest me).
I'm using the following code:
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTextStream out(stdout, QIODevice::WriteOnly); QAudioDecoder player; QAudioFormat format; player.setSourceFilename(a.arguments().at(1)); format.setChannelCount(2); format.setSampleSize(16); format.setSampleRate(48000); format.setCodec("audio/pcm"); format.setSampleType(QAudioFormat::SignedInt); player.setAudioFormat(format); player.connect(&player, &QAudioDecoder::finished, &a, &QCoreApplication::quit); player.connect(&player, &QAudioDecoder::bufferReady, [&] { player.read(); }); player.connect(&player, QOverload<QAudioDecoder::Error>::of(&QAudioDecoder::error), [&] { out << player.errorString() << endl; }); player.connect(&player, &QMediaObject::metaDataAvailableChanged, [&] { if (player.isMetaDataAvailable()) { for (QString key: player.availableMetaData()) out << key << " = " << player.metaData(key).toString() << endl; a.quit(); } }); player.start(); return a.exec(); }
Interestingly, the metadata is detected just fine if I use a QMediaPlayer instead (modulo necessary changes to the API)