أفضل طريقة لإدارة مقاطع الفيديو على نطاق واسع

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

مقدمة لشركتنا -

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

يتمتع معظم مستخدمينا ، أثناء التنقل ، بالحد الأدنى من الاستقبال لسرعات الإنترنت الأسرع وهذا يمثل تحديًا عند تقديم محتوى بيانات كثيف مثل مقاطع الفيديو.

لقد وجدنا أنه من الواضح تمامًا استخدام بروتوكول HLS لتسليم الفيديو لأنه مدعوم على نطاق واسع ، طورته شركة Apple واستخدمته العديد من الشركات الكبرى مثل Facebook. HLS تعني HTTP Live Streaming. إنه بروتوكول دفق الوسائط لتقديم محتوى الفيديو والصوت. ينقسم فيديو mp4 إلى شرائح صغيرة عادة ما تكون مدتها 10 ثوانٍ ، ولكل مقطع ، يتم أيضًا إنشاء مقاطع متعددة لجودة الفيديو يمكن تنزيلها للتشغيل على أساس النطاق الترددي المتاح للإنترنت.

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

فيما يلي القرارات التي استخدمناها لحالة الاستخدام الخاصة بنا بصرف النظر عن الدقة الأصلية للفيديو -

يتم إنشاء قرارات الفيديو

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

النهج الأولي

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

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

تجاربنا

أولاً ، لقد اختبرنا مكتبة المصادر المفتوحة الشهيرة - ffmpeg التي هي قادرة على القيام بتحويل الفيديو الذي نحتاجه. كان لدينا خياران لاستخدام مكتبة ffmpeg - استخدام وظائف السحاب أو استخدام واحد من مثيل VM قيد التشغيل بالفعل على GCP (Google Cloud Platform).

نظرًا لأن العملية بأكملها تعمل وفقًا لنموذج عند الطلب ، تم تجاهل الخيار الأخير. تعتمد وظائف Cloud على نموذج الحوسبة عند الطلب مما يعني أننا سنحصل على الموارد عند الحاجة دون التأثير على خدماتنا الأخرى. نظرًا لأنه عند الطلب ، لا يتعين علينا دفع تكلفة الخادم عندما يكون خاملاً.

وظائف Cloud سهلة الاستخدام حقًا وتعطي خيار كتابة الكود بلغتين الأكثر شعبية - العقدة والبيثون. قررنا أن نذهب مع الثعبان لأننا مرتاحون للنموذج لأن مجموعتنا في الثعبان. يعد تثبيت التبعيات أمرًا سهلاً حقًا ، عليك فقط ذكره في ملف requirements.txt وأنت مضبوط.

لقد عملنا على تشغيل البرنامج النصي لوظيفة السحاب حيث قمنا أولاً بتنزيل الفيديو من التخزين السحابي ، وقمنا بتحويله بالتنسيق المطلوب ونقله إلى التخزين السحابي للبث.

ولكن كان هناك الصيد. نسمح لمستخدمينا بتحميل مقاطع فيديو تصل إلى 100 ميغابايت وللتعامل مع مقطع فيديو بهذه الوظيفة السحابية يستغرق الكثير من الوقت وينتهي في النهاية قبل إكمال العملية بأكملها بسبب الحد الزمني (540 ثانية). في دفاعنا ، لم نفكر في هذا السيناريو في وقت سابق.

بعد استكشاف الخيارات الأخرى والكثير من الأبحاث ، بدا AWS MediaConvert واعدا. كان العمل مع MediaConvert صعبًا لأنه يوفر الكثير من الخيارات لتخصيص تحولك ويمكن للمرء أن يضيع بسهولة في هذا الموقف (مدلل حسب الاختيار). ولكن بعد النظر حولنا لبعض الوقت ، حصلنا على القالب المطلوب للتحول المطلوب. (أرفق القالب)

بدا تدفقنا كله شيء من هذا القبيل -

نقوم بتحميل فيديو على دلو S3 والذي بدوره يشغل وظيفة Lambda. في lambda ، نكتشف المعلمات المطلوبة كمدخلات لـ MediaConvert باستخدام لا شيء سوى ffmpeg. بعد حساب جميع المعلمات ، نرسل طلبًا إلى AWS MediaConvert لتحويل الفيديو الخاص بنا. للحصول على إشعار عند اكتمال التحويل ، يمكن للمرء إنشاء حدث مراقبة سحابية لتغيير حالة الوظيفة المرسلة في MediaConvert من "التقدم" إلى "المكتمل" والذي بدوره سيؤدي إلى تشغيل وظيفة lambda. يمكن لوظيفة lambda التي يتم تشغيلها إما إجراء مكالمة api أو القيام بتحديث db بناءً على جدوى مشروعك.

بالمختصر :

يعمل حل AWS مثل السحر وكان سريعًا جدًا قد يبدو هذا كثيرًا من العمل ، لكن الأمر يستحق القيام به إذا كنت بحاجة إلى التوسع.

فوائد استخدام هذا الحل -

  • نحن نستخدم S3 لتخزين وتقديم محتوى الوسائط لدينا وهو قابل للتطوير للغاية وبأسعار معقولة أيضًا.
  • AWS MediaConvert سريع حقًا ويمنح الوظائف اللازمة للاحتفاظ بعدة طوابير لتقديم مهام للتحول. لذلك لا داعي للقلق بشأن القفز المفاجئ في طلبات التعامل مع مقاطع الفيديو. أيضا التسعير هو اقتصادي حقا ، أي رسوم شهرية وعليك أن تدفع فقط مقابل الخدمات المستخدمة.
  • ويستند AWS Lambda على حساب على الطلب الذي سبق أن ناقشناه أعلاه. بصرف النظر عن ذلك ، تمنحك AWS بعض الاحتفالات المجانية من lambda ووقت وحدة المعالجة المركزية لوظيفة Lambda شهريًا ، وهو أمر رائع حقًا ، وحتى في الاستخدام بعد التسعير المجاني للصفوف ، لا يشكل عبئًا على جيبك.

المشكلات التي تواجهها أثناء نشر AWS:

  • تذكر دائمًا أن AWS تقدم خدمات بناءً على المناطق ، باستثناء عدد قليل مثل S3 المتوفر على المستوى العالمي. استخدم الخدمات في نفس المنطقة وإلا فقد لا تتمكن من التقاط الأحداث أو تشغيل وظائف lambda.
  • أعط الإذن اللازم لدور IAM الخاص بالخدمات التي تستخدمها.
  • كما ذكر أعلاه ، يؤدي تحميل الفيديو إلى دلو S3 إلى تشغيل وظيفة lambda حيث نملأ تفاصيل التحويل الضرورية مثل دقة مقاطع الفيديو الناتجة ، ومعدل البت ، وما إلى ذلك. ولهذه القيمة ، تحتاج إلى العثور على البيانات الوصفية لمقطع الفيديو الذي تم تحميله مثل الارتفاع والعرض ومعدل البت. تحتاج إلى استخدام بعض مكتبة معالجة الفيديو مثل ffmpeg من أجل الحصول على هذه القيمة التي لم يتم تحميلها مسبقًا على الحاوية التي تعمل عليها lambda حيث تعمل lambda على حاوية واحدة أو أكثر يتم إنشاؤها وحذفها عند الطلب كطلبات.
  • على عكس وظائف Google Cloud حيث يمكنك فقط إضافة اسم المكتبة في requirements.txt وسوف يتعاملون مع الباقي ، في AWS lambda تحتاج إلى إنشاء ملف مضغوط لجميع المكتبات والثنائيات المستخدمة في وظيفة lambda. بعد إجراء بعض الأبحاث ، اكتشفنا أنه يمكنك إضافة ثنائيات ffmpeg في مجلد / tmp واستخدامها في وظيفتك. للحصول على خطوات لتضمين ffmpeg في المسار ، تفضل بزيارة هنا ولإنشاء حزمة نشر aws lambda ، تفضل بزيارة هنا.
  • أثناء الاختبار ، اكتشفنا أن مقاطع الفيديو التي يتم التقاطها على أجهزة iOS يتم تدويرها من صورة إلى عرض أفقي بعد التحويل (مناقشة StackOverflow ومنتدى AWS). السبب في ذلك هو أن لقطة الفيديو على جهاز iOS يتم حفظها في الأصل في وضع أفقي مع إشارة في بيانات تعريف الفيديو التي تخبر المشغل بتدوير الفيديو أثناء التشغيل. أثناء القيام بالتحويل ، يتم فقد معرف التدوير وبسبب هذا الفيديو يتم تشغيله في الوضع الأفقي ويبدو أنه قد تم تدويره.
  • للتغلب على هذا أولاً ، حددنا مقاطع الفيديو هذه باستخدام ffmpeg. تحتوي مقاطع الفيديو هذه على "دوران" في "عرض المصفوفة" لبيانات تعريف الفيديو التي يمكن الحصول عليها باستخدام ffmpeg. ثم قم بتدوير مقاطع الفيديو هذه استنادًا إلى الدوران المعطى ، والآن لديك الفيديو الذي تم تدويره والذي يمكن تحويله بسهولة باستخدام التقنية المذكورة أعلاه.

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