프로젝트 파일트리 구조
plain text
mp4_to_gif/
├─ requirements.txt # Python 의존성 목록
├─ venv/ # Python Interpreter 가상환경
└─ convert.py # mp4 → gif 변환 스크립트convert.py 파일 작성
python
import imageio.v2 as imageio
input_mp4 = "input.mp4"
output_gif = "output.gif"
reader = imageio.get_reader(input_mp4)
fps = reader.get_meta_data()["fps"]
with imageio.get_writer(output_gif, mode="I", fps=fps) as writer:
for frame in reader:
writer.append_data(frame)
reader.close()python
# gif 파일 크기 축소용
import imageio.v2 as imageio
INPUT = "input.mp4"
OUTPUT = "output.gif"
TARGET_WIDTH = 140
FPS = 16
PALETTE = 64
FRAME_SKIP = 2 # 2프레임 중 1프레임만 사용
reader = imageio.get_reader(INPUT)
with imageio.get_writer(
OUTPUT,
mode="I",
fps=FPS,
palettesize=PALETTE
) as writer:
for i, frame in enumerate(reader):
if i % FRAME_SKIP != 0:
continue
h, w, _ = frame.shape
scale = TARGET_WIDTH / w
frame = frame[::int(1/scale), ::int(1/scale)]
writer.append_data(frame)
reader.close()
CLI commands (실행 순서대로)
bash
# 1. OS 레벨 의존성 (한 번만)
sudo apt install ffmpeg
# 2. Python 의존성 정의
echo "imageio[ffmpeg]" > requirements.txt
# 3. 가상환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate
# 4. Python 패키지 설치
pip install -r requirements.txt
# 5. 변환 실행
python convert.py