Read Tag Info from a file

This page refers to all tag formats supported by Jaudioatgger. The stuff you might want to know but you can't change is stored in the AudioHeader class, the meta information that you can change is stored in the Tag interface.


AudioFile f = AudioFileIO.read(testFile);
Tag tag = f.getTag();
AudioHeader = f.getAudioHeader();

AudioHeader includes


System.out.println(f.getAudioHeader().getTrackLength());
System.out.println(f.getAudioHeader().getSampleRateAsNumber());

For the very common fields that all audio formats support we've provided some convenience methods. Because some formats support multiple instances of fields these convenience methods are named getFirst and all return a String.

  
System.out.println(tag.getFirstArtist());
System.out.println(tag.getFirstAlbum());
System.out.println(tag.getFirstTitle());
System.out.println(tag.getFirstComment());
System.out.println(tag.getFirstYear());
System.out.println(tag.getFirstTrack());	

These fields and additional common fields are listed in the TagFieldKey Enumeration of common fields that can be used as follows


System.out.println(tag.getFirst(TagFieldKey.ARTIST);
System.out.println(tag.getFirst(TagFieldKey.ALBUM);
System.out.println(tag.getFirst(TagFieldKey.TITLE);
System.out.println(tag.getFirst(TagFieldKey.COMMENT);
System.out.println(tag.getFirst(TagFieldKey.YEAR);
System.out.println(tag.getFirst(TagFieldKey.TRACK);
System.out.println(tag.getFirst(TagFieldKey.DISC_NO);
System.out.println(tag.getFirst(TagFieldKey.COMPOSER);
System.out.println(tag.getFirst(TagFieldKey.ARTIST_SORT);
System.out.println(tag.getFirst(TagFieldKey.LYRICS);
System.out.println(tag.getFirst(TagFieldKey.BPM);
System.out.println(tag.getFirst(TagFieldKey.ALBUM_ARTIST);
System.out.println(tag.getFirst(TagFieldKey.ALBUM_ARTIST_SORT);
System.out.println(tag.getFirst(TagFieldKey.ALBUM_SORT);
System.out.println(tag.getFirst(TagFieldKey.GROUPING);
System.out.println(tag.getFirst(TagFieldKey.COMPOSER_SORT);
System.out.println(tag.getFirst(TagFieldKey.TITLE_SORT);
System.out.println(tag.getFirst(TagFieldKey.IS_COMPILATION);

The list includes all Musicbrainz fields


System.out.println(tag.getFirst(TagFieldKey.MUSICIP_ID);
System.out.println(tag.getFirst(TagFieldKey.MUSICBRAINZ_TRACK_ID);
System.out.println(tag.getFirst(TagFieldKey.MUSICBRAINZ_ARTISTID);
System.out.println(tag.getFirst(TagFieldKey.MUSICBRAINZ_RELEASEARTISTID);
System.out.println(tag.getFirst(TagFieldKey.MUSICBRAINZ_RELEASEID);	

If the format supports supports multiple items with the same id you can retrieve all items with a particular id using


List list = tag.get(TagFieldKey.ARTIST);
for(TagField field:list)
{
	System.out.println(field);
}	

To retrieve all items in a tag use


Iterator iterator = tag.getFields();
while(iterator.hasNext())
{
    System.out.println(iterator.next());
}	

The examples above assume textual data, but what about binary data. You retrieve the complete tag field instead of just a String representation of its value by using


TagField binaryField = tag.getFirstField(FieldKey.COVER_ART));