[CLI] mp3파일에서 앨범커버 추출하기 + mp4로 변환

[CLI] mp3파일에서 앨범커버 추출하기 + mp4로 변환
Photo by Firmbee.com / Unsplash

앨범 커버 추출하기

brew install ffmpeg
ffmpeg -i yourfile.mp3 -an -vcodec copy cover.jpg
  • -i yourfile.mp3: MP3 파일을 지정합니다. 여기서 yourfile.mp3을 실제 파일 이름으로 바꿉니다.
  • -an: 오디오 스트림을 무시합니다 (앨범 커버 추출에는 오디오가 필요하지 않습니다).
  • -vcodec copy: 비디오 코덱(이 경우에는 앨범 커버 이미지)을 그대로 복사합니다.
  • cover.jpg: 추출한 이미지의 파일 이름을 지정합니다.

이 명령어를 실행하면, yourfile.mp3 파일에서 앨범 커버 이미지가 cover.jpg라는 이름의 파일로 추출됩니다. 파일 이름과 확장자는 필요에 따라 변경할 수 있습니다.

mp4로 변환

  • mp3파일을 mp4로 변환하되 영상의 내용은 '앨범커버'로 바꾸는 커맨드
ffmpeg -loop 1 -i cover.jpg -i audio.mp3 -c:v libx264 -tune stillimage -b:v 500k -c:a copy -r 1 -shortest -vf scale=1280:720 output.mp4
  • -loop 1 -i cover.jpg: album_cover.jpg라는 이미지를 비디오 스트림으로 계속 반복해서 사용합니다.
  • -i audio.mp3: audio.mp3라는 오디오 파일을 사용합니다.
  • -c:v libx264 -tune stillimage: 비디오 코덱으로 libx264를 사용하며, 정적 이미지 최적화를 위해 stillimage 튜닝을 사용합니다.
  • -b:v 500k: 비디오의 비트레이트를 초당 500 킬로비트(kilobits per second)로 설정합니다. 이 값은 낮출수록 비디오 퀄리티가 낮아지고 파일 크기가 줄어듭니다. 500k는 상대적으로 낮은 비트레이트 값이며, 필요에 따라 조정할 수 있습니다.
  • -c:a copy: 음질을 유지하기 위해, 오디오 코덱에 변환 없이 원본 오디오를 복사합니다.
  • -r 1: 비디오 프레임 레이트를 초당 1프레임으로 설정합니다.
  • -shortest: 비디오와 오디오 중 더 짧은 쪽에 맞춰 길이를 조정합니다.
  • -vf scale=1280:720: 비디오의 해상도를 1280x720으로 설정합니다.
  • output.mp4: 생성될 파일 이름을 output.mp4로 지정합니다.

특정 폴더 내의 mp3파일을 모두 변환하는 스크립트

#!/bin/bash

# 변환할 mp3 파일이 있는 폴더
FOLDER="/path/to/your/mp3/folder"

# 앨범 커버 이미지 파일 경로
COVER_IMAGE="/path/to/your/album_cover.jpg"

# FOLDER 안의 모든 mp3 파일에 대해 반복
for mp3file in "$FOLDER"/*.mp3; do
    # MP3 파일 이름에서 확장자 제거
    base_name=$(basename "$mp3file" .mp3)

    # ffmpeg를 사용하여 변환
    ffmpeg -loop 1 -i "$COVER_IMAGE" -i "$mp3file" -c:v libx264 -tune stillimage -b:v 500k -c:a copy -r 1 -shortest -vf scale=1280:720 "${FOLDER}/${base_name}.mp4"
done