كيف قمنا بتسريع ترميز الفيديو ثماني مرات



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

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

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

بضع كلمات حول المهمة نفسها. لا تساعد Yandex فقط في البحث عن مقاطع الفيديو على مواقع أخرى ، ولكنها تخزن أيضًا مقاطع الفيديو لخدماتها الخاصة. سواء كان برنامج مؤلف أو مباراة رياضية في Ether أو فيلم على KinoPoisk أو مقاطع فيديو في Zen و News - يتم تحميل كل هذا على خوادمنا. لكي يتمكن المستخدمون من مشاهدة مقطع فيديو ، يجب إعداده: تحويله إلى التنسيق المطلوب ، أو إنشاء معاينة ، أو حتى دفعه من خلال تقنية DeepHD . يشغل ملف غير مستعد مساحة فقط. ونحن لا نتحدث فقط عن الاستخدام الأمثل للحديد ، ولكن أيضًا عن سرعة توصيل المحتوى للمستخدمين. مثال: يمكن البحث عن سجل في اللحظة الحاسمة لمباراة الهوكي في البحث في غضون دقيقة بعد الحدث نفسه.

الترميز التسلسلي


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



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

ترميز متسلسل مع نتيجة وسيطة


من أجل تهدئة التوقعات المؤلمة بطريقة ما ، خرجت الصناعة بخيار ترميز سريع. هذا اسم خادع ، لأنه في الواقع ، يحدث الترميز الكامل بالتسلسل وطوال المدة. ولكن مع نتيجة وسيطة. الفكرة هي: إعداد وتحميل نسخة منخفضة الدقة من الفيديو في أقرب وقت ممكن ، وبعد ذلك فقط - إصدارات عالية الدقة.

من ناحية ، أصبح الفيديو أسرع. وهو مفيد للأحداث الهامة. ولكن من ناحية أخرى - الصورة ضبابية ، وهذا يزعج الجمهور.

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

الترميز الموازي


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

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

لذلك ، في الهندسة الجديدة ، قمنا بتقسيم كتلة العامل المترابط مع التشفير المتسلسل إلى Segmenter ، Tcoder ، Combiner microservices.



  1. يقسم المجزئ الفيديو إلى أجزاء في حوالي 10 ثوانٍ. تتكون الأجزاء من صورة GOP واحدة أو أكثر ( مجموعة من الصور ). كل GOP مستقل ويتم ترميزه بشكل منفصل ، بحيث يمكن فك تشفيره بدون الرجوع إلى إطارات من GOPs الأخرى. أي أنه يمكن إعادة إنتاج الأجزاء بشكل مستقل عن بعضها البعض. يقلل هذا التقسيم من زمن الانتقال ، مما يتيح لك بدء المعالجة مبكرًا.
  2. Tcoder . , , (, , ), . , Tcoder .
  3. ombiner : , Tcoder, .

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

النتائج


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

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

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

اكتب في التعليقات حول المهام في مجال العمل مع الفيديو الذي ترغب في قراءته.

روابط مفيدة لأقران الصناعة



All Articles