چند بار دوستان درمورد حجم ویدیوهایی که توی کانال تلگرامم گذاشتم پرسیدن ازم که چطوری با اینکه زمانشون بالاست ولی حجمشون اینقدر پایینه! گفتم اینجا توضیح بدم که چطوری ویدیوها و تصاویر رو برای انتشار روی وب آماده کنیم و حجمشون رو به پایین ترین حالت ممکنن با حفظ کیفیت برسونیم.
کاهش حجم ویدیو
یکی از معروف ترین و خفن ترین ابزارهای کار کردن با ویدیوها و در کل media، برنامهی خفنی به اسم ffmpeg هست. بعید میدونم کاری بخواید با فایل های چندرسانهای بکنید و ناامیدتون کنه. از چسبودن زیرنویس و دوبله به فیلم گرفته تا جدا کردن فایل صوتی از ویدیو و تغییر فریم و خلاصه هر کاری که بخواین رو انجام میده، من اما اینجا تنها درمورد کم کردن حجم ویدیو با ffmpeg بهتون میگم
ffmpeg -i "inputFile.mkv" -vcodec h264 -acodec aac "outputFile.mp4"
به جای inputFile.mkv فایل ورودیتون رو بذارید، میتونه با هر فرمت ویدیویی باشه
به جای outputFile.mp4 هم اسم فایل خروجیتون
خوب اینجا چه اتفاقی داره میافته؟
توی قدم اول ما AVC ویدیو رو به h264 تغییر میدیم، درموردش بیشتر میتونید توی ویکیپدیا بخونید ولی به صورت خلاصه یکی از رایج ترین کدکهای ویدیو داخل وب هست
قدم دوم هم داره acodec یا کدک صوتی رو مشخص میکنه که بازم روی یکی از فشرده ترین حالت ها هستش
خوب برای من یه فایل ۲۶ مگ رو به ۹ مگ رسونده، روی فایلهای حجیم ممکنه یک فایل ۱ گیگ رو برسونه به ۱۰۰ مگ، خیلی کارش درسته
دوستان اشاره میکنند که با h265 حجم خیلی کمتر هم میتونه بشه ولی پخش کردنش منابع بیشتری نیاز داره، شاید برای همین هنوز توی youtube و... از h264 استفاده میکنن. اگر خواستید امتحان کنید اینطوری پیش برید
ffmpeg -i "inputFile.mp4" -vcodec libx265 -acodec aac "outputFile.mp4"
برای من حجم ویدیو رو از ۲۶ به ۸.۳ مگ رسوند اینم رو هم دوستان اضافه کردند که به تعداد فریمهای تکراری ویدیو ربط داره میزان فشرده شدن، ممکنه خیلی تاثیر نداشته باشه بعضی وقتها
کاهش حجم تصاویر
تصاویر هم برای انتشار روی اینترنت خوبه که فشرده بشن، با گوشی های امروزی یه عکس ممکنه تا ۳۰ مگ هم حجمش باشه! اگر ۳-۴ تا عکس با این کیفیت رو بخوام بذارم توی وبلاگم چند صد مگ برای خوندن همین نوشتهی ساده باید کنار بذارید، در نتیجه بریم تصاویر رو هم فشرده کنیم!
دوتا ابزار خیلی معروف برای این کار هست، یکی برای png و یکی برای jpg
jpegoptim:
نصب
sudo apt install jpegoptim
استفاده
## یه فایل خاص
jpegoptim sample.jpg
## تمام تصاویر داخل یک پوشه
jpegoptim *.jpg
## تمام تصاویر داخل این پوشه و پوشههای زیر مجموعه
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -exec jpegoptim -f --strip-all {} \;
optipng:
نصب
sudo apt install optipng
استفاده
## تنظیمات پیش فرض
optipng file.png
## حداکثر فشرده سازی سریع تمام فایلهای png
optipng -o2 -strip all *.png
## حداکثر فشرده سازی نه چندان سریع (برای فایلهای حجیم)
optipng -o7 -strip all *.png
## فشرده سازی تمام فایلهای داخل این پوشه و پوشههای زیر مجموعه
find . -type f -iname "*.png" -exec optipng -nb -nc {} \;
امیدوارم که به کارتون بیاد، اگر شما هم روشی میشناسید یا تجربهای برای فشرده کردن فایلها دارید باهام به اشتراک بذارید