क्लाइंट और ऐप डेवलपमेंट के काम के लिए, मुझे अक्सर इसकी आवश्यकता होती है वीडियो सामग्री को शीघ्रता से देखें:
- उत्पाद प्रबंधकों के लिए पूर्वावलोकन एनिमेशन
- दस्तावेज़ों या पीआरडी के लिए डेमो क्लिप
- सोशल पोस्ट या लैंडिंग पेज के लिए हल्का मोशन
इन मामलों में, एक MP4 फ़ाइल से कुछ मुख्य फ़्रेम निकालकर उन्हें लूपिंग WebP एनिमेशन में बदलना। आमतौर पर इतना ही काफी होता है—और यह पूरा वीडियो अपलोड करने की तुलना में काफी हल्का होता है।.

यह लेख एक जानकारी साझा करता है। macOS के लिए एक-क्लिक शेल स्क्रिप्ट वह:
- यह MP4 फ़ाइल से 6-12 समान दूरी वाले फ़्रेम निकालता है।
- उनका आकार बदलकर 720px चौड़ाई का कर देता है
- लूपिंग वेबपी एनीमेशन बनाता है
- और स्वचालित रूप से इंस्टॉल हो जाता है
एफएफएमपेगअगर यह गायब है
यह सब टर्मिनल में एक ही कमांड से चलता है।.
1. स्क्रिप्ट क्या करती है
macOS पर, स्क्रिप्ट extract_even_frames_webp.sh प्रदान करता है:
- स्वचालित
एफएफएमपेगपता लगाना और स्थापना- जाँच करता है कि
एफएफएमपेगउपलब्ध है - यदि नहीं, तो होमब्रू (यदि आवश्यक हो) स्थापित करता है और फिर इंस्टॉल करता है।
एफएफएमपेग
- जाँच करता है कि
- यहां तक कि फ्रेम निष्कर्षण भी
- वीडियो की अवधि की गणना करता है
- समान रूप से नमूने 6–12 फ्रेम पूरे क्लिप में
- डिफ़ॉल्ट रूप से 6 फ़्रेम होते हैं, लेकिन आप इनकी संख्या को अपनी आवश्यकतानुसार बदल सकते हैं।
- WebP एनिमेशन जनरेशन
- निकाले गए PNG फ़्रेमों को एक साथ मिलाता है लूपिंग वेबपी
- आउटपुट चौड़ाई है 720px डिफ़ॉल्ट रूप से (ऊंचाई आनुपातिक रूप से समायोजित होती है)
- गुणवत्ता को इसके माध्यम से समायोजित किया जा सकता है
-q:v
- स्वचालित सफाई
- मध्यवर्ती फ़्रेमों को एक अस्थायी निर्देशिका में संग्रहीत करता है
- WebP जनरेट होने के बाद अस्थायी डायरेक्टरी को हटा देता है
- यह छोटे और लंबे दोनों प्रकार के वीडियो के साथ काम करता है।
- यदि वीडियो बहुत छोटा है, तो फ्रेम की संख्या स्वचालित रूप से कम हो जाती है।
- लंबे वीडियो के लिए, फ्रेम हमेशा पूरी अवधि में समान रूप से फैले होते हैं।
2. यह आंतरिक रूप से कैसे काम करता है
स्क्रिप्ट के पीछे का मूल तर्क यह है।.
2.1 निर्भरताओं की जाँच करें
स्क्रिप्ट सबसे पहले यह जांच करती है कि क्या एफएफएमपेग स्थापित है:
- उपयोग
command -v ffmpeg - यदि नहीं मिलता है, तो यह जाँच करता है
शराब बनाना- यदि Homebrew मौजूद नहीं है, तो यह Homebrew को इंस्टॉल कर देता है।
- फिर उपयोग करता है
brew install ffmpegस्थापित करने के लिएएफएफएमपेग
2.2 वीडियो की अवधि प्राप्त करें
का उपयोग करते हुए एफएफ़प्रोब, स्क्रिप्ट में लिखा है कि वीडियो की कुल लंबाई (सेकंड में).
इसके आधार पर और वांछित फ्रेम संख्या के आधार पर, यह फ्रेमों के बीच समय अंतराल की गणना करता है।.
2.3 समान रूप से नमूना फ्रेम
प्रत्येक फ्रेम इंडेक्स के लिए, यह:
- टाइमस्टैम्प की गणना करता है =
सूचकांक × अंतराल - उपयोग
ffmpeg -ssउस समय स्थिति पर जाने के लिए - यह ठीक एक फ्रेम निकालता है
- इसे इसके साथ स्केल करता है
स्केल=720:-1इसलिए चौड़ाई 720px है और ऊंचाई आनुपातिक है।
2.4 वेबपी एनिमेशन बनाएं
सभी फ़्रेमों को PNG के रूप में सहेजे जाने के बाद, स्क्रिप्ट कॉल करती है एफएफएमपेग पुनः:
- इन्हें क्रम से पढ़ें (
%03d.png) - इन्हें एनिमेटेड वेबपी के रूप में एन्कोड करें
- तय करना
-लूप 0इसलिए एनीमेशन अनिश्चित काल तक चलता रहता है - गुणवत्ता को नियंत्रित करें
-q:v 70(कम मान = बेहतर गुणवत्ता, बड़ी फ़ाइल)
2.5 सफाई
सभी मध्यवर्ती PNG फ़ाइलें एक अस्थायी निर्देशिका में संग्रहीत की जाती हैं जिसे इसके द्वारा बनाया गया है mktemp -d.
WebP जनरेट होने के बाद, उस डायरेक्टरी को हटा दिया जाता है। आरएम -आरएफ.
3. पूर्ण शेल स्क्रिप्ट: extract_even_frames_webp.sh
आप निम्नलिखित स्क्रिप्ट को इस रूप में सहेज सकते हैं। extract_even_frames_webp.sh अपने मैक पर:
#!/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 पर स्क्रिप्ट का उपयोग कैसे करें
- स्क्रिप्ट को सेव करें ऊपर दी गई सामग्री को इस रूप में सहेजें
extract_even_frames_webp.sh, उदाहरण के लिए, आपकी होम डायरेक्टरी में।. - इसे निष्पादन की अनुमति दें
chmod +x extract_even_frames_webp.sh
- बुनियादी उपयोग
./extract_even_frames_webp.sh input.mp4 output.webp
यह करेगा:
- जांचें या स्थापित करें
एफएफएमपेग - समान दूरी पर स्थित 6 फ्रेम निकालें
- उत्पन्न
आउटपुट.वेबपी720px चौड़ाई पर
- फ़्रेमों की संख्या निर्दिष्ट करें (6–12)
./extract_even_frames_webp.sh input.mp4 output.webp 8
इससे डिफ़ॉल्ट 6 फ़्रेमों के बजाय 8 फ़्रेम निकाले जाएँगे।.
5. यह कार्यप्रणाली क्यों उपयोगी है?
वीडियो एडिटर को मैन्युअल रूप से खोलने या जीयूआई कनवर्टर पर क्लिक करने की तुलना में, इस स्क्रिप्ट के कुछ फायदे हैं:
- कोई मैनुअल सेटअप नहीं।
- स्वचालित रूप से इंस्टॉल हो जाता है
एफएफएमपेग(और जरूरत पड़ने पर होमब्रू का इस्तेमाल भी कर सकते हैं) - इंस्टॉलर खोजने या कमांड याद रखने की कोई आवश्यकता नहीं है।
- स्वचालित रूप से इंस्टॉल हो जाता है
- स्मार्ट फ्रेम सैंपलिंग
- छोटे वीडियो क्लिप के लिए, यह फ्रेम की संख्या को स्वचालित रूप से कम कर देता है।
- लंबे वीडियो के लिए, फ्रेम हमेशा पूरी अवधि में समान रूप से फैले होते हैं।
- गुणवत्ता और आकार नियंत्रण
-q:vयह आपको फ़ाइल आकार के अनुसार WebP गुणवत्ता को समायोजित करने की सुविधा देता है।स्केल=720:-1यह वेब के अनुकूल चौड़ाई और एक समान आस्पेक्ट रेशियो प्रदान करता है।
- डिफ़ॉल्ट रूप से लूपिंग
-लूप 0यह वेबपी एनिमेशन को हमेशा के लिए लूप में फंसा देता है।- दस्तावेज़ों या साइटों पर पूर्वावलोकन, डेमो और सूक्ष्म गति दिखाने के लिए बेहतरीन।
- डिस्क उपयोग को साफ़ करें
- अस्थायी 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 चौड़ाई का कर दें।
- एक का निर्माण करें लूपिंग वेबपी एनिमेशन
फिर आप इस WebP फ़ाइल को इसमें डाल सकते हैं:
- उत्पाद दस्तावेज़ या फ़ेशू/नोशन दस्तावेज़ को हल्का पूर्वावलोकन
- सोशल पोस्ट या लैंडिंग पेज के रूप में ऑटो-प्लेइंग मोशन थंबनेल
- पीपीटी प्रेजेंटेशन और आंतरिक डेमो के लिए, जहां पूरा वीडियो अनावश्यक होगा।
7. विस्तार के लिए विचार
यह स्क्रिप्ट एक शुरुआती बिंदु है—आप इसे आसानी से अपने कार्यप्रवाह के अनुसार बदल सकते हैं:
- गतिशील फ्रेम गणना
- वीडियो की लंबाई के आधार पर स्वचालित रूप से 6-12 फ्रेम चुनें
- उदाहरण के लिए, लंबे क्लिप के लिए अधिक फ्रेम ताकि अधिक अवस्थाएँ दिखाई जा सकें।
- अनुकूलित आकार
- परिवर्तन
स्केल=720:-1आपकी उत्पाद टीम द्वारा पसंद की गई किसी भी चौड़ाई तक - या चौड़ाई को एक पैरामीटर के रूप में प्रदर्शित करें:
./script.sh in.mp4 out.webp 8 1080
- परिवर्तन
- प्रचय संसाधन
- सभी प्रक्रियाओं को पूरा करने के लिए इस स्क्रिप्ट को एक और लूप में लपेटें।
.mp4एक फ़ोल्डर में फ़ाइलें - यह तब उपयोगी होता है जब आप एक साथ कई फीचर डेमो एक्सपोर्ट करते हैं।
- सभी प्रक्रियाओं को पूरा करने के लिए इस स्क्रिप्ट को एक और लूप में लपेटें।
लेखक का नोट
यह स्क्रिप्ट मेरे वास्तविक macOS डेवलपमेंट वर्कफ़्लो से ली गई है, जिसका उपयोग MP4 वीडियो को हल्के WebP प्रीव्यू में बदलने के लिए किया जाता है। मैं इसे रोज़ाना क्लाइंट डेवलपमेंट में दस्तावेज़ों और सोशल पोस्ट के लिए डेमो एनिमेशन बनाने में उपयोग करता हूँ। GPT का उपयोग केवल इस लेख के अंग्रेज़ी संस्करण के अनुवाद, संरचना और परिष्करण में सहायता के लिए किया गया है—स्क्रिप्ट का लॉजिक, कार्यान्वयन विवरण और उपयोग के तरीके सभी मेरे अपने प्रोजेक्ट अनुभव से लिए गए हैं।.


