إبداع الفيديو هو سير عمل كثيف البيانات. يمكن أن يتضمن مشروع Adstacker واحد مقاطع مصدر وصور مصغرة ومقاطع فيديو معيرة وصوتًا مستخرجًا وتراكبات قابلة لإعادة الاستخدام واختلافات جاهزة. نحن بحاجة إلى عمليات تحميل لا تفرط في تحميل خادم التطبيق، والتحقق الموثوق، ومواقع إخراج يمكن التنبؤ بها، وتنظيف للعمل المهجور.
Amazon S3 هي طبقة الأصول الدائمة وراء سير العمل هذا. يستخدمها Adstacker لنقل الملفات الكبيرة مباشرة من المبدعين إلى التخزين، وتنظيم كل مرحلة من مراحل المشروع، وإتاحة مقاطع الفيديو النهائية للتنزيل.
التحدي: تتضاعف أصول الفيديو بسرعة
يسمح اختبار الإبداع لمجموعة صغيرة من المقاطع بإنتاج العديد من الاختلافات – ويخلق مشكلة في إدارة الأصول. قد يبدأ المشروع بمقاطع فيديو للخطاف والجسم وCTA، ثم ينتج نسخًا معيرة وصوتًا وتراكبات مصاحبة للتعليقات، وصورًا مصغرة، ومخرجات MP4 أو MOV نهائية.
سيؤدي نقل كل بايت عبر الـ API إلى إبطاء عمليات التحميل واستهلاك عرض نطاق خادم. ستجعل أسماء الملفات غير المنظمة عمليات إعادة المحاولة صعبة وتترك أصولاً يتيمة عندما يغلق المبدع علامة تبويب في منتصف التحميل.
يجب أن يكون التخزين جزءًا مقصودًا من خط أنابيب الإنتاج.
نهجنا: S3 على مدار دورة حياة الأصول
يشارك S3 من إنشاء المشروع وحتى التنزيل النهائي. يتولى الواجهة الخلفية (Backend) مهام التفويض، والبيانات الوصفية، والتحقق، وحالة المهمة؛ بينما يتعامل S3 مع الكائنات الكبيرة.
البنية

يمنح هذا الفصل ملفات الوسائط مسارًا مباشرًا ودائمًا للتخزين.
1. تحميل مقاطع الفيديو الكبيرة مباشرة من المتصفح
عندما يبدأ مبدع مشروعًا، ينشئ Adstacker بيان فيديو مصدر ويعيد طلب S3 POST موقّع مسبقًا لكل ملف. يرسل المتصفح الملف مباشرة إلى S3 بدلاً من توجيهه عبر الواجهة الخلفية (Backend).
يفرض S3 قيود التحميل الموقعة: نوع محتوى محدد ونطاق حجم مسموح به. توقف هذه القيود عمليات التحميل الفارغة أو الزائدة عن الحد قبل وصولها، بينما يحد الطلب قصير الأجل مما يمكن للمتصفح تحميله.
إذا انقطعت جلسة ما، يعيد Adstacker إصدار عناوين URL جديدة لمقاطع الفيديو المعلقة. كما يتحقق من S3 أثناء الاستئناف، بحيث يمكن تسوية كائن فاته استدعاء اكتمال (Completion Callback) والتحقق منه.
2. التحقق مما وصل قبل معالجته
لا يكفي اكتمال التحميل في المتصفح لبدء العرض. يستخدم الواجهة الخلفية (Backend) S3 HEAD لتأكيد الكائن، وقراءة حجمه و ETag الخاص به، وحفظ ذلك الـ ETag مع الفيديو الذي تم التحقق منه.
بعد ذلك، يقوم Adstacker بتنزيل الكائن مؤقتًا للتحقق من FFprobe. نؤكد أنه قابل للقراءة وأن المدة والدقة الفعلية تلبي متطلبات المشروع. تتلقى الملفات غير الصالحة سبب رفض مفيد ويتم حذفها؛ أما أخطاء القراءة العابرة فتترك الكائن في مكانه لإعادة المحاولة.
يمر كل فيديو بدورة حياة واضحة: قيد الانتظار (pending)، يتم الرفع (uploading)، تم الرفع (uploaded)، قيد التحقق (validating)، تم التحقق (validated)، أو مرفوض (rejected). يتقدم المشروع فقط بعد التحقق من كل أصل متوقع، وتمنع التحديثات الذرية (Atomic Updates) استدعاءات التكرار من حساب الفيديو مرتين.
3. جعل كل مخرج قابلاً للتنبؤ به وقابلًا لإعادة الاستخدام
يستخدم Adstacker مسارات S3 حتمية تعتمد على المشروع، ونوع الأصل، والفئة، والتباين. تعيش الوسائط المعيرة والصوت المستخرج بشكل منفصل عن التراكبات المعروضة والتركيبات النهائية.
يساعد هذا التنظيم خط الأنابيب بثلاث طرق:
- بحث مباشر (Direct lookup): يمكن للعمال العثور بالضبط على المدخلات أو المخرجات المرتبطة بالمشروع والاختلاف.
- إعادة استخدام فعالة (Efficient reuse): يتم تخزين التراكبات القابلة لإعادة الاستخدام مرة واحدة ويمكن أن تدعم أكثر من تركيبة نهائية واحدة.
- إعادة محاولات محايدة التأثير (Idempotent retries): تكتب إعادة المحاولة إلى نفس المفتاح المتوقع، مما يتجنب تزايد مسار الصادرات المكررة.
تحتفظ سجلات الفيديو النهائية بمفاتيح S3 وعناوين URL للمخرجات والصور المصغرة، وعند الاقتضاء، نوع MOV. يمكن للتطبيق بعد ذلك توفير التنسيق الجاهز.
4. توفير الوصول بأمان وتنظيف العمل غير المكتمل
مخزن S3 خاص. يصدر Adstacker عناوين URL للتنزيل موقعة ومحددة بوقت، اختياريًا مع اسم ملف للتنزيل، بحيث لا تحتاج الأصول إلى عرض عام.
لا يصبح كل تحميل مشروعًا مكتملًا. يحدد التنظيف المجدول المشاريع غير المكتملة القديمة ويحذف كائنات S3 المصدر المتبقية. يتم حذف التحميلات المرفوضة فور فشل التحقق.
تحد قواعد دورة الحياة هذه من التخزين المهجور مع الحفاظ على سجل المشروع.
مثال من الواقع: التحميل المتقطع لا يعني البدء من جديد
تخيل أن مسوقًا يقوم بتحميل ستة مقاطع، ثم يغلق المتصفح بعد وصول أربعة منها إلى S3. عند العودة، يستعيد Adstacker جلسة التحميل ويوفر طلبات موقّعة مسبقًا جديدة للمقاطع غير المكتملة. كما يتحقق مما إذا كان الملف قد وصل إلى S3 حتى لو فُقد استدعاء اكتماله (Completion Callback).
بمجرد التحقق من جميع الملفات الستة واعتمادها، ينتقل المشروع إلى المعالجة. تظل المصادر والوسائط المُجهزة والتراكبات والصور المصغرة والتنوعات النهائية منظمة تحت مفاتيح معروفة لكل خطوة لاحقة.
تخزين مصمم لسرعة الإبداع
يتيح Amazon S3 لـ Adstacker التعامل مع أصول الفيديو كدورة حياة مدارة: التحميل المباشر، والتحقق من الكائن، والتحقق من الوسائط، وإنشاء مخرجات قابلة للتنبؤ، وتفويض التنزيلات، وتنظيف العمل غير المكتمل. وهذا يتيح لخط أنابيب الإبداع التركيز على تحويل المقاطع إلى تنويعات قابلة للاختبار.
قم بتحميل أصولك إلى Adstacker، وقم بإنشاء التوليفات التي ترغب في اختبارها، ودع المنصة تدير سير عمل التخزين وراء كل عملية عرض.
مكدس التقنيات (Technology stack): Amazon S3 · AWS SDK for JavaScript · Presigned S3 POSTs · NestJS · FFprobe · AWS ECS Fargate · MongoDB
اقرأ المزيد من فريقنا
1. Export Service vs. Video Editor Pipeline

