
نصب FFMPEG در سرور لینوکس
(با دسترسی root یا sudo)
1️⃣ فعال کردن EPEL
dnf install -y epel-release
2️⃣ فعال کردن RPM Fusion (مهمترین مرحله)
dnf install -y \
https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm
3️⃣ نصب ffmpeg
dnf install -y ffmpeg ffmpeg-devel
✅ تست نهایی
ffmpeg -version
اگر ورژن نمایش داده شد → نصب موفق ✅
فشردهسازی ویدیوهای MP4 با H.264 با FFmpeg
روش صحیح جلوگیری از نمایش خروجی باینری
برای اجرای تمیز و مناسب سرور، توصیه میشود FFmpeg با تنظیمات زیر اجرا شود:
ffmpeg -nostdin -hide_banner -loglevel error -stats \
-i input.mp4 \
-c:v libx264 -preset medium -crf 28 \
-c:a aac -b:a 128k \
output.mp4
مزایا:
-nostdin→ جلوگیری از تعامل با ترمینال-loglevel error→ نمایش فقط خطاهای واقعی-stats→ نمایش وضعیت پردازش بدون لاگ اضافی
از bash زیر می توانید برای فشرده کردن تمام ویدئو ها در یک مسیر استفاده کنید
#!/bin/bash
TARGET_DIR="/home/YOUR-VIDEOS-PATH"
TMP_DIR="/home/tmp"
THREADS=2
CRF=28
LOG="/home/backup/ffmpeg.log"
find "$TARGET_DIR" -type f -name "*.mp4" -size +100M -print0 | \
while IFS= read -r -d '' f; do
base="$(basename "$f")"
tmp_file="$TMP_DIR/$base"
echo "Processing: $f"
nice -n 10 ffmpeg -y \
-nostdin \
-hide_banner \
-loglevel error \
-stats \
-threads "$THREADS" \
-i "$f" \
-c:v libx264 -preset medium -crf "$CRF" \
-pix_fmt yuv420p -movflags +faststart \
-c:a aac -b:a 128k \
"$tmp_file" \
>> "$LOG" 2>&1 \
&& mv -f "$tmp_file" "$f"
done
برای فشرده سازی تصاویر ابتدا موارد زیر را نصب کنید
dnf install -y jpegoptim optipng
سپس bash زیر را اجرا کنید
#!/bin/bash
TARGET_DIR="/home/username/public_html/wp-content/uploads"
LOG_FILE="/home/backup/image-compress.log"
MIN_SIZE="+200k"
CPU_LIMIT=2
JPEG_QUALITY=82
PNG_OPT_LEVEL=2
COUNT=0
mkdir -p "$(dirname "$LOG_FILE")"
echo "---- $(date) START IMAGE COMPRESSION ----" >> "$LOG_FILE"
export JPEG_QUALITY PNG_OPT_LEVEL
find "$TARGET_DIR" -type f \( \
-iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \
\) -size "$MIN_SIZE" -print0 | \
xargs -0 -n 1 -P "$CPU_LIMIT" bash -c '
file="$0"
case "${file,,}" in
*.jpg|*.jpeg)
jpegoptim --max="$JPEG_QUALITY" --strip-all --all-progressive --quiet "$file"
;;
*.png)
optipng -o"$PNG_OPT_LEVEL" -quiet "$file"
;;
esac
echo "✔ compressed: $file"
' >> "$LOG_FILE" 2>&1
echo "---- $(date) DONE ----" >> "$LOG_FILE"


