macOS용 원클릭 스크립트로 MP4 파일을 반복 재생되는 WebP GIF 스타일 애니메이션으로 변환하세요.

클라이언트 업무 및 앱 개발 업무를 위해 저는 종종 다음과 같은 필요가 있습니다. 동영상 콘텐츠를 빠르게 시각화합니다:

  • 제품 관리자를 위한 미리보기 애니메이션
  • 문서 또는 PRD용 데모 영상
  • 소셜 미디어 게시물이나 랜딩 페이지에 적합한 가벼운 모션 그래픽

이러한 경우, MP4 파일에서 몇 개의 주요 프레임을 추출하여 반복 재생되는 WebP 애니메이션으로 변환합니다. 일반적으로 이 정도면 충분하며, 전체 영상을 업로드하는 것보다 훨씬 가볍습니다.

이 기사는 다음을 공유합니다. macOS용 원클릭 셸 스크립트 저것:

  • MP4에서 6~12개의 균일한 간격의 프레임을 추출합니다.
  • 크기를 720px 너비로 조정합니다.
  • 반복 재생되는 WebP 애니메이션을 생성합니다.
  • 자동으로 설치됩니다 ffmpeg 만약 그것이 없다면

이 모든 작업은 터미널에서 단 하나의 명령으로 실행됩니다.


1. 스크립트의 기능

macOS에서 스크립트는 다음과 같습니다. extract_even_frames_webp.sh 제공합니다:

  1. 오토매틱 ffmpeg 감지 및 설치
    • 확인 여부 ffmpeg 이용 가능합니다
    • 그렇지 않으면 (필요한 경우) Homebrew를 설치한 다음 설치합니다. ffmpeg
  2. 프레임 추출조차도
    • 동영상 재생 시간을 계산합니다.
    • 균등하게 샘플링 6~12프레임 영상 전체에 걸쳐
    • 기본값은 6프레임이지만, 프레임 수를 사용자 지정할 수 있습니다.
  3. WebP 애니메이션 생성
    • 추출된 PNG 프레임을 하나로 결합합니다. 웹P 루핑
    • 출력 너비는 720픽셀 기본적으로 (높이는 비례적으로 조정됩니다)
    • 품질은 다음을 통해 조정할 수 있습니다. -q:v
  4. 자동 정리
    • 중간 프레임을 임시 디렉터리에 저장합니다.
    • WebP 파일 생성 후 임시 디렉토리를 삭제합니다.
  5. 짧은 영상과 긴 영상 모두에서 작동합니다.
    • 동영상 길이가 매우 짧으면 프레임 수가 자동으로 줄어듭니다.
    • 긴 동영상의 경우, 프레임은 전체 재생 시간 동안 항상 균등한 간격으로 배치됩니다.

2. 내부 작동 방식

이 스크립트의 기본 논리는 다음과 같습니다.

2.1 종속성 확인

스크립트는 먼저 다음을 확인합니다. ffmpeg 설치되었습니다:

  • 용도 명령어 -v ffmpeg
  • 찾을 수 없으면 다음을 확인합니다. 꾸미다
    • Homebrew가 설치되어 있지 않으면 Homebrew를 설치합니다.
    • 그런 다음 사용합니다 brew install ffmpeg 설치하기 ffmpeg

2.2 비디오 재생 시간 가져오기

사용 ffprobe, 스크립트는 다음과 같이 읽습니다. 동영상의 총 길이(초).
이를 바탕으로 원하는 프레임 수를 고려하여 프레임 간 시간 간격을 계산합니다.

2.3 프레임을 균등하게 샘플링

각 프레임 인덱스에 대해 다음과 같습니다.

  • 타임스탬프를 계산합니다 = 인덱스 × 간격
  • 용도 ffmpeg -ss 해당 시간 위치로 이동하려면
  • 정확히 한 프레임을 추출합니다.
  • 크기를 조정합니다. 스케일=720:-1 따라서 너비는 720px이고 높이는 그에 비례합니다.

2.4 WebP 애니메이션 제작

모든 프레임이 PNG 파일로 저장되면 스크립트가 호출됩니다. ffmpeg 다시:

  • 순서대로 읽으세요.%03d.png)
  • 애니메이션 WebP 형식으로 인코딩합니다.
  • 세트 -루프 0 그래서 애니메이션이 무한히 반복됩니다.
  • 품질을 관리하세요 -q:v 70 (값이 낮을수록 화질이 높고 파일 크기가 커집니다.)

2.5 정리

모든 중간 PNG 파일은 임시 디렉터리에 저장됩니다. mktemp -d.
WebP 파일이 생성된 후 해당 디렉터리는 삭제됩니다. rm -rf.


3. 전체 셸 스크립트: extract_even_frames_webp.sh

다음 스크립트를 다음과 같이 저장할 수 있습니다. extract_even_frames_webp.sh Mac에서:

#!/bin/bash

# Usage: ./extract_even_frames_webp.sh input.mp4 output.webp [frames]
# frames is optional, default 6, maximum 12

INPUT="$1"
OUTPUT="$2"
FRAMES="${3:-6}"

# Cap maximum frames at 12
if [ "$FRAMES" -gt 12 ]; then
    FRAMES=12
fi

if [ -z "$INPUT" ] || [ -z "$OUTPUT" ]; then
    echo "Usage: $0 input.mp4 output.webp [frames]"
    exit 1
fi

# ---------------------------------
# 1️⃣ Check ffmpeg
# ---------------------------------
if ! command -v ffmpeg >/dev/null 2>&1; then
    echo "⚠️ ffmpeg not found, starting installation..."
    if ! command -v brew >/dev/null 2>&1; then
        echo "⚠️ Homebrew not found, installing Homebrew..."
        /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
        echo "✅ Homebrew installed"
    else
        echo "✅ Homebrew already installed"
    fi
    brew update
    brew install ffmpeg
    if ! command -v ffmpeg >/dev/null 2>&1; then
        echo "❌ ffmpeg installation failed, please check manually"
        exit 1
    fi
    echo "🎉 ffmpeg installed successfully!"
else
    echo "✅ ffmpeg is already installed"
fi

# ---------------------------------
# 2️⃣ Get video duration
# ---------------------------------
DURATION=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$INPUT")
if [[ -z "$DURATION" ]]; then
    echo "❌ Failed to get video duration"
    exit 1
fi
DURATION=${DURATION%.*}  # integer seconds

# If video is shorter than requested frames, match frame count to duration
if [ "$DURATION" -lt "$FRAMES" ]; then
    FRAMES=$DURATION
fi

echo "📹 Video length: ${DURATION}s, extracting $FRAMES frames evenly"

# ---------------------------------
# 3️⃣ Create temporary directory
# ---------------------------------
TMPDIR=$(mktemp -d)

# ---------------------------------
# 4️⃣ Calculate interval
# ---------------------------------
INTERVAL=$(echo "scale=6; $DURATION/$FRAMES" | bc)
echo "⏱ Frame interval: $INTERVAL seconds"

# ---------------------------------
# 5️⃣ Extract frames
# ---------------------------------
for i in $(seq 0 $(($FRAMES-1))); do
    TIME=$(echo "$i * $INTERVAL" | bc)
    printf -v FILENAME "%03d.png" $((i+1))
    ffmpeg -ss "$TIME" -i "$INPUT" -frames:v 1 -vf "scale=720:-1" \
        "$TMPDIR/$FILENAME" -hide_banner -loglevel error
done

# ---------------------------------
# 6️⃣ Generate animated WebP
# ---------------------------------
ffmpeg -y -i "$TMPDIR/%03d.png" -vcodec libwebp -lossless 0 -q:v 70 \
    -loop 0 -preset picture "$OUTPUT" -hide_banner -loglevel error

# ---------------------------------
# 7️⃣ Clean up
# ---------------------------------
rm -rf "$TMPDIR"

echo "🎉 Done! Generated file: $OUTPUT"

4. macOS에서 스크립트를 사용하는 방법

  1. 스크립트를 저장하세요 위 내용을 다음과 같이 저장하세요. extract_even_frames_webp.sh, 예를 들어 홈 디렉터리에 있습니다.
  2. 실행 권한을 부여하세요
chmod +x extract_even_frames_webp.sh
  1. 기본 사용법
./extract_even_frames_webp.sh input.mp4 output.webp

이것은 다음과 같을 것입니다:

  • 확인 또는 설치 ffmpeg
  • 균등한 간격으로 6개의 프레임을 추출합니다.
  • 생성 output.webp 720px 너비에서
  1. 프레임 수를 지정하십시오(6~12).
./extract_even_frames_webp.sh input.mp4 output.webp 8

이렇게 하면 기본값인 6프레임 대신 8프레임이 추출됩니다.


5. 이 워크플로가 유용한 이유

수동으로 비디오 편집기를 열거나 GUI 변환기를 클릭하는 것과 비교했을 때, 이 스크립트는 몇 가지 장점이 있습니다.

  1. 수동 설정 없음
    • 자동으로 설치됩니다 ffmpeg (필요하다면 홈브루도 포함)
    • 설치 프로그램을 찾거나 명령어를 기억할 필요가 없습니다.
  2. 스마트 프레임 샘플링
    • 짧은 영상의 경우 프레임 수를 자동으로 줄입니다.
    • 긴 동영상의 경우, 프레임은 항상 전체 재생 시간 동안 균등한 간격으로 배치됩니다.
  3. 품질 및 크기 관리
    • -q:v WebP 품질과 파일 크기 간의 조정을 가능하게 합니다.
    • 스케일=720:-1 웹 친화적인 너비와 일관된 화면 비율을 제공합니다.
  4. 기본적으로 반복
    • -루프 0 WebP 애니메이션이 무한 반복되도록 만듭니다.
    • 문서나 웹사이트의 미리보기, 데모, 그리고 미묘한 움직임에 적합합니다.
  5. 디스크 사용량 정리
    • 임시 PNG 프레임은 임시 폴더에 저장되었다가 사용 후 삭제됩니다.
    • 시간이 지나도 남은 파일이 쌓이지 않습니다.

6. 예시: 20초 분량의 MP4 파일을 WebP 미리보기로 변환하기

만약 당신에게 그런 상황이 있다고 상상해 보세요. 20초 분량의 기능 데모 영상 그리고 실행하세요:

./extract_even_frames_webp.sh demo.mp4 demo-preview.webp 6

스크립트는 다음과 같은 기능을 수행합니다.

  • 대략적인 간격을 계산하세요 3.33초
  • 6프레임을 추출합니다. 0초, 3.33초, 6.66초, 10초, 13.33초, 16.66초
  • 이미지 크기를 너비 720px로 조정하세요.
  • 건설하다 웹P 루핑 생기

그런 다음 이 WebP 파일을 다음 위치에 드롭하면 됩니다.

  • 제품 문서 또는 Feishu/Notion 문서를 경량 미리보기
  • 소셜 미디어 게시물 또는 랜딩 페이지 자동 재생 모션 썸네일
  • PPT 자료나 내부 데모처럼 전체 영상이 과한 경우에 사용하는 경우

7. 확장 아이디어

이 스크립트는 시작점일 뿐이며, 여러분의 작업 흐름에 맞게 쉽게 수정할 수 있습니다.

  1. 동적 프레임 수
    • 동영상 길이에 따라 6~12프레임 중 하나를 자동으로 선택합니다.
    • 예를 들어, 더 긴 클립에는 더 많은 프레임을 사용하여 더 많은 상태를 보여줄 수 있습니다.
  2. 맞춤 사이즈
    • 변화 스케일=720:-1 제품 팀에서 선호하는 어떤 너비로든 조정 가능합니다.
    • 또는 너비를 매개변수로 노출합니다. ./script.sh in.mp4 out.webp 8 1080
  3. 일괄 처리
    • 이 스크립트를 다른 루프로 감싸서 모두 처리하세요. .mp4 폴더 안의 파일들
    • 여러 기능 데모를 한 번에 내보낼 때 유용합니다.

저자의 말

이 스크립트는 MP4 비디오를 용량이 작은 WebP 미리보기 이미지로 변환하는 제 실제 macOS 개발 워크플로에서 가져온 것입니다. 저는 이 스크립트를 활용하여 문서 및 소셜 미디어 게시물용 데모 애니메이션을 제작하는 데 매일 사용하고 있습니다. GPT는 이 글의 영어 버전을 번역, 구성 및 다듬는 데만 사용되었으며, 스크립트의 논리, 구현 세부 사항 및 사용 패턴은 모두 제 프로젝트 경험을 바탕으로 작성되었습니다.

저자 소개

게시물 공유:

AI로 요약하기

목차

연결 상태 유지

더 많은 업데이트

로스앤젤레스 모임: AI 프로덕션 탐구

데모 제작부터 최종 납품까지, 크리에이터들은 AI가 실제 제작 과정에 어떻게 접목될지 새롭게 생각하고 있습니다. 2월 7일, Ima Studio는 로스앤젤레스에서 'AI 기반 제작 탐구' 행사를 개최했습니다.

2026년에 절대 놓쳐서는 안 될 AI 영화제 TOP 5

AI가 생성한 영상이 투박하거나 미완성된 느낌을 주는지 여전히 궁금하다면, 2025년에는 이미 그 답을 찾을 수 있을 겁니다. 점점 더 많은 크리에이터들이 AI 기반 콘텐츠를 제작하고 있기 때문입니다.