كيف بنوها؟ : Youtube

عام 0 geek4arab
Spread the love

موقع طبعا غني عن التعريف و هو الموقع الأول عالميا في مشاركة الفيديو و حيث ان هناك شخص اشتهر فقط بمقولة ” Gangnam Style” بينما بقية الأغنية غير مفهومة للغالبية العظمى

اولا نستعرض ما الذي يستخدم في يوتيوب:

Python : يوتيوب من اكبر مستخدمي هذه اللغة قبل و بعد عملية استحواذها من قبل Google (تتوقعوا PHP كانت حتمشي في موقع مثل هذا؟ ).

Linux : لا شيء غريب هنا هو النظام الأول في مثل هذه المواقع الكبرى.

MySQL : اشهر قواعد البيانات على الاطلاق.

Go: لغة برمجة تم عملها من قبل Google و يتم استخدامها في يوتيوب بشكل خفيف و لكن عليها اقبال في الفترة الحالية.

Apache : خادم الويب المعروف.

BigTable : قاعدة بيانات لا تعتمد على SQL.

و أدوات اخرى…

 

ماذا يحدث حينما اشاهد فيديو؟

حينما تضغط على فيديو ما و تريد ان تشاهده ترى رابط كهذا http://www.youtube.com/watch?v=3PwJAJ3fkZQ

قد تقول ان 3PwJAJ3fkZQ تمثل تعريف الفيديو في قاعدة البيانات لكن هذا تعريف مبنى على ترميز من نوع Base64 معدل من قبل فريق اليوتيوب و على الأرجح ان يكون حقل تعريف الفيديو في قاعدة البيانات من نوع GUID. اذن ما يحصل هو عملية فك هذا الترميز و استعلام التعريف الأصلي في قاعدة البيانات و جلب بيانات الفيديو ( مثل وصف الفيديو + التعليقات + عنوان الفيديو و غيرها ) لكن الفيديو لا يخزن داخل قاعدة البيانات. طبعا ايضا يوتيوب تعمل Sharding لقواعد بياناتها.

 

لماذا نسخة معدلة من Base64؟

السبب بسيط لأن معظم اللغات تستطيع فك هذا الترميز لأنه ترميز معتمد ( مثلا في بايثون بالامكان عملية فك التميز في اقل من 4 اسطر ) و حينما يتم فك الترميز بالامكان عمل Spam بتعديلات بسيطة على هذا التعريف و لذلك رأى فريق المبرمجين ان يتم عمل نسخة معدلة منه لتفادي هذه المشكلة. الفيديوات الأكثر شهرة و متابعة يتم نقلها الى CDN خاص بقوقل لتسهيل عملية نقلها و مشاهدتها.

 

هنا تصور مبسط للهيكل الداخلي لهذا العمل

ما الذي يحدث حينما ارفع فيديو؟

تحدث اشياء كثيرة و مهمة مثل عملية ضغط الفيديو Video Compression و هذا يصغر مساحة الفيديو بشكل واضح و ايضا يقلل من جودة الفيديو لكن ليس بالشكل الواضح طبعا معظم و اشهر خوارزميات ضغط الفيديو تعتبر من خوارزميات الضغط الفاقدة للبيانات و مثال معروف هو MPEG و تتم مقارنة كل فريم في الفيديو و يتم ضغط البكسلات المتشابهه و ذلك يضمن عدم تكرارها في كل فريم و طبعا لا تكون ملاحظة وقت حركة الفيديو.

ايضا تكون هناك عملية انشاء اكثر من Thumbnails للفيديو المرفوع لابرازها حين البحث عن هذا الفيديو و هذه عملية صعبة خصوصا في تخزينها بسبب العدد المهول جدا للفيديوات المرفوعة في الدقيقة و كانت هناك مشاكل في التخزين بسبب نظلم ملفات Ext3 حيث لا تسمح بتجاوز مساحة معينة لمجلد ما و لكن عملية الاستحواذ من قوقل فادتهم حيث اصبح بالامكان استخدام BigTable حيث هي مبنية على نظام ملفات GFS و تكون البيانات مضغوظة فيها و فيها ميزة تفادي الأخطاء فهذا اصبح منقذ لهم.

 

كيف يتم التعرف على فئة الفيديو؟

قد يدخل المستخدم فئة او وسم (Tags) الفيديو المرفوعه لكن هذا ليس الحال في كل عملية رفع و لذلك يجب ان تكون هذه العملية تقام بشكل اوتومايكي و بدون تدخل بشري

اذا مرحبا بـMachine Learning حيث تتم عمليات كثيرة جدا للتعرف على الوسم و الفئة من الفيديو و هذه صورة توضيحية للعملية

و للاطلاع اكثر على هذا البحث الرجاء الضغط هنا

أتمنى ان اكون وفقت في كتابة و شرح هذا الموضوع و اتمنى التوفيق للجميع.

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة