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 태그가 없는 것으로 바로 음악 데이터가 있는 것이다.
추후 추가...