For a metadata library, I want support for MP3, Ogg, Opus, FLAC, and M4A.
Unfortunately, the tagging libraries that are available often skip over unknown tags.
An audio tagging library should never lose any metadata when reading in tags and then subsequently writing out the tags.
Interfaces to various metadata libraries have been written. MP3, Ogg, Opus and FLAC are all fairly easy, though I will have to be sure to meet the requirement of not losing any metadata.
2023-11-2 I wrote my own MP4 tagging library so that Mutagen could be removed. I also wrote code to support read-only tags in RIFF (.wav) and ASF (.wma) files. What's not supported are ID3 tags in non-MP3 audio files. AAC files need to be supported in read-only mode.
2023-11-8 The mutagen audio tagging interface has been removed.
Another possibility to look at is taglib. This will require writing a C wrapper around the C code. It appears that taglib does not return the data for unsupported tags. Rather useless.
tagparser also did not support all tags.
ffmpeg's libav* libraries appear to support the metadata quite well, but MP3 UFID tag and M4A tmpo tag are not supported. Custom M4A audio tags are skipped completely (apparently there's an option to support these).
It appears that perl Audio::Scan has a bunch of test files that could be used for audio tag testing.
https://github.com/andygrundman/Audio-Scan/tree/master/t
(Updated 2024-12-23 09:52:50; BDJ4 version 4.12.8)