DEV Community

Cover image for كيفية تحسين جودة الفيديو باستخدام FFmpeg: تكبير، تقليل الضوضاء، تثبيت
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

كيفية تحسين جودة الفيديو باستخدام FFmpeg: تكبير، تقليل الضوضاء، تثبيت

TL;DR (خلاصة القول)

يقوم FFmpeg بترقية جودة الفيديو باستخدام -vf "scale=1920:1080:flags=lanczos" — خوارزمية Lanczos هي الأفضل للترقية. لإزالة التشويش استخدم hqdn3d لتقليل التحبب مع الحفاظ على التفاصيل. لتثبيت الفيديو، اعتمد على vidstab بتمريرتين. اجمع المرشحات الثلاثة في سلسلة واحدة لتحسين الجودة بكفاءة.

جرّب Apidog اليوم

مقدمة

تحسين جودة الفيديو باستخدام FFmpeg لا يقتصر على تغيير الدقة فقط. عليك ترقية الدقة، إزالة التشويش بذكاء، وإضافة التثبيت عند الحاجة. كل خطوة تعالج مشكلة جودة محددة: فيديو باهت، مشوش، محبب أو مهتز. إليك الخطوات العملية لكل تقنية وكيفية الدمج بينها.

خوارزميات القياس

اختيار خوارزمية القياس يؤثر مباشرةً على جودة الصورة عند الترقية. استخدم الجدول التالي لاختيار الأنسب:

الخوارزمية السرعة الجودة الأفضل لـ
neighbor الأسرع الأقل فن البكسل
bilinear سريع منخفضة سرعة التنفيذ
bicubic متوسط جيدة تقليل الحجم
lanczos أبطأ الأفضل ترقية الدقة

أمثلة عملية:

ترقية إلى 1080p باستخدام Lanczos:

ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4
Enter fullscreen mode Exit fullscreen mode

الحفاظ على نسبة العرض إلى الارتفاع:

ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
Enter fullscreen mode Exit fullscreen mode

استخدم -2 ليتم حساب الارتفاع تلقائيًا مع الحفاظ على النسبة.

القياس إلى 4K:

ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
Enter fullscreen mode Exit fullscreen mode

استخدم -preset slow لجودة ضغط أفضل في الدقة العالية.

إزالة التشويش باستخدام hqdn3d

مرشح hqdn3d فعال في إزالة التحبب والضوضاء مع الحفاظ على الحواف. الأمثلة التالية توضح كيفية الضبط:

إزالة التشويش القياسي:

ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
Enter fullscreen mode Exit fullscreen mode

القيم تمثل: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal.

إزالة تشويش قوية:

ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
Enter fullscreen mode Exit fullscreen mode

كلما زادت القيم زادت إزالة التشويش لكن قد تخسر تفاصيل دقيقة.

إزالة تشويش خفيفة:

ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
Enter fullscreen mode Exit fullscreen mode

اختبر إعدادات مختلفة على مقاطع قصيرة للوصول للنتيجة المثلى.

التثبيت باستخدام vidstab

للحصول على فيديو ثابت، استخدم vidstab بتمريرتين:

تحقق من دعم vidstab:

ffmpeg -filters | grep vidstab
Enter fullscreen mode Exit fullscreen mode

على macOS: brew install ffmpeg عادةً يتضمن vidstab.

المرور الأول (تحليل الحركة):

ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
Enter fullscreen mode Exit fullscreen mode

ينشئ ملف transform.trf لتحليل الحركة.

المرور الثاني (التثبيت):

ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4
Enter fullscreen mode Exit fullscreen mode

يمكنك ضبط zoom وsmoothing حسب الحاجة.

تثبيت قوي (تكبير تلقائي):

ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4
Enter fullscreen mode Exit fullscreen mode

optzoom=1 يُحسن التكبير تلقائيًا لتفادي الحواف السوداء.

خط أنابيب تحسين الجودة المدمج

لأتمتة جميع العمليات في خطوة واحدة:

ffmpeg -i source.mp4 \
  -vf "hqdn3d=4:3:6:4.5,scale=1920:-2:flags=lanczos,vidstabtransform=input=transform.trf:zoom=1:smoothing=10" \
  -c:v libx264 -crf 18 -preset slow \
  -c:a copy \
  enhanced.mp4
Enter fullscreen mode Exit fullscreen mode

رتب المرشحات هكذا: إزالة التشويش → القياس → التثبيت.
ملاحظة: نفذ تمريرة vidstabdetect أولاً قبل هذا الخط.

مرشح الحدة

لتعزيز وضوح الفيديو الباهت:

ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4
Enter fullscreen mode Exit fullscreen mode
  • حدة خفيفة: unsharp=3:3:0.5:3:3:0.0
  • حدة قوية: unsharp=5:5:2.5:5:5:0.0

اضبط المعلمات حسب احتياجك.

اعتبارات الأداء

عمليات تحسين الجودة تستهلك وقتًا وموارد. تقديرات زمنية لفيديو 10 دقائق 1080p:

  • القياس فقط: 2-5 دقائق
  • القياس + hqdn3d: 5-10 دقائق
  • القياس + hqdn3d + vidstab: 15-25 دقيقة

اختر preset مناسب:

  • ultrafast: أسرع، ملف أكبر
  • fast: توازن
  • slow: أفضل جودة ضغط
  • veryslow: غالبًا غير ضروري

معالجة عدة فيديوهات دفعة واحدة:

ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}
Enter fullscreen mode Exit fullscreen mode

الربط بواجهات برمجة تطبيقات ترقية الفيديو بالذكاء الاصطناعي

للحصول على ترقية مدعومة بالذكاء الاصطناعي لنتائج فائقة الجودة (خاصةً للقطات منخفضة أو تالفة)، استخدم واجهات API متخصصة بجانب FFmpeg.

نماذج WaveSpeedAI مثالاً:

POST https://api.wavespeed.ai/api/v2/wavespeed-ai/video-enhance
Authorization: Bearer {{WAVESPEED_API_KEY}}
Content-Type: application/json

{
  "video_url": "https://storage.example.com/source-video.mp4",
  "scale": 2,
  "enhance": true
}
Enter fullscreen mode Exit fullscreen mode

اختبر نقطة النهاية باستخدام Apidog قبل التكامل:

  • أضف تأكيدات:
  Status code is 200
  Response body has field id
Enter fullscreen mode Exit fullscreen mode

تحقق من نتيجة الذكاء الاصطناعي وقارنها بإخراج Lanczos من FFmpeg. أدوات الذكاء الاصطناعي تتفوق غالبًا في التفاصيل الدقيقة، بينما FFmpeg أسرع ومجاني.

استخدم FFmpeg للمهام اليومية، وواجهات الذكاء الاصطناعي للقطات التي تتطلب أعلى جودة.

الأسئلة الشائعة

هل Lanczos هو الأفضل دائمًا لترقية الدقة؟

نعم في الترقية، لكن في تقليل الدقة bicubic أسرع وجودته قريبة.

هل vidstab مناسب لفيديوهات الهاتف؟

نعم، خاصة مع رفع shakiness إلى 8-10 لقطات الهاتف اليدوية.

كم يجب تكبير الصورة لإخفاء الحواف السوداء؟

عادةً 3-8%. استخدم optzoom=1 للحساب التلقائي.

هل FFmpeg فعال في تحسين الفيديوهات القديمة منخفضة الدقة؟

فعال جزئيًا. للقطات شديدة التدهور استخدم أدوات ترقية الذكاء الاصطناعي.

هل إزالة التشويش تؤثر على تشغيل الفيديو؟

لا، هي معالجة أثناء التحويل فقط ولا تؤثر على التشغيل النهائي.

Top comments (0)