Click here to Skip to main content
6,597,576 members and growing! (22,216 online)
Email Password   helpLost your password?
Desktop Development » Files and Folders » Files     Intermediate

Reading ID3 tags from a WMA file (MP3 as well)

By danhi

A pair of classes to read the ID3 tags from either a WMA or MP3 file.
VB, Windows, .NET 1.1VS.NET2003, Dev
Posted:6 Mar 2006
Views:59,716
Bookmarked:39 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
16 votes for this article.
Popularity: 4.49 Rating: 3.73 out of 5
1 vote, 6.3%
1
2 votes, 12.5%
2
3 votes, 18.8%
3
3 votes, 18.8%
4
7 votes, 43.8%
5

Introduction

I wanted to get to the ID3 taqs (artist, album, title, genre, ...) in a WMA file, and found out that it's not quite as straightforward as it is getting the ID3V1.1 tags from an MP3 file. So I created a set of classes, one to get the ID3V1.1 tags from an MP3 file (easy), and another to get the same information out of a WMA file.

Background

You can find the ASF specification here: Advanced Systems Format (ASF) Specification. It is the internal file format of a WMA file.

Using the code

The classes are fairly straightforward to use. You simply create an instance of either WMAID3Tag or ID3V1Tag, specifying the filename of the music file, and then you can access the key information directly:

//
// Allocate a WMAID3Tag and access the fields
//
Try
    w = New WMAID3Tag(tbFilename.Text)
Catch ex As Exception
    MsgBox(tbFilename.Text & " is not a valid wma" & _ 
           " file or has invalid tag information")
    Return
End Try

tbTitle.Text = w.title
tbArtist.Text = w.artist
tbAlbum.Text = w.album
tbGenre.Text = w.genre
tbYear.Text = w.year.ToString
tbTrack.Text = w.track.ToString
tbDescription.Text = w.description

Points of Interest

One interesting side note is that the .NET classes that read/write Unicode strings (like BinaryReader/Writer or StreamReader/Writer) use an interesting convention for the length field at the start of the string. It appears that strings less than 255 characters use a single byte for the length, but others use two bytes. It's not clear (to me) exactly how this works, but since in the WMA files the length field is always two bytes, you can't use the .NET routines.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

danhi


Member

Location: United States United States

Other popular Files and Folders articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 13 of 13 (Total in Forum: 13) (Refresh)FirstPrevNext
GeneralThanks a million Pinmembergrismun15:00 14 Jan '09  
GeneralHow can we access the other values in a WMA file? Pinmemberyarborg12:00 21 Oct '08  
Generalother WMA information Pinmemberjingyeu22:03 10 Apr '08  
QuestionVB5 Pinmemberhobbitdome4:58 23 Nov '07  
GeneralThis is good PinmemberHamed_ji6:49 21 Oct '07  
GeneralC# Version PinmemberDapo Onawole7:01 24 Feb '07  
GeneralRe: C# Version PinmemberDalePres13:35 21 Mar '07  
GeneralRe: C# Version Pinmembervinyasa19:28 6 Apr '07  
Questionsetting the tag values... PinmemberMichael Elly11:04 13 Aug '06  
AnswerRe: setting the tag values... PinmemberAndyLang15:44 17 Dec '06  
AnswerRe: setting the tag values... PinmemberCalhounIND9:25 22 Aug '07  
GeneralRe: setting the tag values... PinmemberRelentless9:25 3 Oct '07  
GeneralRe: setting the tag values... PinmemberMember 173839021:29 27 Aug '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 6 Mar 2006
Editor: Smitha Vijayan
Copyright 2006 by danhi
Everything else Copyright © CodeProject, 1999-2009
Web15 | Advertise on the Code Project