تحميل واحد، ستة مخرجات
يجب أن تصبح لقطة مصدر واحدة اليوم عبارة عن مقطع فيديو عمودي بنسبة 9:16 (reel)، وقَطع مربع بنسبة 1:1، ونسخة أفقية بنسبة 16:9، ومتغير صامت ومُترجم للتشغيل التلقائي، وقَطع مُعلّم بعلامة تجارية مع شعار ومقدمة/خاتمة، ونسخة مضغوطة تُحمّل فورًا على اتصال ضعيف. نفس المحتوى، ستة أشكال أو أكثر — تتضاعف عبر كل حملة وكل مُنشئ، كل يوم.

حل هذه المشكلة على نطاق واسع يعني أن الفيديو يجب أن يتم تحويله برمجيًا، وليس تحريره يدويًا. هذه هي المهمة التي يقوم بها FFmpeg في مسار عملنا.
لماذا FFmpeg، تحديدًا
FFmpeg هي أداة سطر أوامر مجانية ومفتوحة المصدر لتحويل الصوت والفيديو وتصفيتهما وترميزهما. ليس لديها واجهة مستخدم — أنت تصف بالضبط ما تريده كأمر، وهي تنفذه. هذه هي القيمة المقترحة بأكملها: يمكن إنشاء أمر بواسطة الكود، وتعيين معالمه لكل مستخدم، ووضعه في قائمة انتظار في مسار عمل، وتشغيله على خادم بدون أي تدخل بشري. يصبح تحرير الفيديو شيئًا تقوم ببرمجته بدلاً من شيء تنقر عليه.
ثلاث خصائص تجعله مناسبًا تمامًا لهذه المشكلة المحددة، بدلاً من مجرد "أداة فيديو تعمل":
فلاتر قابلة للتركيب. تتيح لك خاصية filtergraph في FFmpeg ربط عمليات scale ← crop ← overlay ← fade في تمريرة واحدة. وهذا مهم لأنه يتجنب كتابة ملفات وسيطة في كل خطوة — فمسار العمل البدائي الذي يعيد الترميز بين كل عملية يضاعف وقت العرض واستهلاك التخزين. يقلل الربط المتسلسل عملية التحويل متعددة الخطوات إلى ترميز واحد.
عمليات على مستوى الدفق، وليس مجرد إعادة ترميز. لعمليات مثل الاقتطاع (trimming)، يمكن لـ FFmpeg نسخ التدفقات الموجودة بدلاً من فك ترميزها وإعادة ترميزها:
ffmpeg -i input.mp4 -ss 00:00:08 -t 15 -c copy highlight.mp4
-c copy هو الفرق بين عملية اقتطاع تنتهي في ثوانٍ وعملية تستغرق وقت إعادة ترميز كامل. نستخدمه أينما لا تتطلب العملية لمس بيانات البكسل — مثل الاقتطاع، وإعادة دمج التنسيق (format remuxing) — ونحتفظ بإعادة الترميز الكامل للخطوات التي تتطلب ذلك فعليًا، مثل تغيير الحجم (scaling) أو التراكب (overlaying).
الترميز المدرك للأجهزة. يمكن لـ FFmpeg التوجيه عبر مُرمزات GPU (NVENC, QSV, VideoToolbox) بدلاً من libx264 الذي يعتمد على CPU فقط. يتفوق ترميز GPU في الإنتاجية الخام عند الأحجام الكبيرة؛ بينما لا يزال libx264 يوفر جودة أكثر قابلية للتنبؤ والتعديل عند معدل بت معين. أيٌ منهما نستخدم هو مقايضة حقيقية، وليس خيارًا افتراضيًا محسومًا — نفضل ترميز CPU لأي شيء يواجه العلامة التجارية حيث تكون مراقبة الجودة هي الأهم، ونحتفظ بمسارات GPU للدُفعات ذات الحجم الكبير والأولوية الأقل.
كيف يستخدم مسار العمل هذه الأداة فعليًا
إعادة التأطير.

الطلب الأكثر شيوعًا هو "اجعل هذا يناسب كل مكان". يصبح المصدر الأفقي مقطع فيديو عموديًا (reel) عن طريق التكبير والاقتصاص (scale-and-crop). الاقتصاص المباشر سريع ولكنه يهدر جزءًا من الإطار — وهو جيد للمواضيع المتمركزة، وسيئ عندما يتحرك الموضوع بعيدًا عن المركز. في هذه الحالات، نلجأ إلى خلفية ضبابية بإطار كامل خلف نسخة أمامية معدلة الحجم بشكل صحيح، بحيث لا يتم قطع أي شيء:
ffmpeg -i input.mp4 -filter_complex \
"[0:v]scale=1080:1920,boxblur=20:5[bg]; \
[0:v]scale=1080:-2[fg]; \
[bg][fg]overlay=(W-w)/2:(H-h)/2" \
-c:a copy output_blurred.mp4
هذا قرار متعمد ذو مسارين، وليس فلترًا افتراضيًا واحدًا — اقتصاص عندما يكون آمنًا، والرجوع إلى الضبابية عندما لا يكون كذلك.
العلامة التجارية، التسميات التوضيحية، الصوت. يتم تطبيق الشعارات والمقدمات والخاتمات كتراكبات وتسلسلات مُعَلّمة (parameterized overlays and concatenations)، بحيث تتغير الموضع والحجم والشفافية حسب العلامة التجارية دون لمس كود مسار العمل. يتم دمج التسميات التوضيحية مباشرة في الإطارات بدلاً من شحنها كمسار ترجمة منفصل — فالتغذيات الصامتة ذات التشغيل التلقائي تعني أن التسمية التوضيحية يجب أن تبقى سليمة مهما كانت إعادة الترميز التي يطبقها النظام الأساسي المستهدف، والتسمية المدمجة تفعل ذلك دائمًا؛ بينما مسار الترجمة قد لا يفعل ذلك أحيانًا. يتم مزج الصوت وتطبيع مستوى الصوت بحيث لا يكون أي مقطع أعلى صوتًا بشكل مزعج من سابقه في قائمة التصفح.
التسليم. يتم ترميز كل مخرج باستخدام +faststart، الذي ينقل بيانات تعريف الملف (metadata) إلى البداية بحيث يمكن بدء التشغيل قبل اكتمال تنزيل الملف بأكمله — وهي علامة صغيرة ذات تأثير كبير على وقت التحميل المتصور للفيديو قصير الشكل تحديدًا.
المفاضلة التي ما زلنا نعمل عليها
ليست كل القرارات هنا محسومة. ترميز GPU مقابل CPU هو القرار الذي نعيد النظر فيه أكثر من غيره: إنتاجية GPU جذابة مع زيادة الحجم، لكن ثبات الجودة لكل معدل بت لا يزال يفضل ترميز CPU لـ المخرجات ذات الأهمية للعلامة التجارية. في الوقت الحالي، يتم التعامل مع هذا التقسيم يدويًا حسب نوع المهمة؛ جعلها قرار توجيه تلقائي ومُدرك للجودة هو الجزء التالي من مسار العمل هذا الذي نعمل على بنائه.
لماذا هذا مهم
باختصار، يؤدي تحميل واحد إلى تشغيل مسار عمل يعيد تأطير الفيديو إلى نسخ عمودية ومربعة وأفقية، ويضيف العلامة التجارية إليه، ويدمج التسميات التوضيحية، ويقتطع إلى أفضل جزء، ويمزج الصوت ويوحده، ويضغط للتسليم السريع — كل ذلك بدون قيام محرر بفتح مخطط زمني. التوسع أكثر يعني ببساطة تشغيل المزيد من عمال FFmpeg بالتوازي، نظرًا لأن كل مهمة مستقلة ولا تحتفظ بحالة.
لم يغير اتجاه Reels فقط شكل المحتوى — بل غيّر عدد الأشكال التي يجب أن يتخذها جزء واحد من المحتوى، ضمن جدول زمني لا يمكن للتحرير اليدوي أن يجاريه. يواكب FFmpeg ذلك لأنه يتعامل مع الفيديو على أنه قابل للبرمجة والتركيب بدلاً من كونه شيئًا يجب النقر عليه يدويًا. هذا هو السبب الفعلي لتوسع مسار العمل هذا: ليس أن FFmpeg قوي بشكل عام، بل لأن كل قرار فيه — الاقتصاص مقابل التراجع إلى الضبابية، ونسخ الدفق مقابل إعادة الترميز، و GPU مقابل CPU — يتم اتخاذه عمدًا، لكل حالة، بدلاً من الافتراض التلقائي.
إذا كنت تبني مسار عملًا كهذا وترغب في رأي ثانٍ حول البنية، تواصل معنا.

