ffmpeg를 이용한 mp3 파일 metadata 수정하기(Edit metadata in mp3 using ffmpeg)

테스트 중 mp3 파일에 metadata 편집할일이 있어서 exiftool로 수정하는데 이런 에러가 났습니다.

exiftool -artist=“hahwul<br>11" a.mp3
Error: Writing of MP3 files is not yet supported - a.mp3
    0 image files updated
    1 files weren't updated due to errors

지원 안한다고?? 그래서 찾아보니… 정말 지원 대상이 아니더군요. https://www.sno.phy.queensu.ca/~phil/exiftool/

그래서 고민하다가 이참에 ffmpeg도 되나 싶어 찾아보니 가능하더라구요. (예전에 취약점 때문에 보던걸 이런식으로 사용하게 될줄이야..)

간략하게 어떻게 확인하는지 정리해봅니다.

How to Install?

brew, apt, yum 등 패키지 관리자는 정말 좋은 것 같습니다. brew로 쉽게 설치 가능해요. (단 디펜던시가 좀 많아서… 오래걸립니다)

brew install ffmpeg

진짜많다…

Edit mp3 metadata with ffmpeg

우선 대략적으로 실행 패턴과 옵션 정리를 먼저 해보면…

ffmpeg -i inputfile -metadata title="제목" outputfile

-i : 입력파일(즉 metadata를 변경할 파일)
-metadata : metadata 수정 옵션으로 하위 값으로 metadata 이름과 값이 들어갑니다.

음.. 뭐 별거없네요…

ffmpeg -i test.mp3 -metadata title="asdf<svg/onload=alert(45)>" -metadata Lyrics="this is lyrics<br>asd" inject_test.mp3

exiftool로 잘 됬나 봐보면…

exiftool inject_test.mp3
ExifTool Version Number         : 11.30
File Name                       : 123.mp3
Directory                       : .
File Size                       : 3.4 MB
File Modification Date/Time     : 2019:04:04 23:57:36+09:00
File Access Date/Time           : 2019:04:04 23:57:33+09:00
File Inode Change Date/Time     : 2019:04:04 23:57:36+09:00
File Permissions                : rw-r--r--
File Type                       : MP3
File Type Extension             : mp3
MIME Type                       : audio/mpeg
MPEG Audio Version              : 1
Audio Layer                     : 3
Audio Bitrate                   : 64 kbps
Sample Rate                     : 44100
Channel Mode                    : Stereo
MS Stereo                       : Off
Intensity Stereo                : Off
Copyright Flag                  : False
Original Media                  : False
Emphasis                        : None
ID3 Size                        : 175
Title                           : asdf<svg/onload=alert(45)>
Artist                          : Silent Partner
Album                           : YouTube Audio Library
Genre                           : Pop
User Defined Text               : (USLT) asdf<br>asdf
Encoder Settings                : Lavf58.20.100
Duration                        : 0:07:27 (approx)

ffmpeg metadata list

(https://wiki.multimedia.cx/index.php/FFmpeg_Metadata#QuickTime.2FMOV.2FMP4.2FM4A.2Fet_al.)

Key iTunes field Low-level identifier
“title” Name ‘\251nam’
“author” Artist ‘\251ART’
“album_artist” Album Artist ‘aART’
“album” Album ‘\251alb’
“grouping” Grouping ‘\251grp’
“composer” Composer ‘\251wrt’
“year” Year ‘\251day’
“track” Track Number ‘trkn’
“comment” Comments ‘\251cmt’
“genre” Genre ‘\251gen’
“copyright” ?? ‘\251cpy’
“description” Description ‘desc’
“synopsis” Information dialog when selecting “Show Description” in context menu ‘ldes’
“show” Show ‘tvsh’
“episode_id” Episode ID ‘tven’
“network” ?? ‘tvnn’
“lyrics” Lyrics ‘\251lyr’