يعد بروتوكول نقل النص الفائق Live Streaming (المعروف أيضًا باسم HLS) بروتوكول اتصالات تدفق وسائط يعتمد على بروتوكول نقل النص الفائق يتم تنفيذه بواسطة أبل. يستخدم كجزء من برنامج QuickTime وSafari وOS X وiOS. كما أنها متوفرة في عدة تطبيقات مثل Microsoft Edge وFirefox وبعض إصدارات Google Chrome. الدعم واسع الانتشار في خوادم وسائط البث.
HLS تشبه MPEG-DASH في أنها تعمل من خلال كسر مجرى البث الكلي إلى سلسلة من تنزيلات الملفات الصغيرة القائمة على بروتوكول نقل النص الفائق، كل تحميل يحمّل جزءًا قصيرًا من مجرى النقل الإجمالي المحتمل غير المحدود. يتم إرسال قائمة من التدفقات المتاحة، والمشفرة بمعدلات بت مختلفة، إلى العميل باستخدام قائمة تشغيل M3U موسعة.[2]
استنادًا إلى معايير بروتوكول نقل النص الفائق القياسية، يمكن لـ بروتوكول نقل النص الفائق Live Streaming أن يجتاز أي جدار ناري أو خادم وكيل يسمح عبر حركة بروتوكول نقل النص الفائق القياسية، على عكس البروتوكولات المستندة إلى UDP مثل RTP. يسمح هذا أيضًا بعرض المحتوى من خوادم بروتوكول نقل النص الفائق التقليدية وتسليمه عبر شبكات تسليم المحتوى القائمة على بروتوكول نقل النص الفائق المتاحة على نطاق واسع.[3] تتضمن المعيار أيضًا آلية تشفير قياسية[4] وتوزيع مفاتيح آمنة باستخدام بروتوكول نقل النص التشعبي الآمن، والتي توفر معًا نظام DRM بسيطًا. كما توفر الإصدارات اللاحقة من البروتوكول طريقة خدعة سريعة إلى الأمام والترجيع ولدمج العناوين الفرعية.
قامت تفاح بتوثيق بروتوكول نقل النص الفائق Live Streaming كمسودة إنترنت (إرسال فردي)، وهي المرحلة الأولى في عملية نشرها كطلب للتعليقات (RFC). اعتبارًا من ديسمبر 2015، طلب مؤلفو تلك الوثيقة من محرر الدفق المستقل (ISE) لنشر المستند كملف RFC إعلامي (غير قياسي) خارج عملية إجماع IETF.[5] في أغسطس 2017، تم نشر RFC8216 لوصف الإصدار 7 من البروتوكول.[5]
أسلوب البناء
يستخدم HTTP Live Streaming خادم ويب تقليديًا لتوزيع المحتوى السمعي البصري ويتطلب برنامجًا محددًا ليتماشى مع تنسيق الإرسال المناسب في الوقت الفعلي. تتكون بنية الخدمة من:
الخادم
يقوم الخادم بتدوين وتغليف تدفق مدخلات الفيديو بتنسيق صحيح للتسليم. ثم يتم إعداده للتوزيع من خلال تقسيمه إلى ملفات مختلفة. في عملية الاستيعاب، يتم تشفير الفيديو وتقطيعه لتوليد أجزاء الفيديو وملف الفهرس.
- Encoder: يتم تقنين ملفات الفيديو بتنسيق H.264 والصوت في AAC أو MP3 أو AC-3 أو EC-3.[5] يتم تغليف هذا بواسطة MPEG-2 Transport Stream لحمله.
- Segmenter: يقسم ملف MPEG-2 TS إلى أجزاء متساوية الطول، ويتم الاحتفاظ بها كملفات.ts. كما يقوم أيضًا بإنشاء ملف فهرس يحتوي على مراجع للملفات المجزأة، التي تم حفظها باسم.m3u8.
الموزع
يتم تكوينه بواسطة خادم ويب قياسي، ويقبل طلبات من العملاء ويقدم جميع الموارد (ملف قائمة التشغيل.m3u8 وملفات مقطع.ts) اللازمة للبث.
العميل
يقوم بطلب وتنزيل جميع الملفات والموارد وتجميعها بحيث يمكن عرضها على المستخدم كفيديو تدفق مستمر. يقوم برنامج العميل بتنزيل ملف الفهرس من خلال عنوان URL ثم ملفات الوسائط المتعددة المتاحة. يقوم برنامج التشغيل بتجميع التسلسل للسماح بعرض مستمر للمستخدم.
الميزات
يوفر HTTP Live Streaming آليات للاعبين للتكيف مع ظروف الشبكة غير الموثوق بها دون التسبب في توقف تشغيل المستخدم المرئي. على سبيل المثال، في شبكة لاسلكية لا يمكن الاعتماد عليها، تسمح HLS للاعب باستخدام فيديو منخفض الجودة، وبالتالي تقليل استخدام النطاق الترددي. يمكن توفير مقاطع فيديو HLS بدرجة عالية من خلال توفير خوادم متعددة لنفس الفيديو، مما يسمح بمبادلة اللاعب بسلاسة إذا فشل أحد الخوادم.
تكيف
لتمكين لاعب من التكيف مع عرض النطاق الترددي للشبكة، يتم ترميز الفيديو الأصلي في عدة مستويات جودة متميزة. يخدم الخادم فهرسًا يسمى «قائمة التشغيل الرئيسية»، من هذه الترميزات، يطلق عليها «دفق متغير». يمكن للاعب بعد ذلك الاختيار بين مسارات المتغيرات أثناء التشغيل، وتغييرها ذهابًا وإيابًا بسلاسة مع تغير ظروف الشبكة.
توفر
يمكن لقائمة التشغيل الرئيسية سرد تدفقات المتغير المتكررة التي لها نفس مستوى الجودة ولكن يتم استضافتها بواسطة خوادم مختلفة. يمكّن هذا اللاعب من التبديل إلى خادم آخر لمعدل البت المعين في حالة فشل أحد الخوادم. هذا يمنح درجة عالية من توافر لخدمة تيارات.
ويمكن الجمع بين هذا وبين القدرة على التكيف عن طريق إدراج تدفقات متباينة متعددة لكل مستوى جودة متميز.
movieStream = fs.createReadStream(pathToFile);
movieStream.on('open', function () {
res.writeHead(206, {
"Content-Range": "bytes " + start + "-" + end + "/" + total,
"Accept-Ranges": "bytes",
"Content-Length": chunksize,
"Content-Type": "video/mp4"
});
// This just pipes the read stream to the response object (which goes
//to the client)
movieStream.pipe(res);
});
movieStream.on('error', function (err) {
res.end(err);
});
باستخدام مجزأة MP4
على WWDC2016 أعلنت شركة آبل عن تضمين عنونة النطاق البايت لملفات MP4 المجزأة، أو fMP4 ، مما يسمح بتشغيل المحتوى في HLS دون الحاجة إلى تعدد إرساله إلى MPEG-2 Transport Stream. نظرت الصناعة في هذا كخطوة نحو التوافق بين HLS و MPEG-DASH.
تطبيقات الخادم
- يدعم Adobe Media Server نظام HLS لأجهزة iOS (HLS) و Protected HTTP Live Streaming (PHLS).
- يدعم Akamai HLS للتيارات الحية وعند الطلب.
- يدعم Amazon CloudFront نظام HLS للتدفقات عند الطلب.
- يوفر bitmovin خدمة تحويل الشفرة bitcodin.com ، والتي تدعم HLS للبث حسب الطلب والبث المباشر.
- تدعم CDNetworks HLS للتيارات الحية وعند الطلب.
- Cisco Systems: يدعم نهاية كاملة لإنهاء التسليم لخدمات Live / TSTV / VOD / HLS و Cloud DVR.
- يدعم Cloudflare HLS للتيارات الحية وعند الطلب.
- توفر شركة CTU Systems Ltd خدمة تحويل الترميز Eludo ctusystems.com ، والتي تدعم HLS للبث حسب الطلب والبث المباشر.
- تدعم EdgeCast Networks التدفق عبر الأجهزة باستخدام HLS.
- Edgeware: يدعم نهاية كاملة لإنهاء التسليم لـ Live / TSTV / VOD / HLS.
- Exterity: يدعم AvediaStream o7500 Origin Server HLS (بث مباشر لـ HTTP).
- يدعم خادم Flussonic Media Server نظام HLS متعدد المراحل إما لتحويل الشفرة أو البث منذ إصدار 4.3.0.
- يدعم Helix Universal Server من RealNetworks نظام تشغيل iPhone 3.0 والإصدارات الأحدث لبث HTTP Live أو عند الطلب من محتوى H.264 و AAC إلى iPhone و iPad و iPod.
- تدعم خدمات وسائط IIS من Microsoft البث المباشر وحسب الطلب وتدفق HTTP المباشر.
- ANEVIA تقوم Genova Live بتحويل كل من الترميز إلى H.264 و HEVC والتعبئة إلى HLS و MPEG-DASH و MS Smooth Streaming.
- شركة Kollective Technology Inc. تدعم توصيل HLS.
- المستوى 3 يدعم تيارات HLS المباشرة وعند الطلب.
- يدعم Limelight Networks HLS لبعض الحسابات.
- يدعم Nginx مع وحدة nginx-rtmp-HLS في الوضع المباشر. يدعم الإصدار التجاري Nginx Plus أيضًا HLS / HDS VOD.
- يدعم Nimble Streamer HLS في الوضع المباشر و VOD.
- ترميز الفيديو Qencode يدعم HLS.
- يدعم Tata Communications CDN HLS للتيارات الحية وعند الطلب.
- يدعم TVersity HLS بالتزامن مع تحويل الترميز على ذبابة لتشغيل أي محتوى فيديو على أجهزة iOS.
- الأصل الموحد يدعم HLS في الوضع المباشر و VOD.
- يدعم ملقم وسائط غير واقعي HLS زمن وصول منخفض كما في الإصدار 9.5.
- Ustream يدعم تسليم HLS البث المباشر. يتم تحويل الترميز المُستَبدَل إذا تم ترميز الصوت والفيديو الأصلي خارج متطلبات HLS.
- يدعم برنامج VLC Media Player نظام HLS لخدمة البث المباشر عند الطلب بدءًا من الإصدار 2.0.
- يدعم Wowza Streaming Engine من Wowza Media Systems HLS و HLS المشفرة للبث المباشر (مع DVR) والبث حسب الطلب.
- تدعم Octive Media Solutions البث الحي والفيديو باستخدام تقنية HLS وتدمج حلولها مع Octipulse لتوصيل HLS على منصات مختلفة.
استعمالات الخادم
- عرضت Adobe Systems تحديثًا على منتج Adobe Flash Media Server الذي يدعم تدفق HTTP Live في عرض NAB في أبريل 2011.
- استخدمت شركة Apple Inc. هذا في 1 أيلول (سبتمبر) 2010 لتنظيم حدث iPod Keynote المباشر عبر الإنترنت، وفي 20 تشرين الأول (أكتوبر) 2010 لعرض الحدث الأساسي «الرجوع إلى Mac» مباشرة عبر الإنترنت.
- أضافت جوجل دعم HTTP بث مباشر في Android 3.0 (قرص العسل).
- يدعم Helix Universal Server من RealNetworks نظام تشغيل iPhone 3.0 والإصدارات الأحدث لبث HTTP المباشر عند الطلب أو عند الطلب من محتوى H.264 و AAC إلى الإصدار الأول من iPhone و iPad و iPod في أبريل 2010، أحدث إصدار نوفمبر 2012.
- flashls عبارة عن برنامج Adobe Flash / Adobe AIR المساعد مفتوح المصدر الذي يوفر دعم HTTP Live Streaming لبرنامج Chromeless Flash / Air Player و Flowplayer و Video.js و mediaelement.js و Open Source Media Framework 2.0.
- أضافت HP دعم HTTP بث مباشر في webOS 3.0.5.
- أضافت Microsoft دعمًا لـ HTTP Live Streaming في محرك عرض EdgeHTML في نظام التشغيل Windows 10 في عام 2015.
- أضافت Microsoft دعمًا لـ HTTP بث مباشر في خدمات الوسائط 4.0 IIS.
- قام Yospace بإضافة دعم HTTP Live Streaming في مشغل YSpace HLS و SDK لإصدار الفلاش 1.0.
- أضاف Sling Media دعم HTTP Live Streaming إلى Slingboxes وتطبيقات SlingPlayer الخاصة به.
- في عام 2014/15، قدمت هيئة الإذاعة البريطانية (BBC) تيارات HLS-AAC للإذاعة الحية عبر الإنترنت وخدمات الصوت عند الطلب، وتدعم هذه التدفقات مع عملاء iPlayer Radio.
- hls.js تنفذ HLS في المتصفحات المتوافقة مع MSE. القدرة على قراءة ID3 من الفيديو PID.
- تنفذ hasplayer.js HLS في المتصفحات المتوافقة مع MSE.
المراجع