آنچه در این مقاله میخوانید
نحوه ساخت و بهینهسازی GIF در خط فرمان لینوکس
۱۷ آبان ۱۴۰۴
فرمت GIFیکی از محبوبترین و شناخته شدهترین فرمتهای تصویری در اینترنت است که از دهه ۱۹۹۰ تاکنون در وب مورد استفاده قرار میگیرد. تفاوت اصلی GIF با فرمتهای JPG و PNG این است که میتواند چندین فریم متحرک داشته باشد و همین ویژگی آن را به یک ابزار قدرتمند برای ایجاد انیمیشنهای کوتاه و تصاویر متحرک واکنشگر تبدیل کرده است.
اگرچه GIF یک فناوری قدیمی است و از نظر کارایی و حجم فایل نسبت به ویدیوهای مدرن وب معمولاً کمتر بهینه است، اما مزیت آن این است که به عنوان تصویر شناخته میشود و نیازی به جاسازی یا لینک جداگانه ندارد. این ویژگی باعث میشود GIFها به راحتی در وبسایتها، شبکههای اجتماعی، ارائه محتوا و پروژههای تعاملی مورد استفاده قرار بگیرند.
در این مقاله، شما با ابزارهای خط فرمان برای ساخت GIF از ویدیوها، کاهش حجم و بهینهسازی کیفیت آنها آشنا میشوید. همچنین یاد میگیرید چگونه این GIFها را در محیطهای مختلف و پروژههای وب به کار ببرید و حتی آنها را با ابزارهای دیگر ترکیب کنید تا یک جریان کاری حرفهای و سبک برای تولید GIF بسازید.
همین حالا سرور مجازی لینوکس با بهترین کیفیت و قیمت استثنایی دریافت کنید!
✅فضای ذخیرهسازی کاملاً اختصاصی✅زیرساخت پایدار و بدون قطعی✅ پشتیبانی ۲۴/۷
خرید سرور مجازی لینوکس
پیشنیازها
برای دنبال کردن این آموزش، به یک سرور Ubuntu 22.04 نیاز دارید. میتوانید با دنبال کردن راهنمای ما درباره راهاندازی اولیه سرور با Ubuntu 22.04 سرور خود را آماده کنید.
همچنین برای نصب یکی از ابزارهای مورد استفاده در این آموزش، باید مدیریت بسته Homebrew را روی سیستم خود نصب کرده باشید.
آنچه در این مقاله میخوانید:
- گام اول: نصب ffmpeg، Gifski و Gifsicle در خط فرمان
- گام دوم: دانلود و بررسی یک ویدیوی نمونه
- گام سوم: بریدن یک کلیپ از ویدیو
- گام چهارم: تبدیل ویدیو به GIF
- گام پنجم: بهینهسازی، بررسی و نمایش GIF
- جمع بندی

گام اول: نصب ffmpeg، Gifski و Gifsicle در خط فرمان
در این آموزش، برای درک بهتر مثالها به سه ابزار اصلی نیاز دارید:
- ffmpeg برای برش و دستکاری ویدیوها
- Gifski برای ساخت GIF
- Gifsicle برای بهینهسازی و ویرایش بیشتر GIFها
این ابزارها روی اکثر پلتفرمها قابل دسترسی هستند.
برای نصب ffmpeg و Gifsicle در اوبونتو، کافی است از ریپازیتوری پیشفرض استفاده کنید و با پکیج apt آنها را نصب کنید. ابتدا منابع پکیجها را با دستور زیر بهروز کنید:
sudo apt update
سپس با استفاده از دستور زیر، پکیجهای ffmpeg و Gifsicle را نصب کنید:
sudo apt install ffmpeg gifsicle
آخرین ابزار مورد نیاز، Gifski است که از طریق Homebrew قابل نصب است. برای نصب آن از دستور زیر استفاده کنید:
brew install gifski
حالا که تمام ابزارهای لازم روی سیستم شما نصب شدهاند، قدم بعدی این است که یک ویدئوی نمونه تهیه کنید تا از آن GIF بسازید.
گام دوم: دانلود و بررسی یک ویدیوی نمونه
در این مرحله شما میتوانید از هر کلیپ ویدئویی موجود، یک GIF بسازید. ویدئوی مورد نظرتان را میتوانید با دستور زیر دانلود کنید:
curl -O https://deved-images.nyc3.cdn.digitaloceanspaces.com/gif-cli/app-platform.webm
curl یک ابزار خط فرمانی است که برای انجام انواع درخواستهای وب استفاده میشود. با استفاده از گزینه به همراه یک URL، -Ocurl فایل مورد نظر را دانلود کرده و با همان نام در سیستم شما ذخیره میکند.
حالا یک نسخه محلی از ویدئو دارید، بهتر است مشخصات فنی آن را بررسی کنید تا بتوانید یک GIF با کیفیت بالا بسازید. وقتی ffmpeg را نصب کردید، ابزار ffprobe نیز همراه آن نصب شده است. این ابزار میتواند زرولوشن، نرخ فریم و سایر اطلاعات مهم فایلهای رسانهای را نمایش دهد.
برای بررسی این جزئیات روی ویدئوی دانلود شده app-platform.webm، دستور زیر را اجرا کنید:
ffprobe app-platform.webm
Output
…
Input #0, matroska,webm, from 'app-platform.webm':
Metadata:
ENCODER : Lavf59.27.100
Duration: 00:01:59.04, start: -0.007000, bitrate: 1362 kb/s
Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 1920x1080, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn (default)
Metadata:
DURATION : 00:01:59.000000000
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
DURATION : 00:01:59.041000000
خروجی دستور ffprobe تمام استریمهای موجود در فایل را نشان میدهد. معمولا یک استریم ویدئو و حداقل یک استریم صدا، همچنین نرخ نمونهبرداری، کدکها و دیگر ویژگیهای هر استریم در آن ذکر شده است.
با توجه به اطلاعات مهم در خروجی، میبینید که این ویدئو:
- با رزولوشن 1080p کدگذاری شده است.
- با ۲۵ فریم بر ثانیه پخش میشود.
- تقریباً دو دقیقه طول دارد، که برای یک GIF معمولاً زیاد است!
این اطلاعات برای مرحله بعدی کافی است، حالا میتوانید یک کلیپ کوتاه از ویدیو برش دهید تا آن را به یک GIF تبدیل کنید.
گام سوم: بریدن یک کلیپ از ویدیو
در این مرحله شما، یک فایل ویدئوی دو دقیقهای دارید و از مشخصات آن مطلع هستید. قبل از اینکه بتوانید آن را به GIF تبدیل کنید، باید یک بخش کوتاهتر از ویدئو را استخراج کنید.
همانطور که میدانید پخش ویدئو در ترمینال راحت نیست، بنابراین میتوانید ویدئو را در YouTube مشاهده کنید تا بهترین نقطه برای برش را پیدا کنید. در این آموزش، ما از ثانیه ۹ تا ۱۲ ویدئو برش میدهیم تا یک انیمیشن روان و کوتاه ایجاد شود.
برای برش این بخش از ویدئو، کافی است فایل app-platform.webm را به ffmpeg بدهید و محدوده زمانی مورد نظر را مشخص کنید:
ffmpeg -ss 00:00:09 -to 00:00:12 -i app-platform.webm -c copy clip.webm
دستور بالا یک کلیپ کوتاه سه ثانیهای به نام clip.webm ایجاد میکند که آماده تبدیل به GIF است.
دستور ffmpeg به شکل زیر کار میکند:
-ss 00:00:09 -to 00:00:12:مشخصکننده زمان شروع و پایان برش است. در این مثال، ویدیو از ثانیه ۹ تا ۱۲ برش داده میشود. شما میتوانید برش را بر اساس مدت زمان یا حتی کسری از ثانیه نیز تعیین کنید.-i app-platform.webm: مسیر فایل ورودی ویدیو است که با گزینه-iمشخص میشود.-c copy: این بخش معمولاً برای تعیین کدک صوتی یا تصویری خروجی استفاده میشود. با قرار دادنcopy، ویدیو بدون بازکدگذاری کپی میشود، که سریعتر است و هیچ افت کیفیتی ایجاد نمیکند. چون قرار است این کلیپ را به GIF تبدیل کنید، حفظ فرمت اصلی کاملاً مناسب و بهینه است.clip.webm: مسیر و نام فایل خروجی است.
با اجرای این دستور، یک ویدئوی سه ثانیهای با نام clip.webm ساخته میشود. میتوانید با دستور زیر وجود فایل و حجم آن را بررسی کنید:
ls -lh clip.webm
Output
-rw-r--r-- 1 sammy sammy 600K Nov 16 14:27 clip.webm
مشاهده میکنید که این این کلیپ سه ثانیهای تنها ۶۰۰ کیلوبایت حجم دارد. این اندازه یک مبنای خوب برای مقایسه هنگام ساخت GIF در مرحله بعدی است و به شما کمک میکند حجم نهایی GIF را بهتر مدیریت کنید.
نکته: اگر روی یک سیستم محلی کار میکنید، میتوانید از ابزار رایگان و متنباز Lossless Cut برای انجام همین عملیات استفاده کنید. Lossless Cut مزیت بزرگی دارد، زیرا از دستورات ffmpeg برای استخراج سریع کلیپها بر اساس زمانبندی استفاده میکند، بدون اینکه نیاز به بارکدگذاری مجدد ویدئو داشته باشد. برخلاف اجرای مستقیم ffmpeg در خط فرمان، این ابزار یک پلیر و رابط کاربری داخلی دارد که کار با ویدئو و انتخاب محدوده برش را بسیار سادهتر میکند.
آشنایی با خط فرمان لینوکس
خط فرمان لینوکس
گام چهارم: تبدیل ویدیو به GIF
حالا که یک ویدئوی سه ثانیهای دارید و حدودی برای رزولوشن و نرخ فریم مد نظر قرار دادهاید، میتوانید آن را به GIF تبدیل کنید.
اگر میخواهید یک فرایند خودکار تبدیل ویدئو به GIF بسازید، میتوانید از ffprobe برای استخراج خودکار رزولوشن و نرخ فریم ویدئو استفاده کنید و این مقادیر را مستقیما به دستورات بعدی بدهید. در این آموزش از لیارا، ما به سادگی مقادیر منطقی و مناسب را به صورت دستی برای خروجی تعیین میکنیم.
برای ساخت GIF در خط فرمان چند گزینه دارید. میتوانید از ffmpeg به تنهایی استفاده کنید:
ffmpeg -filter_complex "[0:v] fps=12,scale=w=540:h=-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" -i clip.webm ffmpeg-sample.gif
در این مثال، رزولوشن و نرخ فریم کلیپ نصف شده و به ۱۲fps و 540p کاهش یافته است که معمولاً نقطه شروع مناسبی برای GIF است.
چون GIFها مانند تصاویر کامل دانلود میشوند، بهتر است حجم آنها زیاد نباشد، معمولا زیر ۳ مگابایت مناسب است. حجم فایل جدید را میتوانید با دستور زیر بررسی کنید:
ls -lh ffmpeg-sample.gif
Output
-rw-r--r-- 1 sammy sammy 2.0M Nov 16 14:28 ffmpeg-sample.gif
با این روش، شما یک GIF با حجم ۲ مگابایت ساختهاید. اگرچه این نتیجه مناسب است، اما با استفاده از gifski و سینتکس سادهتر، میتوانید GIF با کیفیت بهتر و حجم بهینهتر تولید کنید.
دستور زیر نمونهای از استفاده gifski برای ساخت GIF است.
gifski --fps 12 --width 540 -o gifski-sample.gif clip.webm
توجه کنید که در دستور gifski، فقط نیاز دارید جزئیات مهم مانند نرخ فریم و رزولوشن و نام فایل ورودی و خروجی را مشخص کنید. پس از اجرای دستور، میتوانید فایل خروجی را بررسی کنید تا مطمئن شوید GIF به درستی ساخته شده است:
ls -lh gifski-sample.gif
Output
-rw-r--r-- 1 sammy sammy 1.3M Nov 16 14:33 gifski-sample.gif
این GIF جدید تنها ۱.۳ مگابایت حجم دارد که همان سطح کیفیت، بهبود قابل توجهی نسبت به روش قبلی است. در این مرحله ممکن است وسوسه شوید که یک نسخه تمام فریم و تمام رزولوشن بسازید. برای درک بهتر، میتوانید این نسخه را با GIF بهینه شده مقایسه کنید:
gifski --fps 25 --width 1080 -o gifski-high.gif clip.webm
همچنین برای مشاهده حجم آخرین فایل تست، میتوانید از دستور زیر استفاده کنید:
ls -lh gifski-high.gif
Output
-rw-r--r-- 1 sammy sammy 6.9M Nov 16 14:37 gifski-high.gif
حجم ۶.۹ مگابایت قطعا بیش از حد بزرگ است، بهخصوص وقتی کلیپ ویدئوی اصلی شما تنها ۰.۶ مگابایت بود. به خاطر داشته باشید که GIFها نسبت به کدکهای ویدئویی مدرن بهینه نیستند و برای کاهش حجم، لازم است برخی تنظیمات کیفیت و رزولوشن را کمی کاهش دهید.
در مرحله نهایی این آموزش، خواهید آموخت که چگونه GIFهای خود را بهینهتر کنید تا حجم آنها کم و کیفیت حفظ شود.
گام پنجم: بهینهسازی، بررسی و نمایش GIF
در این گام، از gifsicle برای بهینهسازی GIFها استفاده میکنیم. gifsicle برای GIFها استفاده میکنیم. gifsicle برای GIFها مانند ffmpeg برای ویدئو و صدا است: تقریبا هرکاری میتواند انجام دهد، اما همین پیچیدگی باعث میشود گاهی سخت باشد. به همین دلیل، پیشنهاد میشود برای ایجاد GIF از gifski استفاده کنید و از دستورات ساده gifsicle فقط برای بهبود یا دستکاری فایلهای GIF بهره ببرید.
برای شروع، یک دستور استاندارد بهینهسازی gifsicle را اجرا کنید.
gifsicle -O3 --lossy=80 --colors 256 gifski-sample.gif -o optimized.gif
در این دستور:
- گزینه
-O3برای بیشترین سطح بهینهسازی استفاده شده است. --lossy 80اجازه میدهد تا حداکثر ۲۰٪ کاهش کیفیت نسبت به فایل اصلی رخ دهد.--colors 256حداکثر ۲۵۶ رنگ برای تصویر خروجی تعیین میکند.
نتیجه این بهینهسازی معمولا کیفیت بسیار خوبی دارد و تقریبا هیچ افت قابل مشاهدهای در تصویر ایجاد نمیکند. دلیل این است که GIFها از فشردهسازی بین فریم ویدیویی مدرن یا تکنیکهای فشردهسازی تصاویر مانند JPEG استفاده نمیکنند.
همچنین در اینجا منظور از ۲۵۶ رنگ، هر پالت ۲۵۶ رنگی است که بر اساس رنگهای موجود در GIF ساخته شده و محدود به ۲۵۶ رنگ متداول نیست. به طور کلی، فشردهسازی GIF چندان قابل تشخیص نیست و میتوان با خیال راحت حجم فایل را کاهش داد.
مانند مرحله قبل، حالا میتوانید حجم فایل بهینه شده را بررسی کنید:
ls -lh optimized.gif
Output
-rw-r--r-- 1 sammy sammy 935K Nov 16 14:44 optimized.gif
دستور بالا به شما نشان میدهد که GIF پس از بهینهسازی چه میزان فضا اشغال میکند و تا چه حد حجم آن کاهش یافته است.
در این مرحله، حجم فایل بهینهشده به ۹۳۵ کیلوبایت کاهش یافته است، که کمی بزرگتر از ویدئوی اصلی است و برای یک تصویر متحرک کاملا معقول محسوب میشود. این همان GIF بهینهای است که قبلا در این آموزش مشاهده شد.
برای یادگیری روشهای بیشتر ویرایش و دستکاری GIFها، میتوانید به راهنمای Gifsicle مراجعه کنید. به عنوان مثال، میتوانید GIF را به چندین فایل تصویری جداگانه تبدیل کنید، بهطوری که هر فایل نشاندهنده یک فریم از انیمیشن باشد.
gifsicle --explode optimized.gif
با این روش، چندین فایل جداگانه ایجاد میشوند که نام آنها به شکل زیر خواهد بود:
ls -lh optimized*
Output
-rw-r--r-- 1 sammy sammy 935K Nov 16 14:46 optimized.gif
-rw-r--r-- 1 sammy sammy 20K Nov 16 14:54 optimized.gif.000
-rw-r--r-- 1 sammy sammy 17K Nov 16 14:54 optimized.gif.001
-rw-r--r-- 1 sammy sammy 22K Nov 16 14:54 optimized.gif.002
-rw-r--r-- 1 sammy sammy 22K Nov 16 14:54 optimized.gif.003
…
همچنین میتوانید GIF خود را با استفاده از گزینههای زیر چرخش دهید:
--rotate-90برای چرخش ۹۰ درجه--rotate-180برای چرخش ۱۸۰ درجه
با این گزینهها میتوانید انیمیشن را بدون نیاز به ویرایش ویدئو اصلی تنظیم کنید.
gifsicle --rotate-90 optimized.gif -o rotated.gif
با اینکه GIFها بهینه نیستند، هنوز هم بسیار کاربردیاند، چون تقریبا در هر محیطی قابل استفاده هستند. وقتی میخواهید یک کلیپ کوتاه بهصورت خودکار پخش شود یا بخواهید بهجای ویدیو یک تصویر متحرک داشته باشید، هیچ چیزی جای یک GIF ساده را نمیگیرد.
هاست لینوکس چیست؟ (بررسی جامع ویژگیها + مزایا)
هاست لینوکس
جمع بندی
در این آموزش از لیارا، با استفاده از چند ابزار مختلف، یک GIF بهینه و با کیفیت از یک ویدیوی موجود ساختید. همچنین با ابزارهای متنباز برای ویرایش ویدیو و GIF آشنا شدید و گزینههایی برای ویرایش بیشتر GIFها بررسی شد. GIFها تکنولوژی جالب و کمی قدیمی هستند، شاید در بسیاری از جنبهها مدرن نباشند اما هنوز در برخی شرایط هیچ جایگزین واقعی ندارند. پس حالا میتوانید GIFهای خود را با دقت و خلاقیت بهکار ببرید و از آنها در پروژهها و محتوای خود استفاده کنید.