프로그램 없이 윈도우 WSL 환경에서 FFmpeg로 MP4영상을 GIF로 변환하기

웹사이트, 커뮤니티, 문서 등에 움직이는 이미지(움짤)를 넣을 때 가장 친숙하고 널리 쓰이는 포맷은 단연 GIF입니다.

윈도우의 WSL(Windows Subsystem for Linux) 환경을 활용하면, 무거운 인코딩 프로그램 없이 명령어 한 줄로 원본 영상을 원하는 비율로 크롭하고 용량까지 1MB 미만으로 가볍게 압축할 수 있습니다.

가장 대중적인 GIF로 변환하는 방법을 중심으로 알아보고, 용량을 극적으로 줄여주는 차세대 포맷인 WebP 변환법과 이를 편리하게 쓸 수 있는 윈도우 배치 파일(.bat) 제작법까지 함께 정리합니다.


1. 사전 준비: WSL에 FFmpeg 설치하기

WSL(Ubuntu 등) 터미널을 열고 아래 명령어를 입력해 FFmpeg를 최신 상태로 설치합니다.

Bash
sudo apt update && sudo apt install -y ffmpeg

(설치 후 아래와 같이 ffmpeg -version을 입력해 정상 설치되었는지 확인합니다.)

2. 실전 FFmpeg GIF 변환 명령어 (기본)

5초짜리 영상을 정확히 800×600 크기로 꽉 차게 잘라내고(Crop), 용량을 최대한 다이어트하여 GIF로 만드는 명령어입니다. GIF는 파일 특성상 용량이 커지기 쉽기 때문에 색상 수를 적절히 제한하는 옵션이 포함되어 있습니다.

Bash
ffmpeg -ss 00:00:00 -i input.mp4 -t 5 -vf "fps=8,scale=800:600:force_original_aspect_ratio=increase,crop=800:600:(in_w-out_w)/2-55:in_h,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse=dither=bayer:bayer_scale=3" -loop 0 output.gif

핵심 옵션 설명

이 명령어의 세부 옵션을 알면 본인의 영상에 맞게 커스텀할 수 있습니다.

  • -ss 00:00:00 -t 5: 시:분:초(1초미만단위는 소숫점으로 제어 가능)이며, 영상의 처음(0초)부터 딱 5초 동안만 잘라냅니다.
  • fps=8: 초당 프레임 수를 8로 조절합니다. 용량을 아끼기 위한 핵심 구간입니다.
  • scale=800:600:force_original_aspect_ratio=increase: 원본 비율을 유지하면서, 가로/세로 중 800×600 화면에 검은 여백이 생기지 않도록 꽉 차게 확대합니다.
  • crop=800:600:(in_w-out_w)/2-55:in_h:
    • 꽉 차게 확대된 영상에서 정확히 800×600 크기로 화면을 잘라냅니다.
    • 기본은 정중앙 기준이지만, 뒤에 -55를 붙여 화면 중심을 살짝 왼쪽으로 이동시켰습니다. (원하는 구도에 따라 숫자를 조절하거나, 아예 맨 왼쪽을 잡으려면 0을 넣으면 됩니다.)
  • max_colors=128: GIF가 사용할 최대 색상 수를 128개로 제한하여 화질 저하를 최소화하면서 용량을 확보합니다.
  • -loop 0: 무한 반복 재생되도록 합니다.

3. 추가 팁: 압축률을 극대화하는 WebP 변환 명령어

만약 GIF로 변환했는데 움직임이나 색상이 복잡해서 목표 용량(예: 1MB 미만)을 맞추기 어렵다면 WebP 포맷을 사용하는 것이 좋습니다. WebP는 압축 효율이 압도적으로 좋아 동일한 해상도에서도 용량을 훨씬 더 줄일 수 있습니다.

Bash
ffmpeg -ss 00:00:00 -i input.mp4 -t 5 -vf "fps=8,scale=800:600:force_original_aspect_ratio=increase,crop=800:600:(in_w-out_w)/2-55:in_h" -vcodec libwebp -lossless 0 -q:v 25 -compression_level 6 -loop 0 output.webp
  • -vcodec libwebp -lossless 0 -q:v 25: WebP 손실 압축 모드를 사용하며, 품질을 25% 수준으로 세팅합니다. WebP는 품질을 이 정도로 낮춰도 화면상으로는 충분히 깔끔한 화질을 유지합니다.
  • -compression_level 6: 인코딩 속도를 조금 양보하는 대신 압축률을 극대화하여 용량을 쥐어짜 냅니다.

4. 윈도우에서 클릭 한 번으로 실행하기 (.bat 배치 파일)

매번 WSL 터미널을 켜고 긴 명령어를 입력하기 번거롭다면, 윈도우 바탕화면에서 더블 클릭과 파일명 입력만으로 WSL 내의 FFmpeg를 호출하는 배치 파일(*.bat)을 만들어 사용할 수 있습니다.

메모장을 열고 아래 코드를 복사한 뒤, 파일 저장 시 이름을 gif_maker.bat으로 지정하고 인코딩을 ANSI 또는 UTF-8로 선택하여 저장하세요. (기본 GIF 변환 기준 스크립트입니다.)

BAT (Batchfile)
@echo off
set /p filename="변환할 MP4 파일명을 입력하세요 (확장자 제외): "

echo WSL FFmpeg를 활용해 GIF 변환을 시작합니다...

:: WSL을 호출하여 해당 폴더의 mp4를 gif로 변환하는 명령어
wsl ffmpeg -ss 00:00:00 -i "%filename%.mp4" -t 5 -vf "fps=8,scale=800:600:force_original_aspect_ratio=increase,crop=800:600:(in_w-out_w)/2-55:in_h,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse=dither=bayer:bayer_scale=3" -loop 0 "%filename%.gif"

echo 변환이 완료되었습니다!
pause

(만약 WebP 변환 배치 파일이 필요하다면 명령어 부분만 3번 항목의 WebP 버전 내용으로 교체하면 됩니다.)

사용 방법

  1. 변환하려는 영상.mp4 파일이 있는 폴더로 위에서 만든 gif_maker.bat 파일을 옮깁니다.
  2. 배치 파일을 더블 클릭해 실행합니다.
  3. 콘솔 창이 뜨면 확장자를 제외한 파일명만 입력하고 엔터를 누르면 같은 폴더에 결과물이 생성됩니다.

5. 목표 용량 맞춤 조절 팁

영상의 프레임 변화나 색상 디테일에 따라 결과물 용량이 다르게 나올 수 있습니다. 그럴 때는 아래 옵션을 미세 조정하여 원하는 용량을 맞출 수 있습니다.

  • 용량을 더 줄여야 할 때: * GIF의 경우 max_colors=128 부분을 64 또는 32로 더 낮추거나, fps=6 정도로 프레임을 한 단계 더 낮춥니다.
    • WebP의 경우 화질 옵션인 -q:v 2520 또는 15로 낮춰 조절합니다.
  • 용량에 여유가 있어 화질을 높이고 싶을 때: * GIF의 경우 프레임을 fps=10으로 올리거나 max_colors=256으로 색상 제한을 풀어줍니다.
    • WebP의 경우 -q:v 35 이상으로 올려 더 선명한 결과물을 만들 수 있습니다.

댓글 남기기