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’ |