C#/WPF

mp3 파일 id3v2 태그 분석

기공이 2017. 3. 10. 16:07

음악플레이어를 만드는데, 파일명보다는 "artist - title명" 이런식으로 표현하고 싶었다. 그래서 mp3파일의 태그가 어떠한 구조로 되어있는지 찾아보았다. 

 

ID3 라는 태그인데, 최근에는 v2를 보통 쓴다. (version 2) 링크 그래서 붙여서 ID3v2로 쓴다.

 

이 태그를 통해 해당 mp3곡의 가수, 곡명, 앨범명, 저작권자, 트렉번호, 앨범아트 등을 알 수 있다.

 


 

taglib를 쓰는 것을 강력히 추천한다.

 

저처럼 그냥 분석하고 쪼개보는 것을 좋아하는 사람만 해보시길...

 

taglib 사용법

 

visual studio 2015  wpf 기준

 

상단메뉴 도구 -> NuGet 패키지 관리자 -> 솔루션용 NuGet 패키지 관리 

-> 찾아보기 -> "taglib" -> 프로젝트 선택 -> 설치

 

TagLib namespace 에서 사용

 

더보기
private void GetTagWithTagLib(string path)
{
    TagLib.File tag = new TagLib.Mpeg.AudioFile(full);
    //if (System.IO.Path.GetExtension(full).ToLowerInvariant() == ".mp3")
    if (tag.Tag.IsEmpty == false)
    {
        //TagLib.File tag = new TagLib.Mpeg.AudioFile(full);
        artist = tag.Tag.FirstAlbumArtist;
        title = tag.Tag.Title;
        if (tag.Tag.Pictures != null && tag.Tag.Pictures.Length > 0)
        {
            TagLib.IPicture pic = tag.Tag.Pictures[0];
            var ms = new System.IO.MemoryStream(pic.Data.Data);
            ms.Seek(0, System.IO.SeekOrigin.Begin);
            albumArt = new BitmapImage();
            albumArt.BeginInit();
            albumArt.StreamSource = ms;
            albumArt.EndInit();
        }
    }
}

 

위 코드를 참조하여 사용

 

위 코드는 C# WPF 를 기준으로 작성한 코드이다. C#에서는 TagLib의 내용은 다 같지만 albumart 를 설정하는 방식은 다를 수 있다. (winform과 wpf의 bitmap을 표현하는 클래스가 다름)

 


 

보통 mp3파일의 초반부에 id3v2 태그가 붙는데 이는 'I' 'D' '3' 로 되어있고, byte로 읽어서 확인할 수 있다. 만일 ID3가 안되어 있다면 ID3v2 태그가 없는 것으로 바로 음악 데이터가 있는 것이다.

 

추후 추가...