روش انجام
تبدیل ویدیو به GIF

GIF فرمتی از سال ۱۹۸۷ است با محدودیت ۲۵۶ رنگ و بدون صدا، و فایلهایی بسیار بزرگتر از ویدیوی اصلی تولید میکند. با این حال، وقتی چیزی باید در هر جا بهطور خودکار پخش و تکرار شود، همچنان پاسخ درستی است — اپلیکیشنهای چت، مستندات، انجمنها. آن را کوتاه، کوچک و با نرخ فریم پایین نگه دارید: اندازهگیریهای ما در زیر نشان میدهد که پنج ثانیه با عرض ۴۸۰ پیکسل ۵۴۴ کیلوبایت هزینه دارد، و با عرض ۳۲۰ پیکسل و ۸fps تنها ۱۶۸ کیلوبایت.
اندازههای اندازهگیریشده، برای برنامهریزی شما
این اعداد از یک کلیپ پنجثانیهای است که با چهار تنظیم روی سرور خودمان تبدیل شده است. فیلمبرداری واقعی متفاوت است — محتوای پرجزئیات و پرحرکت سنگینتر میشود — اما نسبتها ثابت میمانند.
| عرض | نرخ فریم | ۵ ثانیه |
|---|---|---|
| ۴۸۰ px | ۱۲ fps | ۵۴۴ KB |
| ۴۸۰ px | ۸ fps | ۳۶۰ KB |
| ۳۲۰ px | ۱۲ fps | ۲۴۸ KB |
| ۳۲۰ px | ۸ fps | ۱۶۸ KB |
از این جدول دو نسبت مفید به دست میآید. کاهش از ۱۲fps به ۸ حدود یکسوم صرفهجویی میکند. کاهش عرض از ۴۸۰ به ۳۲۰ بیش از نیمی صرفهجویی میکند — ابعاد اهمیت بیشتری از نرخ فریم دارند، چون هر پیکسل در هر فریم ذخیره میشود.
برای مقایسه، کلیپ منبع یک فایل MP4 با حجم ۲۸ کیلوبایت بود. نسخههای GIF شش تا بیست برابر بزرگتر هستند برای نتیجهای کوتاهتر، بیصدا و با کیفیت پایینتر. این یک نقص در تبدیل نیست؛ این طبیعت این فرمت است.

دستوری که کار میکند
با استفاده از ffmpeg که رایگان است و روی هر پلتفرمی در دسترس است. این نسخه دومرحلهای است و مرحله اضافی ارزشش را دارد:
ffmpeg -ss 10 -t 5 -i input.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" -loop 0 output.gif
-ss 10— شروع از ثانیه دهم.-t 5— گرفتن پنج ثانیه.fps=12— نرخ فریم. بازه مفید ۸ تا ۱۵ است.scale=480:-1— عرض بر حسب پیکسل؛ ارتفاع بهطور خودکار دنبال میکند.palettegenوpaletteuse— اصلاح رنگ، که در ادامه توضیح داده میشود.-loop 0— حلقه بینهایت.
-ss و -t را قبل از -i قرار دهید تا تبدیل از همان نقطه شروع شود، بهجای آنکه ابتدا کل فایل رمزگشایی شود. در یک ویدیوی طولانی، این تفاوت بین ثانیهها و دقیقههاست.
چرا مرحله پالت اهمیت دارد
GIF اجازه ۲۵۶ رنگ در هر تصویر را میدهد. ویدیو حاوی میلیونها رنگ است. چیزی باید انتخاب کند کدام ۲۵۶ رنگ، و همین انتخاب است که یک GIF مناسب را از یک GIF لکهدار جدا میکند.
بدون مرحله پالت، از یک جدول رنگ عمومی استفاده میشود و نتیجه نواربندی نشان میدهد — آسمان به نوارهایی تقسیم میشود، رنگ پوست لکهدار میشود، گرادیانها به پله تبدیل میشوند. با این مرحله، ffmpeg کلیپ خاص شما را بررسی میکند، یک پالت از رنگهای واقعاً موجود میسازد و سپس بر اساس آن کدگذاری میکند.
یک هشدار صادقانه از اندازهگیری خودمان: نسخه دارای پالت همیشه کوچکتر نیست. روی یک کلیپ آزمایشی، این نسخه ۲۷۸ کیلوبایت در برابر ۱۵۹ کیلوبایت نسخه ساده تولید کرد — فایلی بزرگتر که بهطور قابلتوجهی بهتر به نظر میرسد، چون پالت غنیتر با کارایی کمتری فشرده میشود.
پس این معامله کیفیت در برابر اندازه است، نه یک بهبود رایگان. اگر اندازه حیاتی است، بهجای حذف پالت، ابعاد و نرخ فریم را کاهش دهید؛ این کار از نظر بصری هزینه کمتری دارد.
کوچک نگهداشتن آن
- کوتاهش کنید. اندازه مستقیماً با مدت زمان متناسب است. سه ثانیه بهجای ده ثانیه، بزرگترین صرفهجویی منفرد موجود است.
- عرض را کاهش دهید. ۳۲۰ تا ۴۸۰ پیکسل برای یک چت یا سند کاملاً کافی است.
- نرخ فریم را پایین بیاورید. ۱۰ تا ۱۲fps برای بیشتر حرکتها خوب به نظر میرسد؛ ۸ برای حرکت آهسته مناسب است.
- روی چیزی که مهم است کراپ کنید. فضای خالی همان هزینهای را دارد که حرکت دارد.
- از فیلمهای شلوغ پرهیز کنید. باران، کاغذرنگی و لرزش دوربین در هر فرمتی پرهزینهاند و در این فرمت مخرب هستند.
ابتدا مدت زمان، سپس ابعاد، سپس نرخ فریم. این ترتیب بیشترین صرفهجویی را با کمترین افت قابلمشاهده به شما میدهد.
چه زمانی اصلاً نباید از GIF استفاده کرد
صادقانه بگویم، بیشتر اوقات. این فرمت بهخاطر سازگاری زنده مانده، نه شایستگی.
در جایی که مقصد پشتیبانی میکند، بهجای آن از یک MP4 کوتاه استفاده کنید. هر پلتفرم مدرنی ویدیوی بیصدا را بهطور خودکار پخش و تکرار میکند، فایل بخش کوچکی از اندازه است، رنگ کامل است و میتواند بدون پوچشدن طولانیتر باشد. بیشتر «GIF»های امروزی در پلتفرمهای اجتماعی در واقع فایلهای MP4 بیصدایی هستند که این نام را دارند.
برای انیمیشن روی یک وبسایت از WebP یا AVIF استفاده کنید. فشردهسازی بسیار بهتر، رنگ کامل و پشتیبانی توسط هر مرورگر فعلی.
از GIF استفاده کنید وقتی مقصد واقعاً به آن نیاز دارد: انجمنهای قدیمی، برخی اپلیکیشنهای چت، امضای ایمیل، سیستمهای مستندسازی که تصویر میپذیرند اما ویدیو نه، و هرجا که پخش خودکار باید بدون هیچ پخشکنندهای کار کند.
این مورد آخر واقعی است و همین دلیل ماندگاری این فرمت است. یک GIF در همهجا یک تصویر است، و یک تصویر نیازی به اجازه، پخشکننده یا پشتیبانی کدک ندارد.
شروع از یک ویدیوی دانلودشده
یک نکته کاربردی درباره اینکه ابتدا کدام کیفیت را دانلود کنید، چون یک GIF معمولاً از چیزی که قبلاً ذخیره شده ساخته میشود.
یک کیفیت پایین دانلود کنید. GIF عرضی بین ۳۲۰ تا ۴۸۰ پیکسل خواهد داشت، پس دانلود ۱۰۸۰p برای ساخت یک GIF ۳۲۰ پیکسلی، پهنای باند و فضای ذخیرهسازی را برای جزئیاتی هدر میدهد که در همان مرحله اول تبدیل دور ریخته میشود.
۴۸۰p برای هر GIF بهراحتی کافی است، و در یک ویدیوی منبع طولانی، تقریباً یکسوم اندازه ۱۰۸۰p است — اندازههای اندازهگیریشده اینجا هستند.
استثنا کراپ کردن است. اگر قصد دارید به بخش کوچکی از فریم کراپ کنید، از کیفیت بالاتری شروع کنید: کراپ در ۱۰۸۰p و سپس مقیاسدهی به ۴۸۰، جزئیاتی را حفظ میکند که کراپ مستقیم در ۴۸۰p نخواهد داشت.
چرا ما تبدیل به GIF را ارائه نمیدهیم، با اینکه آن را آزمایش کردهایم
ما ffmpeg را روی سرور داریم، این کار را خوب انجام میدهد، و اضافهکردن یک دکمه «تبدیل به GIF» یک بعدازظهر زمان میبرد. اندازهگیریهای این مقاله از اجرای دقیقاً همین تبدیل روی ماشین خودمان به دست آمده، پس این یک موضع نظری نیست.
دلیل اینکه این یک قابلیت نیست، هزینه است، و بهطور مشخص شکل این هزینه. هر کار دیگری که انجام میدهیم یا یک لینک مستقیم است یا یک ریمکس — کپیکردن جریانها به یک کانتینر بدون رمزگشایی تصویر. تبدیل به GIF یک بازرمزگذاری واقعی است: هر فریم رمزگشایی، مقیاسدهی، بر اساس یک پالت کوانتیزه و نوشته میشود. روی یک CPU واحد که با یک محصول دیگر مشترک است، این پرهزینهترین چیزی است که میتوانیم به ازای هر بایت خروجی ارائه دهیم.
بدتر از آن، این هزینه به شکلی است که با کوچکشدن اندازه کم نمیشود. یک دانلود ویدیو متناسب با اندازه فایل برای ما هزینه دارد و یک فایل کوچک ارزان است. یک تبدیل به GIF بدون توجه به اینکه خروجی چقدر کوچک است، زمان پردازندهای متناسب با مدت زمان منبع هزینه دارد — پس کلیپ بیستثانیهای که کسی میخواهد آن را بهصورت یک GIF ۲۰۰ کیلوبایتی داشته باشد، تولیدش گرانتر از دانلود یک ویدیوی ۷۰ مگابایتی تمام میشود.
دلیل دومی هم هست، و همین دلیل تصمیم را قطعی کرد. تبدیل به تصمیمگیری نیاز دارد: کدام بخش، چه عرضی، چه نرخ فریمی، آیا کراپ شود. اینها دقیقاً همان انتخابهایی هستند که این مقاله طولش را صرف آنها میکند، و یک رابط کاربری که اینها را حدس میزند یک GIF بد تولید میکند که فرد بعداً باید دوباره انجامش دهد. ابزاری که در آن بتوانید تکرار کنید — ffmpeg یا یک ویرایشگر محلی — بهسادگی ابزار درستی برای کاری است که نیاز به دو بار امتحان کردن دارد.
پس ما بهجای آن، دستور را منتشر کردیم. این کار میکند، اعداد بالا از اجرای آن به دست آمده، و مدتها پس از هر دکمهای که ممکن بود اضافه کنیم، همچنان کار خواهد کرد. بین ساختن یک نسخه متوسط از چیزی و توضیحدادن نسخه خوب، توضیحدادن ارزش بیشتری دارد.
سوالات متداول
چگونه یک ویدیو را به GIF تبدیل کنم؟
از ffmpeg با یک پالت دومرحلهای استفاده کنید: fps، scale، palettegen و paletteuse در یک زنجیره فیلتر واحد. دستور کامل در این مقاله آمده است.
یک GIF چقدر بزرگ است؟
بر اساس اندازهگیریهای ما، پنج ثانیه با عرض ۴۸۰ پیکسل و ۱۲fps به ۵۴۴ کیلوبایت رسید؛ با عرض ۳۲۰ پیکسل و ۸fps، ۱۶۸ کیلوبایت. فیلمبرداری واقعی با حرکت بیشتر سنگینتر میشود.
چرا GIF من لکهدار به نظر میرسد؟
محدودیت ۲۵۶ رنگ با یک پالت عمومی. ساختن یک پالت از کلیپ خاص شما این مشکل را برطرف میکند، البته به قیمت یک فایل کمی بزرگتر.
چگونه یک GIF را کوچکتر کنم؟
ابتدا آن را کوتاه کنید، سپس عرض را کاهش دهید، سپس نرخ فریم را پایین بیاورید. این ترتیب کمترین هزینه بصری را دارد.
آیا باید از GIF یا MP4 استفاده کنم؟
در جایی که مقصد پشتیبانی میکند، MP4 — بخش کوچکی از اندازه، رنگ کامل، و هر پلتفرم مدرنی ویدیوی بیصدا را بهطور خودکار پخش میکند. GIF فقط در جایی که واقعاً یک تصویر لازم است.
برای ساخت یک GIF چه کیفیتی را باید دانلود کنم؟
۴۸۰p کافی است، چون GIF عرضی بین ۳۲۰ تا ۴۸۰ پیکسل خواهد داشت. فقط در صورتی کیفیت بالاتر دانلود کنید که قصد کراپکردن بخشی از فریم را داشته باشید.
VidKeep مستقیماً در مرورگر شما اجرا میشود: لینک را جایگذاری کنید، کیفیت را انتخاب کنید، فایل را ذخیره کنید. بدون حساب کاربری، بدون اپلیکیشن.
VidKeep را باز کنیدآخرین بهروزرسانی: 28/10/2026. با تغییر پلتفرمها، راهنماهای خود را بازبینی میکنیم.

