본문으로 건너뛰기
AZ Tools

MP3 태그가 플레이어마다 다르게 보이는 이유

MP3에는 제목과 아티스트를 적는 자리가 하나가 아닙니다. 서로 다른 표준이 몇 년 간격으로 만든 자리가 둘 있고, 그 둘이 일치해야 한다는 규칙은 없습니다. 여기에 세 번째 출처, 즉 플레이어가 파일을 처음 읽었을 때 캐시해 둔 정보까지 더하면, 같은 곡이 기기 세 대에서 세 가지로 표시되는 일상적인 상황이 완성됩니다.

MP3 하나가 태그를 두 벌 가질 수 있습니다

오래된 형식인 ID3v1은 파일 맨 끝에 붙는 고정 128바이트 블록입니다. 제목 30자, 아티스트 30자, 앨범 30자, 연도 4자가 들어가고 그 이상은 없습니다. 이 칸이 차면 나머지는 그냥 잘려나갑니다.

새 형식인 ID3v2는 파일 앞쪽에 있고 사실상 길이 제한이 없으며, 요즘 플레이어가 보여주는 것을 전부 담습니다. 트랙 번호와 디스크 번호, 작곡가, 코멘트, 가사, 앨범 아트까지요. 이번 세기에 만들어진 파일은 대부분 둘 다 갖고 있습니다. 태그 편집기들이 오래된 기기를 배려해 구형 블록도 계속 써넣기 때문입니다.

둘을 맞춰주는 장치는 없습니다. 어떤 프로그램에서 제목을 고치면 최신 태그만 갱신되고, 파일 끝에는 옛 값이 그대로 남아 있을 수 있습니다. 그리고 어떤 플레이어는 하필 그쪽을 우선합니다.

한글은 한쪽 태그에서만 살아남습니다

ID3v1에는 문자 인코딩이라는 개념 자체가 없습니다. 그냥 바이트이고, 읽는 프로그램이 가정하는 구형 인코딩으로 해석됩니다. 그래서 한글, 일본어, 키릴 문자, 악센트가 붙은 라틴 문자는 엉뚱한 글자나 물음표로 나옵니다.

ID3v2는 텍스트 프레임마다 맨 앞에 인코딩 바이트를 두어 이 문제를 해결했습니다. 제목을 UTF-8이나 UTF-16으로 저장해 어디서든 정확히 되읽을 수 있습니다. 같은 곡이 한 앱에서는 제목이 멀쩡하고 다른 앱에서는 물음표 줄로 보이는 이유가 이것입니다. 두 앱이 서로 다른 태그를 읽고 있는 것입니다.

앨범 아트는 파일 옆이 아니라 태그 안에 있습니다

앨범 이미지는 ID3v2의 그림 프레임 안에 들어갑니다. 앞면 커버인지 뒷면인지 아티스트 사진인지 하는 종류 정보와 이미지 바이트가 함께 저장됩니다. 파일 옆에 놓인 folder.jpg는 표준이 아니라 관행이라, 존중하는 플레이어도 있고 완전히 무시하는 플레이어도 있습니다.

휴대폰에서는 앨범 아트가 보이는데 데스크톱 플레이어에서는 안 보인다면, 대개 이미지가 둘 중 한 곳에만 있다는 뜻입니다. 앨범 하나가 필요 이상으로 몇 메가바이트씩 커지는 이유이기도 합니다. 큰 커버 이미지가 트랙마다 한 벌씩 들어가 있으니까요.

플레이어는 처음 읽은 것을 캐시해 둡니다

대부분의 음악 프로그램은 폴더를 처음 훑을 때 라이브러리 데이터베이스를 만들고, 그다음부터는 그 데이터베이스를 읽습니다. 디스크의 파일을 다시 태깅해도 라이브러리는 갱신되지 않아서, 파일은 맞는데 화면에는 옛 이름이 계속 남습니다.

태그 수정이 실패했다고 결론 내리기 전에 플레이어에 다시 검색을 시키거나 곡을 목록에서 뺐다가 다시 넣어보세요. 태그 관련 불평의 상당수는 태그가 아니라 캐시가 낡은 경우입니다.

트랙 번호가 걸린 뜻밖의 충돌

원래 ID3v1에는 트랙 번호 칸이 아예 없었습니다. 나중 개정판이 30바이트짜리 코멘트 필드의 마지막 2바이트를 떼어내 자리를 마련했습니다. 그래서 트랙 번호는 코멘트가 28자 이하일 때만 존재할 수 있습니다.

형식 안에 새겨진 실제 맞교환입니다. 구형 태그에는 긴 코멘트와 트랙 번호를 동시에 담을 수 없습니다. 어떤 플레이어에서 트랙 번호가 사라진다면 이것이 유력한 이유입니다.

파일 자체가 말해주는 것

태그 말고도, 오디오의 첫 프레임에 비트레이트, 샘플레이트, 채널 모드가 들어 있습니다. 이 값들은 태그가 주장하는 바가 아니라 실제로 인코딩된 내용을 설명합니다. 고음질이라고 이름 붙은 파일의 프레임이 96kbps라고 말한다면, 이름을 바꿨다고 음질이 좋아진 것은 아닙니다.

재생 시간도 비슷한 함정입니다. 고정 비트레이트 파일에는 길이가 아예 저장되지 않아 플레이어가 파일 크기로 추정합니다. 제대로 된 헤더가 없는 가변 비트레이트 파일에서 재생 시간이 틀리게 나오고 탐색이 부정확한 이유가 그것입니다.

스스로 모순된 파일을 정리하는 법

무엇을 고치기 전에 두 태그를 모두 읽어보세요. 문제가 되는 플레이어가 어느 쪽을 믿고 있는지 알 수 있습니다. 둘이 다르다면 그 차이가 곧 답이고, 해결은 낡은 쪽을 고치거나 구형 블록을 아예 지우는 것입니다.

새로 쓸 때는 유니코드 인코딩으로 ID3v2를 기록하는 태그 편집기를 쓰고, 구형 블록은 정말 필요한 기기가 있을 때만 남기세요. 한 파일 안에 진실이 두 벌 있는 상태야말로 애초에 이 문제를 만든 구조입니다.

관련 도구