18 releases (8 breaking)
0.9.1 | Feb 14, 2021 |
---|---|
0.8.0 | Jan 1, 2021 |
0.7.3 | Dec 13, 2020 |
0.7.1 | Nov 24, 2020 |
0.1.0 | Mar 26, 2020 |
#9 in Audio
2,201 downloads per month
Used in 6 crates
(2 directly)
130KB
2.5K
SLoC
rust-mp4ameta
A library for reading and writing iTunes style MPEG-4 audio metadata.
Examples
The easy way
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();
The hard way
use mp4ameta::{atom, Data, FourCC, Tag};
let mut tag = Tag::read_from_path("music.m4a").unwrap();
let artist_ident = FourCC(*b"\xa9ART");
let artist = tag.string(&artist_ident).next().unwrap();
println!("{}", artist);
tag.set_data(artist_ident, Data::Utf8("artist".to_owned()));
tag.write_to_path("music.m4a").unwrap();
Using freeform identifiers
use mp4ameta::{Data, FreeformIdent, Tag};
let mut tag = Tag::read_from_path("music.m4a").unwrap();
let isrc_ident = FreeformIdent::new("com.apple.iTunes", "ISRC");
let isrc = tag.string(&isrc_ident).next().unwrap();
println!("{}", isrc);
tag.set_data(isrc_ident, Data::Utf8("isrc".to_owned()));
tag.write_to_path("music.m4a").unwrap();
Supported Filetypes
- M4A
- M4B
- M4P
- M4V
Useful Links
- AtomicParsley docs
- Mutagen docs
- QuickTime spec
- QuickTime container
- MusicBrainz Picard tag mapping
- Filetype list
Testing
__Run all tests:__
cargo test
__Test this library on your collection:__
cargo test -- --nocapture collection <path>