프로젝트 파일트리 구조

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