RustAudio / audrey

A crate to simplify reading, writing and converting between a variety of audio formats.
Other
132 stars 16 forks source link

Dealing with metadata #15

Open Drakulix opened 7 years ago

Drakulix commented 7 years ago

Hello everyone,

I am currently planning to start an audio player project and wanted to ask what the plans of handling metadata (tags) with this library are?

This looks like a very nice collection of whats available, but I will need to handle at least reading tags and in the long run also write tags for audio files.

Using audrey seems like a waste of time, if I still need to depend on the decoders or even other decoders (I see claxon, does not expose the internals of the VorbisComment header, like the flac crate does for example) to handle metadata.

If audrey's goal is only to de/encode samples that is totally fine, but the readme does not really tell that.

est31 commented 7 years ago

To be honest, for one of my projects audrey does not provide enough functionality yet either, and I'm currently binding the decoders myself as well. Its functionality should certainly be expanded, including metadata.

I think before switching to the flac crate we should ask @ruuda to expose the vorbis comment header, or maybe you can do a PR yourself.

I personally would welcome any PR to add metadata functionality to audrey.

mitchmindtree commented 7 years ago

Agreed, I'd also welcome better support for metadata :+1:

I wonder how we should go about exposing this metadata in a friendly way?

Perhaps before diving in, it would be worth looking at the similarities between metadata that is available from all currently supported formats (as well as formats we hope to support in the future like mp3) and go from there.

Also, @Drakulix @est31 what kind of metadata exactly did you both need to retrieve that required you to use the decoders manually? Music-related metadata like track/album/artist strings? Or something else?

ruuda commented 7 years ago

About flac, metadata support in Claxon hasn’t gotten a lot of love yet. It does not expose the Vorbis comments because it cannot read them at the moment. I do intend to implement this, it just hasn’t been a priority. I think my next step will be to implement seektable reading and then seeking. Adding support for Vorbis comments and the other metadata blocks is not difficult, only a bit tedious. The spec is clear. It’s a matter of reading the bytes and putting them in a struct. Pull requests would be accepted :)

In the mean time, there is the metaflac crate. It would require reading the header twice, which is a bit wasteful, but reading the header is not the expensive part anyway. I haven’t used it myself, but judging from the docs it seems complete, and it also offers write support.

Drakulix commented 7 years ago

@mitchmindtree only music related, like artist/album.

I am basically trying to evaluate what crates I can use to build a basic music player and although this project seems to be in some very early stage (not seeking, no metadata), it is good to see, that it is very much alive and PRs are welcome.

This is encouraging, once I finally get to start on this project, I will most likely dedicate some work to fix up some missing parts of audrey.

I rather would use a crate that I can throw any file at then manually rebuilding, what audrey has already done with different decoders.