TL;DR (خلاصة القول)
يقوم FFmpeg بترقية جودة الفيديو باستخدام -vf "scale=1920:1080:flags=lanczos" — Lanczos هي أفضل خوارزمية قياس للترقية. لإزالة التشويش، تقلل hqdn3d من التحبب مع الحفاظ على الحواف. للتثبيت، يعالج vidstab اهتزاز الكاميرا من خلال عملية تمريرتين. اجمع الثلاثة في سلسلة مرشحات واحدة لخط أنابيب لتحسين الجودة.
مقدمة
يتجاوز تحسين جودة الفيديو باستخدام FFmpeg مجرد تغيير الدقة. يشمل التحسين الحقيقي ترقية الدقة مع إزالة التشويش الذكية والتثبيت الاختياري. تستهدف كل خطوة مشكلة جودة مختلفة: لقطات باهتة أو منقطة، أو إطارات محببة أو مشوشة، أو حركة كاميرا مهتزة.
يغطي هذا الدليل كل تقنية بشكل مستقل ويوضح كيفية دمجها.
خوارزميات القياس
تحدد خوارزمية القياس كيفية ملء 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
الحفاظ على نسبة العرض إلى الارتفاع:
ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
-2 يحسب الارتفاع تلقائيًا مع الحفاظ على نسبة العرض إلى الارتفاع وضمان أن تكون النتيجة قابلة للقسمة على 2.
القياس إلى 4K:
ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
-preset slow يخبر x264 بقضاء المزيد من الوقت في تحسين الضغط، وهو ما يهم أكثر عند الدقة العالية.
إزالة التشويش باستخدام hqdn3d
مرشح hqdn3d هو إزالة تشويش ثلاثية الأبعاد عالية الجودة. يزيل التحبب والضوضاء مع الحفاظ على تفاصيل الحواف.
ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
المعلمات الأربع: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal
luma_spatial(0-16): تشويش مكاني في قناة السطوع. الافتراضي 4.chroma_spatial(0-16): تشويش مكاني في قنوات الألوان. الافتراضي 3.luma_temporal(0-16): تنعيم زمني في السطوع. الافتراضي 6.chroma_temporal(0-16): تنعيم زمني في الألوان. الافتراضي 4.5.
إزالة تشويش أقوى:
ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
تزيل القيم الأعلى المزيد من التشويش ولكن قد تؤدي إلى طمس التفاصيل الدقيقة. اختبر بإعدادات مختلفة قبل معالجة الفيديو بالكامل.
إزالة تشويش خفيفة (للحفاظ على التفاصيل):
ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
التثبيت باستخدام vidstab
يتطلب مرشح vidstab نهجًا بمرورين: أولاً تحليل الحركة، ثم تطبيق التثبيت.
التثبيت: يعتمد دعم vidstab على بناء FFmpeg الخاص بك. تحقق باستخدام ffmpeg -filters | grep vidstab. على نظام macOS: brew install ffmpeg يتضمنه.
التمريرة الأولى: تحليل الحركة
ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
shakiness=8 (1-10): مقدار اهتزاز الكاميرا المتوقع. accuracy=9 (1-15): دقة الكشف. -f null - يتجاهل الإخراج؛ نحن نحتاج فقط إلى ملف .trf.
التمريرة الثانية: تطبيق التثبيت
ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4
zoom=1 يضيف تكبيرًا بنسبة 1% لتعويض قص الحواف الذي يسببه التثبيت. زد القيمة إذا ظهرت حواف سوداء. smoothing=10 يتحكم في مدى سلاسة مسار الكاميرا (كلما زادت القيمة = أكثر سلاسة).
تثبيت أكثر قوة:
ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4
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
طبق هذا الترتيب: إزالة التشويش أولاً (يزيل القطع الأثرية التي قد تؤثر على القياس)، ثم القياس، ثم التثبيت. هذا يتجنب قياس التشويش إلى دقة أعلى.
ملاحظة: قم بتشغيل تمريرة vidstabdetect أولاً قبل استخدام خط الأنابيب المدمج هذا.
مرشح الحدة
إذا بدت اللقطات باهتة بدلاً من مشوشة، يمكن أن يساعد التحديد:
ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4
المعلمات: lx:ly:la:cx:cy:ca (أحجام وكميات الإضاءة/اللون)lx:ly — حجم مصفوفة الإضاءة (بكسل)la — كمية الإضاءة (موجب = حدة، سالب = تمويه)cx:cy:ca — مكافئات الألوان
للحدة الخفيفة: unsharp=3:3:0.5:3:3:0.0
للحدة القوية: unsharp=5:5:2.5:5:5:0.0
اعتبارات الأداء
عمليات التحسين تستهلك الكثير من الموارد الحاسوبية. تقديرات وقت المعالجة لفيديو بدقة 1080p مدته 10 دقائق:
- قياس بسيط فقط: 2-5 دقائق
- قياس + hqdn3d: 5-10 دقائق
- قياس + hqdn3d + vidstab: 15-25 دقيقة
استخدم -preset للموازنة بين سرعة التشفير وحجم الملف:
ultrafast— أسرع تشفير، ملفات أكبرfast— سرعة/حجم متوسطslow— الأبطأ، أصغر الملفات لـ CRF معينveryslow— لا يستحق الوقت الإضافي عادةً مقارنةً بـslow
لمعالجة الدفعات، قم بتشغيل عدة ملفات في وقت واحد أو استخدم parallel:
ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}
الربط بواجهات برمجة تطبيقات ترقية الفيديو بالذكاء الاصطناعي
لترقية الدقة المدعومة بالذكاء الاصطناعي (والتي تنتج نتائج أفضل من مرشحات FFmpeg للقطات منخفضة الجودة أو التالفة)، توجد واجهات برمجة تطبيقات متخصصة جنبًا إلى جنب مع أدوات 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
}
اختبر هذا باستخدام Apidog قبل التكامل:
أضف تأكيدات:
Status code is 200
Response body has field id
استعلم عن نقطة نهاية الحالة للاكتمال، ثم قارن الإخراج الذي تمت ترقيته بالذكاء الاصطناعي بإخراج Lanczos من FFmpeg. تتعامل ترقية الذكاء الاصطناعي مع الأنسجة والتفاصيل الدقيقة بشكل أفضل من الأساليب الخوارزمية؛ FFmpeg أسرع ومجاني.
استخدم FFmpeg للأعمال ذات الجودة القياسية وترقية الذكاء الاصطناعي القائمة على واجهة برمجة التطبيقات للقطات التي تكون فيها الجودة هي الأهم.
الأسئلة الشائعة
هل Lanczos أفضل من bicubic في جميع الحالات؟
بالنسبة لترقية الدقة، نعم. بالنسبة لتقليل الدقة، غالبًا ما يكون bicubic أسرع بجودة مماثلة. Lanczos أكثر تكلفة من الناحية الحسابية.
هل يعمل vidstab على لقطات الهاتف؟
نعم. غالبًا ما تستفيد لقطات الهاتف أكثر من التثبيت. يجب ضبط معلمة shakiness على قيمة عالية (8-10) لفيديو الهاتف المحمول باليد.
ما مقدار التكبير المطلوب لإخفاء حواف التثبيت؟
عادةً 3-8% اعتمادًا على مدى اهتزاز المصدر. اضبط optzoom=1 للسماح لـ FFmpeg بحسابه تلقائيًا.
هل يمكن لـ FFmpeg تحسين لقطات تاريخية منخفضة الدقة؟
تساعد مرشحات FFmpeg ولكن لها حدودها. تنتج أدوات ترقية الدقة القائمة على الذكاء الاصطناعي (مثل ESRGAN أو واجهات برمجة تطبيقات تحسين الفيديو المتخصصة) نتائج أفضل بكثير على اللقطات المتدهورة بشدة.
هل إزالة التشويش تبطئ التشغيل؟
لا. إزالة التشويش هي خطوة معالجة أثناء التحويل، وليست تأثيرًا في الوقت الفعلي. يتم تشغيل الفيديو الناتج بشكل طبيعي.
