کس طرح ہم نے ویڈیو انکوڈنگ کو آٹھ گنا بڑھایا

کس طرح ہم نے ویڈیو انکوڈنگ کو آٹھ گنا بڑھایا

روزانہ لاکھوں ناظرین انٹرنیٹ پر ویڈیوز دیکھتے ہیں۔ لیکن ویڈیو کے دستیاب ہونے کے لیے، اسے نہ صرف سرور پر اپ لوڈ کیا جانا چاہیے، بلکہ اس پر کارروائی بھی ہونی چاہیے۔ یہ جتنی تیزی سے ہوتا ہے، سروس اور اس کے صارفین کے لیے اتنا ہی بہتر ہوتا ہے۔

میرا نام عسکر کمالوف ہے، ایک سال پہلے میں نے Yandex ویڈیو ٹیکنالوجی ٹیم میں شمولیت اختیار کی تھی۔ آج میں Habr کے قارئین کو مختصراً بتاؤں گا کہ کس طرح، انکوڈنگ کے عمل کو متوازی بنا کر، ہم صارف کو ویڈیو کی ترسیل کو نمایاں طور پر تیز کرنے میں کامیاب ہوئے۔

یہ پوسٹ بنیادی طور پر ان لوگوں کے لیے دلچسپی کا باعث ہو گی جنہوں نے پہلے نہیں سوچا کہ ویڈیو سروسز کے تحت کیا ہوتا ہے۔ تبصروں میں آپ سوالات پوچھ سکتے ہیں اور مستقبل کی پوسٹس کے لیے عنوانات تجویز کر سکتے ہیں۔

کام خود کے بارے میں چند الفاظ. Yandex نہ صرف آپ کو دوسری سائٹوں پر ویڈیوز تلاش کرنے میں مدد کرتا ہے، بلکہ اپنی خدمات کے لیے ویڈیوز کو اسٹور بھی کرتا ہے۔ چاہے یہ اصل پروگرام ہو یا اسپورٹس میچ آن ائیر، KinoPoisk پر فلم ہو یا Zen اور News پر ویڈیوز - یہ سب ہمارے سرورز پر اپ لوڈ ہوتے ہیں۔ صارفین کو ویڈیو دیکھنے کے لیے، اسے تیار کرنے کی ضرورت ہے: مطلوبہ فارمیٹ میں تبدیل، ایک پیش نظارہ بنایا، یا ٹیکنالوجی کے ذریعے چلایا جائے۔ ڈیپ ایچ ڈی. ایک غیر تیار فائل صرف جگہ لیتی ہے۔ مزید یہ کہ ہم نہ صرف ہارڈ ویئر کے زیادہ سے زیادہ استعمال کے بارے میں بات کر رہے ہیں بلکہ صارفین تک مواد کی ترسیل کی رفتار کے بارے میں بھی بات کر رہے ہیں۔ مثال: ہاکی میچ کے فیصلہ کن لمحے کی ریکارڈنگ ایونٹ کے بعد ایک منٹ کے اندر تلاش کی جا سکتی ہے۔

ترتیب وار انکوڈنگ

لہذا، صارف کی خوشی کا انحصار اس بات پر ہے کہ ویڈیو کتنی جلدی دستیاب ہو جاتی ہے۔ اور یہ بنیادی طور پر ٹرانس کوڈنگ کی رفتار سے طے ہوتا ہے۔ جب ویڈیو اپ لوڈ کی رفتار کے لیے کوئی سخت تقاضے نہیں ہیں، تو کوئی مسئلہ نہیں ہے۔ آپ ایک واحد، ناقابل تقسیم فائل لیں، اسے تبدیل کریں، اور اسے اپ لوڈ کریں۔ اپنے سفر کے آغاز میں، ہم نے اس طرح کام کیا:

کس طرح ہم نے ویڈیو انکوڈنگ کو آٹھ گنا بڑھایا

کلائنٹ ویڈیو کو سٹوریج پر اپ لوڈ کرتا ہے، تجزیہ کار جزو میٹا معلومات اکٹھا کرتا ہے اور ویڈیو کو ورکر جزو کو تبادلوں کے لیے منتقل کرتا ہے۔ تمام مراحل ترتیب وار انجام دیے جاتے ہیں۔ اس صورت میں، بہت سے انکوڈنگ سرور ہو سکتے ہیں، لیکن صرف ایک ہی مخصوص ویڈیو پر کارروائی میں مصروف ہے۔ سادہ، شفاف خاکہ۔ یہیں سے اس کے فوائد ختم ہوتے ہیں۔ اس اسکیم کو صرف عمودی طور پر پیمانہ کیا جا سکتا ہے (زیادہ طاقتور سرورز کی خریداری کی وجہ سے)۔

انٹرمیڈیٹ نتیجہ کے ساتھ ترتیب وار انکوڈنگ

کسی نہ کسی طرح تکلیف دہ انتظار کو ہموار کرنے کے لیے، انڈسٹری ایک تیز کوڈنگ آپشن لے کر آئی۔ نام گمراہ کن ہے، کیونکہ حقیقت میں، مکمل کوڈنگ ترتیب وار ہوتی ہے اور اس میں اتنا ہی وقت لگتا ہے۔ لیکن ایک انٹرمیڈیٹ نتیجہ کے ساتھ۔ خیال یہ ہے: ویڈیو کے کم ریزولوشن ورژن کو جلد از جلد تیار کریں اور شائع کریں، اور تب ہی اعلی ریزولوشن ورژن۔

ایک طرف، ویڈیو تیزی سے دستیاب ہو جاتی ہے۔ اور اہم واقعات کے لیے مفید ہے۔ لیکن دوسری طرف، تصویر دھندلی نکلتی ہے، اور یہ دیکھنے والوں کو پریشان کرتی ہے۔

یہ پتہ چلتا ہے کہ آپ کو نہ صرف فوری طور پر ویڈیو پر کارروائی کرنے کی ضرورت ہے، بلکہ اس کے معیار کو بھی برقرار رکھنے کی ضرورت ہے۔ صارفین اب ویڈیو سروس سے یہی توقع رکھتے ہیں۔ ایسا لگتا ہے کہ یہ سب سے زیادہ پیداواری سرور خریدنے کے لئے کافی ہے (اور باقاعدگی سے ان سب کو ایک ساتھ اپ گریڈ کریں)۔ لیکن یہ ایک ڈیڈ اینڈ ہے، کیونکہ ہمیشہ ایک ایسی ویڈیو ہوتی ہے جو انتہائی طاقتور ہارڈ ویئر کو بھی سست کر دیتی ہے۔

متوازی انکوڈنگ

ایک پیچیدہ مسئلہ کو بہت سے کم پیچیدہ مسائل میں تقسیم کرنا اور انہیں مختلف سرورز پر متوازی طور پر حل کرنا زیادہ کارآمد ہے۔ یہ ویڈیو کے لیے MapReduce ہے۔ اس صورت میں، ہم ایک سرور کی کارکردگی تک محدود نہیں ہیں اور افقی طور پر (نئی مشینوں کو شامل کرکے) پیمانے کر سکتے ہیں۔

ویسے، ویڈیوز کو چھوٹے چھوٹے ٹکڑوں میں تقسیم کرنے، انہیں متوازی طور پر پروسیس کرنے اور انہیں ایک دوسرے کے ساتھ جوڑنے کا خیال کوئی راز نہیں ہے۔ آپ کو اس نقطہ نظر کے بہت سے حوالہ جات مل سکتے ہیں (مثال کے طور پر، Habré پر میں پروجیکٹ کے بارے میں ایک پوسٹ کی سفارش کرتا ہوں۔ DistVIDc)۔ لیکن یہ مجموعی طور پر آسان نہیں بناتا، کیونکہ آپ صرف ایک تیار حل نہیں لے سکتے اور اسے اپنے گھر میں نہیں بنا سکتے۔ ہمیں اپنے انفراسٹرکچر، اپنے ویڈیو اور یہاں تک کہ اپنے بوجھ سے موافقت کی ضرورت ہے۔ عام طور پر، اپنا لکھنا آسان ہے۔

لہذا، نئے فن تعمیر میں، ہم نے یک سنگی ورکر بلاک کو ترتیب وار کوڈنگ کے ساتھ مائیکرو سروسز سیگمنٹر، ٹیکوڈر، کمبینر میں تقسیم کیا۔

کس طرح ہم نے ویڈیو انکوڈنگ کو آٹھ گنا بڑھایا

  1. Segmenter ویڈیو کو تقریباً 10 سیکنڈ کے ٹکڑوں میں توڑ دیتا ہے۔ ٹکڑے ایک یا زیادہ GOPs پر مشتمل ہوتے ہیں (تصویروں کا گروپ)۔ ہر GOP آزاد ہے اور الگ سے انکوڈ کیا گیا ہے تاکہ اسے دوسرے GOPs کے فریموں کے حوالے کے بغیر ڈی کوڈ کیا جا سکے۔ یعنی ٹکڑوں کو ایک دوسرے سے آزادانہ طور پر کھیلا جا سکتا ہے۔ یہ شارڈنگ تاخیر کو کم کرتی ہے، جس سے پروسیسنگ پہلے شروع ہو سکتی ہے۔
  2. Tcoder ہر ٹکڑے پر کارروائی کرتا ہے۔ یہ قطار سے ایک ٹاسک لیتا ہے، سٹوریج سے ایک ٹکڑا ڈاؤن لوڈ کرتا ہے، اسے مختلف ریزولوشنز میں انکوڈ کرتا ہے (یاد رکھیں کہ کھلاڑی کنکشن کی رفتار کی بنیاد پر ایک ورژن کا انتخاب کر سکتا ہے)، پھر نتیجہ واپس اسٹوریج میں ڈالتا ہے اور ٹکڑے کو پروسیس شدہ کے طور پر نشان زد کرتا ہے۔ ڈیٹا بیس میں تمام ٹکڑوں پر کارروائی کرنے کے بعد، Tcoder اگلے جزو کے نتائج پیدا کرنے کے لیے ٹاسک بھیجتا ہے۔
  3. Combiner نتائج کو ایک ساتھ جمع کرتا ہے: Tcoder کے بنائے گئے تمام ٹکڑے ڈاؤن لوڈ کرتا ہے، مختلف ریزولوشنز کے لیے اسٹریمز تیار کرتا ہے۔

آواز کے بارے میں چند الفاظ۔ سب سے مشہور AAC آڈیو کوڈیک میں ایک ناخوشگوار خصوصیت ہے۔ اگر آپ ٹکڑوں کو الگ الگ انکوڈ کرتے ہیں، تو آپ انہیں بغیر کسی رکاوٹ کے چپکنے کے قابل نہیں ہوں گے۔ تبدیلیاں قابل توجہ ہوں گی۔ ویڈیو کوڈیکس میں یہ مسئلہ نہیں ہے۔ نظریاتی طور پر، آپ ایک پیچیدہ تکنیکی حل تلاش کر سکتے ہیں، لیکن یہ گیم ابھی تک موم بتی کے قابل نہیں ہے (آڈیو کا وزن ویڈیو سے کافی کم ہے)۔ لہذا، صرف ویڈیو کو متوازی طور پر انکوڈ کیا جاتا ہے، اور پورے آڈیو ٹریک پر کارروائی ہوتی ہے۔

نتائج

متوازی ویڈیو پروسیسنگ کی بدولت، ہم نے ویڈیو کے اپ لوڈ ہونے اور صارفین کے لیے دستیاب ہونے کے درمیان تاخیر کو نمایاں طور پر کم کر دیا ہے۔ مثال کے طور پر، پہلے ڈیڑھ گھنٹے تک چلنے والی FullHD فلم کے لیے مختلف معیار کے کئی مکمل ورژن بنانے میں دو گھنٹے لگ سکتے تھے۔ اب اس سب میں 15 منٹ لگتے ہیں۔ مزید برآں، متوازی پروسیسنگ کے ساتھ، ہم پرانے انٹرمیڈیٹ رزلٹ اپروچ کے ساتھ کم ریزولیوشن والے ورژن سے بھی تیز تر ہائی ریزولوشن ورژن بناتے ہیں۔

اور ایک اور چیز. پرانے نقطہ نظر کے ساتھ، یا تو کافی سرور نہیں تھے، یا وہ کاموں کے بغیر بیکار تھے۔ متوازی کوڈنگ آپ کو آئرن ری سائیکلنگ کا حصہ بڑھانے کی اجازت دیتی ہے۔ اب ہمارا ایک ہزار سے زیادہ سرورز کا کلسٹر ہمیشہ کسی نہ کسی چیز میں مصروف رہتا ہے۔

درحقیقت بہتری کی گنجائش ابھی باقی ہے۔ مثال کے طور پر، اگر ہم ویڈیو کے مکمل طور پر ہمارے پاس پہنچنے سے پہلے اس کے ٹکڑوں پر کارروائی شروع کر دیں تو ہم اہم وقت بچا سکتے ہیں۔ جیسا کہ وہ کہتے ہیں، مزید آنے والے ہیں.

کمنٹس میں لکھیں کہ آپ ویڈیو کے ساتھ کام کرنے کے شعبے میں کن کاموں کے بارے میں پڑھنا چاہیں گے۔

صنعت کے ساتھیوں کے تجربے کے لیے مفید روابط

ماخذ: www.habr.com

نیا تبصرہ شامل کریں