آپ کی نجی HLS اسٹریم آپ کے ناظرین کے لیے نہیں، آپ کے لیے لوڈ ہوتی ہے
صفحہ اس لیے لوڈ ہوتا ہے کہ آپ کا سرور کیمرے تک پہنچتا ہے؛ براؤزر پھر بھی پلے لسٹ لاتا ہے۔ فیصلہ کریں کہ درخواست کون بھیجتا ہے اور پھر زنجیر جانچیں۔
آپ لیپ ٹاپ پر صفحہ جانچتے ہیں، پلیئر شروع ہوتا ہے اور ٹکٹ بند ہو جاتا ہے۔ دوسری طرف کا ناظر وہی صفحہ کھولتا ہے اور ایسا گھومتا ہوا اشارہ پاتا ہے جو کبھی مکمل نہیں ہوتا۔ عام وضاحت یہ دی جاتی ہے کہ VPN سرور پر ہے، اس لیے پلے بیک کام کرنا چاہیے — لیکن پلے لسٹ مانگنے والا جزو براؤزر ہے، اور اس کا اپنا نیٹ ورک راستہ ہے۔ نجی رسائی والے سرور پر ایمبیڈ کیا گیا صفحہ وہ رسائی اسے قرض نہیں دیتا جو اسے لوڈ کرتا ہے۔
یہ http://10.5.5.9:8080/live/stream.m3u8 جیسے HLS ماخذ کو چلانے والے موجودہ ASP.NET صفحے کے بارے میں ہے، جو ایک مثال کے طور پر نجی پتہ ہے۔ دو ترتیبیں کام کرتی ہیں؛ ان میں سے ایک غالباً وہ نہیں جو آپ نے بنائی۔
افسانہ: لوڈ ہوتا صفحہ میڈیا راستہ ثابت کرتا ہے
اس صفحے کا HTML آپ کے ویب سرور سے، آپ کے ویب سرور کے جس بھی راستے سے ہو، آتا ہے۔ پلے لسٹ اور سیگمنٹ میڈیا ماخذ سے، درخواست کرنے والے جزو کے جس بھی راستے سے ہو، آتے ہیں۔ جب پلیئر ناظر کے براؤزر میں چلتا ہے تو یہ دو مختلف کلائنٹ، دو مختلف ماخذ پتے اور اکثر دو مختلف ناکامی کے میدان ہوتے ہیں۔ پہلے کو کامیاب ہوتے دیکھنا دوسرے کے بارے میں کچھ نہیں کہتا۔
آپ کے تجربے نے درحقیقت جو ثابت کیا وہ دکھنے سے کہیں زیادہ تنگ ہے: آپ کی مشین ایک ہی وقت میں عوامی صفحے اور نجی میڈیا ہوسٹ دونوں تک پہنچ سکتی ہے۔ ناظر کی مشین کبھی تجربے کا حصہ نہیں تھی۔
پلے لسٹ اس کے بعد کیا مانگتی ہے
RFC 8216 سیگمنٹ گناتے میڈیا پلے لسٹوں کو دوسری پلے لسٹیں گناتے ماسٹر پلے لسٹوں سے الگ کرتا ہے، اور متعلقہ URI ان پلے لسٹوں کے URI کی نسبت حل کرتا ہے جو انہیں رکھتی ہیں۔ لوگ جس قاعدے کو چھوڑ دیتے ہیں وہی یہ ہے۔ ایک .m3u8 فائل کامیابی سے لانا پلے بیک ٹیسٹ نہیں، کیونکہ لائی گئی فائل فہرست ہے، میڈیا نہیں۔
زنجیر کی پیروی اسی طرح کریں جیسے پلیئر کرتا ہے: منتخب پلے لسٹ کھولیں، پھر اس کے بتائے وسائل مانگیں، پھر کسی بھی ری ڈائریکٹ کی پیروی کریں۔ قابل رسائی ویب سرور کے ذریعے دی گئی پلے لسٹ بھی ناظر کو ناقابل رسائی نجی پتے پر بھیج سکتی ہے۔ اسی طرح، نسبتی پلے لسٹ کو دوسرے URL پر منتقل کرنا وہ بنیاد بدل دیتا ہے جس کی نسبت اس کے اندراجات حل ہوتے ہیں، اور اسی لیے پہلا نظر آنے والا URL دوبارہ لکھ کر وہیں رک جانا عام طور پر ایسی پلے لسٹ بناتا ہے جو درست دکھتی ہے مگر چل نہیں سکتی۔
براہ راست دیکھنا: ناظر کو راستہ چاہیے
اگر ناظرین کو براہ راست میڈیا ہوسٹ تک پہنچنا ہے تو ان کے آلات کو منظور شدہ VPN یا کوئی دوسرا نجی راستہ، وہ DNS جو آپ کے واقعی استعمال کردہ نام حل کرے، ان منزلوں تک پہنچنے کی اجازت، اور میڈیا سروس کی مطلوبہ تصدیق درکار ہے۔ ہر چیز سرور پر نہیں، ناظر کے آلے پر جانچیں۔ VPN پروفائل نصب مگر منسلک نہ ہونے والے فون کا براؤزر ایک عام اور مکمل طور پر دہرایا جانے والا نقص ہے۔
یہ ترتیب ماخذ کو نجی رکھتی ہے اور رسائی کی شرط ناظرین پر ڈال دیتی ہے۔ یہ تکنیکی جتنا ہی پالیسی کا فیصلہ ہے، اس لیے اس کے گرد ڈیزائن کرنے سے پہلے یقینی بنائیں کہ ہر مطلوبہ ناظر کو یہ راستہ رکھنے کی اجازت ہے۔
سرور کی طرف سے فراہمی: ایک کنٹرول شدہ داخلہ نقطہ
متبادل ایک مجاز میڈیا فرنٹ اینڈ ہے جو ماخذ اپنے نجی راستے سے لاتا ہے اور صرف ناظر کی طرف کے وسائل دوبارہ شائع کرتا ہے۔ پلے لسٹ، سیگمنٹ اور کوئی بھی کلیدی وسیلہ اسی واحد داخلہ نقطے کے ساتھ ہم آہنگ رکھیں، ورنہ پلیئر دوبارہ لکھی گئی پلے لسٹ فرنٹ اینڈ کے ذریعے اور سیگمنٹ براہ راست ایسے پتے سے لے آئے گا جہاں ناظر نہیں پہنچ سکتا۔
اس فرنٹ اینڈ میں ماخذ اور اجازت یافتہ راستے محدود کریں۔ صارف کا دیا ہوا من مانی URL ایک کارآمد پراکسی کو آپ کے اندرونی نیٹ ورک کا بے قید لانے والا بنا دیتا ہے، جو نہ چلنے والی اسٹریم سے کہیں بڑا مسئلہ ہے۔ سٹرنگ بعد میں جانچنے کے بجائے ماخذ اور راستے کا سابقہ اجازت یافتہ فہرست میں ڈالیں۔
موجودہ HLS ماخذ کے لیے پہلے دیکھیں کہ کنٹرول شدہ فارورڈنگ کافی ہے یا نہیں؛ درمیان میں VPN ہونا ٹرانس کوڈنگ کے لازم ہونے کا مطلب نہیں۔ پھر اصل براؤزر اور کوڈیک کا امتزاج جانچیں، کیونکہ قابل رسائی جواب اور معاون فارمیٹ دو الگ شرطیں ہیں۔ ماخذ کے TLS، تصدیق اور براؤزر سلامتی کی شرائط کو جوں کا توں رکھیں — ایمبیڈ شدہ پلیئر ان سے مستثنیٰ نہیں۔
URL نہیں، زنجیر جانچیں
جانچیں اسی جزو سے چلائیں جو واقعی ہر درخواست بھیجے گا، اور ہر مرحلے کو اس کا اپنا نتیجہ سمجھیں:
curl -s http://10.5.5.9:8080/live/stream.m3u8
curl -s -o /dev/null -w '%{http_code}\n' http://10.5.5.9:8080/live/segment-000123.tsپھر اسے ناظر کے اپنے براؤزر میں مطلوبہ اسٹریم کے ساتھ دہرائیں، اپنی میز کے آزمائشی نمونے کے ساتھ نہیں۔ صفحہ لوڈ، پلے لسٹ لوڈ، سیگمنٹ لانا اور اجازت کی ناکامی چار الگ نتائج ہیں، اور آپ درست ہونے کا دعویٰ کرنے سے پہلے چاروں دیکھنا چاہیں گے۔ پرانے براؤزر پلگ ان نہ لگائیں کہ کسی پرانی مثال نے ایک اسٹریم اسی طرح چلائی تھی؛ گمشدہ حصہ عام طور پر ناظر کا راستہ یا بغیر دستخط شدہ سیگمنٹ URL ہوتا ہے۔
ترتیب جان بوجھ کر طے ہو جانے کے بعد اسے ایک سطر میں لکھیں: میڈیا کون لاتا ہے، کس راستے سے، اور ناظر کو کیا مانگنے کی اجازت ہے۔ وہی جملہ اس بارے میں آئندہ کے بیشتر مباحث طے کر دیتا ہے کہ یہ اسٹریم واقعی کس کے لیے ہے۔