# rust-mp4ameta
[](https://github.com/Saecki/rust-mp4ameta/actions?query=workflow%3ACI)
[](https://crates.io/crates/mp4ameta)
[](https://docs.rs/mp4ameta)


A library for reading and writing iTunes style MPEG-4 audio metadata.
## Usage
```rust
fn main() {
let mut tag = mp4ameta::Tag::read_from_path("music.m4a").unwrap();
println!("{}", tag.artist().unwrap());
tag.set_artist("artist");
tag.write_to_path("music.m4a").unwrap();
}
```
## Supported Filetypes
- M4A
- M4B
- M4P
- M4V
## Useful Links
- [AtomicParsley docs](http://atomicparsley.sourceforge.net/mpeg-4files.html)
- [Mutagen docs](https://mutagen.readthedocs.io/en/latest/api/mp4.html)
- QuickTime spec
- [Movie Atoms](https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html)
- [Metadata](https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html)
- [QuickTime container](https://wiki.multimedia.cx/index.php/QuickTime_container)
- [MusicBrainz Picard tag mapping](https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html)
- [Filetype list](https://ftyps.com/)
## Testing
__Run all tests:__
`cargo test`
__Test this library on your collection:__
`cargo test -- --show-output collection <path>`