ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mp3 파일 id3v2 태그 분석
    C#/WPF 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 태그가 없는 것으로 바로 음악 데이터가 있는 것이다.

     

    추후 추가...

     

     

     

     

     

     

     

     

     

     

    댓글

GiGong