AVIF 움짤, FFmpeg으로 용량 확 줄이는 비법!

움짤 용량 때문에 답답하셨나요? 로딩은 느리고 퀄리티는 떨어지고… 이제 걱정 마세요! 차세대 이미지 규격인 AVIF로 바꾸면 용량을 획기적으로 줄이면서도 선명하고 부드러운 움짤을 만들 수 있답니다. FFmpeg을 활용한 AVIF 움짤 변환법, 지금 바로 시작해볼게요!

AVIF 움짤, 왜 지금 주목해야 할까요?

혹시 JPG, PNG, GIF 대신 WebP라는 이미지 포맷을 들어보셨나요? WebP도 획기적으로 용량을 줄여줘서 한때 각광받았지만, 이제는 AVIF 움짤이 차세대 주자로 떠오르고 있답니다. AVIF는 WebP보다도 더 최신 규격으로, 기존 JPG, PNG는 물론 움직이는 이미지인 GIF까지 완벽하게 대체할 수 있는 강력한 특징을 가지고 있어요.

특히 AVIF는 투명도와 움직이는 이미지를 모두 지원하면서도 압도적으로 작은 용량을 자랑해요. 같은 품질이라도 WebP보다 훨씬 용량이 작아서 웹사이트 로딩 속도를 드라마틱하게 개선할 수 있죠. 하지만 아직 호환성이 조금 아쉬운 부분도 있어요. 현재 워드프레스에서만 정식 지원하고, 네이버 블로그, 네이버 카페, 티스토리 등 국내 주요 플랫폼에서는 아직 미지원이라는 점은 꼭 기억해두셔야 해요.

FFmpeg 설치부터 설정까지, 완벽 가이드!

FFmpeg으로 AVIF 움짤을 만들기 위해선 몇 가지 준비 작업이 필요해요. 먼저 FFmpeg이 설치되어 있지 않다면 설치부터 시작해야겠죠? 리눅스나 macOS 사용자라면 다음 과정을 따라해보세요.

  1. 사용자 정의 디렉토리 만들기:
    스크립트 파일들을 관리하기 좋은 ~/usr/bin 디렉토리를 만들어볼게요.
    mkdir -p ~/usr/bin
  2. PATH 환경 변수에 추가하기:
    어떤 위치에서든 스크립트를 바로 실행할 수 있도록 PATH~/usr/bin을 추가해야 해요. .bashrc.zshrc 파일을 열어 다음 내용을 추가한 후, source ~/.bashrc 또는 source ~/.zshrc 명령으로 적용해주세요.
    export PATH="$HOME/usr/bin:$PATH"

나만의 AVIF 움짤 변환 스크립트 만들기

이제 동영상을 AVIF 움짤로 변환해주는 스크립트를 만들어볼까요? ~/usr/bin 디렉토리에 video2avif.sh라는 파일을 만들고 다음 내용을 입력해주세요.

#!/bin/bash

# Define output directory for AVIF files
output_dir="./avif_output"
mkdir -p "$output_dir"

for video_file in "$@"; do
    filename=$(basename -- "$video_file")
    extension="${filename##*.}"
    filename_no_ext="${filename%.*}"
    output_avif="$output_dir/$filename_no_ext.avif"

    echo "Converting $video_file to AVIF..."
    ffmpeg -i "$video_file" -vf "scale=iw/2:ih/2" -an -c:v libsvtav1 -preset 8 -crf 30 -g 15 -pix_fmt yuv420p -loop 0 "$output_avif"
    echo "Converted to $output_avif"
done

스크립트 내용을 조금 설명해드릴게요.

  • -i "$video_file": 입력 동영상 파일이에요.
  • -vf "scale=iw/2:ih/2": 동영상의 가로세로 크기를 절반으로 줄여줘요. 필요에 따라 scale=640:-1처럼 특정 너비로 설정할 수도 있답니다.
  • -an: 오디오 트랙을 제거해요. 움짤에는 오디오가 필요 없으니까요.
  • -c:v libsvtav1: 바로 이 부분이 핵심이에요! AVIF 인코딩을 담당하는 libsvtav1 코덱을 사용해요. 이 코덱 덕분에 인코딩 속도가 훨씬 빨라진답니다. 일반적인 AV1 인코딩은 무척 느리다고 알려져 있지만, libsvtav1을 사용하면 쾌적하게 작업할 수 있어요.
  • -preset 8: 인코딩 속도와 품질의 균형을 조절해요. 숫자가 낮을수록 품질이 좋지만 느리고, 높을수록 빠르지만 품질이 조금 떨어질 수 있어요. 8 정도면 충분히 빠르고 좋은 품질을 얻을 수 있더라고요.
  • -crf 30: Constant Rate Factor의 약자로, 출력 품질을 조절해요. 숫자가 낮을수록 품질이 좋고 용량이 크며, 높을수록 용량이 작고 품질이 낮아져요. 30 정도면 웹에서 사용하기에 충분히 좋은 품질과 효율적인 용량을 제공해요.
  • -g 15: GOP(Group of Pictures) 간격을 설정해요. 움직이는 움짤의 부드러움에 영향을 준답니다.
  • -pix_fmt yuv420p: 픽셀 포맷을 설정해요.
  • -loop 0: 움짤이 무한 반복되도록 설정해요.
  • 마지막으로, chmod +x ~/usr/bin/video2avif.sh 명령으로 실행 권한을 부여하는 것을 잊지 마세요!

단축키로 더욱 빠르게! alias 설정법

매번 ~/usr/bin/video2avif.sh라고 입력하기 번거롭잖아요? m2avif라는 짧은 단축키(alias)를 만들어서 편리하게 사용해봅시다. .bashrc.zshrc 파일에 다음 한 줄을 추가해주세요.

alias m2avif='~/usr/bin/video2avif.sh'

파일을 수정한 후에는 source ~/.bashrc 또는 source ~/.zshrc 명령으로 변경 사항을 적용해야 해요. 이제 m2avif라고 입력하는 것만으로 AVIF 변환 스크립트를 실행할 수 있게 되었답니다!

AVIF 움짤, 직접 사용해보니!

스크립트와 alias 설정까지 마쳤다면, 이제 실제 동영상을 AVIF 움짤로 변환해볼 시간이에요. 변환하고 싶은 MOV 파일들이 있는 디렉토리로 이동한 다음, 간단하게 다음 명령을 입력해보세요.

m2avif *.MOV

이렇게 하면 현재 디렉토리의 모든 MOV 파일이 AVIF로 변환되어 avif_output 디렉토리에 저장될 거예요. 처음 AVIF 인코딩이 느리다고 걱정하셨나요? libsvtav1 덕분에 생각보다 훨씬 빠르게 변환되는 것을 경험하실 수 있을 거예요. 저도 처음에는 속도 때문에 망설였지만, libsvtav1을 사용한 후로는 고민 없이 AVIF로 변환하고 있답니다. 용량은 획기적으로 줄고, 화질은 그대로 유지되는 마법 같은 경험을 직접 해보세요!

마무리

이제 AVIF 움짤로 웹사이트 로딩 속도도 올리고, 사용자 경험도 개선해보세요! 아직 호환성이 아쉽지만, 압도적인 효율성을 생각하면 충분히 투자할 가치가 있답니다. 오늘 알려드린 FFmpeg AVIF 움짤 변환 스크립트로 여러분의 디지털 라이프가 한층 더 가벼워지기를 바랍니다.

같이 보면 좋은 글

#avif #ffmpeg #움짤 #이미지최적화 #webp #동영상변환 #파일용량줄이기 #libsvtav1 #블로그최적화 #웹퍼포먼스

Leave a Comment

error: Content is protected !!