إرسال محتوى مباشر على YouTube عبر بروتوكول HLS

يوضّح هذا المستند كيفية استخدام بروتوكول البث المباشر وفق بروتوكول HTTP ‏ (HLS) لبث بيانات مباشرة على YouTube من برنامج ترميز. هذا المستند مخصّص لمورّدي برامج الترميز الذين يريدون إضافة ميزة إدخال HLS إلى منتجاتهم. يُعدّ نقل البيانات عبر HLS خيارًا جيدًا للمحتوى المميّز الذي يتطلّب جودة عالية ودقة عالية مع وقت استجابة أعلى نسبيًا. للاطّلاع على مقارنة موجزة بين بروتوكولات النقل المختلفة التي يتيحها "بث YouTube المباشر"، يُرجى مراجعة مقارنة بين بروتوكولات النقل في "بث YouTube المباشر".

لبث البيانات المباشرة باستخدام بروتوكول HLS، يجب أن يرسل برنامج الترميز سلسلة من قوائم تشغيل الوسائط وأجزاء الوسائط إلى نقطة نهاية HLS في YouTube باستخدام طلبات HTTP PUT أو POST. من منظور برنامج الترميز، تظهر نقطة نهاية HLS في YouTube كخادم HTTP سلبي.

يمثّل كل جزء من الوسائط محتوى الوسائط المتعددة الفعلي لجزء موجز من البث تتراوح مدته بين ثانية واحدة وأربع ثوانٍ. وتصف كل قائمة تشغيل وسائط كيفية إعادة تجميع مقاطع الوسائط بالترتيب الصحيح للبث.

متطلبات تنسيق الوسائط

في ما يلي متطلبات استيعاب HLS على YouTube لمحتوى الفيديو والصوت:

  • يجب دمج الفيديو والصوت بتنسيق M2TS.
  • برامج ترميز الفيديو المتوافقة هي H.264 وHEVC.
  • يمكن استخدام عدد لقطات في الثانية يصل إلى 60 لقطة.
  • يُسمح فقط بمجموعة GOP المغلقة.
  • برنامج ترميز الصوت المتوافق هو الترميز المتقدّم للصوت (AAC)، ويتوافق فقط مع الصوت أحادي المسار.

يمكنك الاطّلاع على متطلبات أكثر تفصيلاً في قسم مقاطع الوسائط.

نطاق عالي الديناميكية

يمكن بث فيديوهات بنطاق عالي الديناميكية (HDR) باستخدام برنامج ترميز HEVC، مع استيفاء المتطلبات الإضافية التالية:

  • معايير الألوان المتوافقة هي PQ وHLG بدقة 10 بت مع إضاءة غير ثابتة. في ما يلي المزيد من التفاصيل:
    • يجب أن يكون تنسيق Chroma هو YUV 4:2:0 10 بت.
    • يجب أن تكون وظيفة النقل PQ (المعروفة أيضًا باسم SMPTE ST 2084) أو HLG (المعروفة أيضًا باسم ARIB STD-B67).
    • يجب أن تكون الألوان الأساسية Rec. 2020.
    • يجب أن تكون معامِلات المصفوفة Rec. 2020 بقياس ضوئي غير ثابت.
  • يمكن استخدام قيم العيّنات ذات النطاق المحدود (أو نطاق MPEG) والنطاق الكامل (أو نطاق JPEG). من المهم ضبط النطاق وفقًا لنطاق قيمة العينة الذي يستخدمه المحتوى. يُنصح باستخدام قيم عيّنات ذات نطاق محدود.

الحصول على عنوان URL لعرض المحتوى وفق بروتوكول HLS

الحصول على عنوان URL لنقل البيانات وفق بروتوكول HLS من YouTube API

للحصول على عنوان URL الكامل الخاص بالنقل، يمكن لبرامج الترميز استخدام YouTube Live Streaming API من أجل إدراج مصدر liveStream مع الخصائص التالية:

"cdn": {
  "ingestionType": "hls",
  "frameRate": "variable",
  "resolution": "variable"
}

في ردّ من واجهة برمجة التطبيقات، يحدّد الحقل cdn.ingestionInfo.ingestionAddress عنوان URL الأساسي لنقل البيانات، ويحدّد الحقل cdn.ingestionInfo.backupIngestionAddress عنوان URL الاحتياطي لنقل البيانات. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات مورد liveStreams.

الحصول على عنوان URL لنقل البيانات عبر بروتوكول HLS من "استوديو صنّاع المحتوى في YouTube"

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

يمكنك إنشاء عنوان URL للبث المباشر وفق بروتوكول HTTP ‏(HLS) من مفتاح البث هذا على النحو التالي:

https://a.upload.youtube.com/http_upload_hls?cid=$STREAM_KEY&copy=0&file=

... حيث $STREAM_KEY هو مفتاح البث المعروض في واجهة الويب. مثال: https://a.upload.youtube.com/http_upload_hls?cid=abcd-efgh-ijkl-mnop-qrst&copy=0&file=

لتعزيز الموثوقية، يمكنك إرسال نسخة ثانية احتياطية من عملية الاستيعاب إلى عنوان URL الاحتياطي هذا:

https://b.upload.youtube.com/http_upload_hls?cid=$STREAM_KEY&copy=1&file=

يُرجى ملاحظة أنّ عنوان URL الاحتياطي يختلف عن عنوان URL الأساسي في نقطتين: تم تغيير كل من اسم المضيف والمَعلمة copy=. يجب أن يرسل العرض الاحتياطي قيمة مَعلمة copy= مختلفة عن العرض الأساسي لتجنُّب تلف البث.

إكمال عنوان URL الخاص بعرض البث وفق بروتوكول HLS

إنّ عناوين URL التي يتم الحصول عليها باستخدام أيّ من الطريقتين هي نماذج غير مكتملة، وينتهي كل منها بمعلَمة طلب بحث فارغة file=. لتشكيل عنوان URL النهائي، يجب أن يُلحق برنامج الترميز اسم ملف قائمة تشغيل الوسائط أو مقطع الوسائط بنهاية عنوان URL، وبذلك تكتمل المَعلمة file=.

تنطبق القواعد التالية على قيمة المَعلمة file=:

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

متطلبات بروتوكول HLS

يجب أن تتوافق قوائم تشغيل الوسائط وأجزاء الوسائط التي يرسلها برنامج الترميز مع مواصفات الإصدار الثاني من البث المباشر وفق بروتوكول HTTP.

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

يجب أن يستوفي برنامج الترميز الشروط التالية:

  • إرسال بث واحد مرمّز بأعلى دقة تريد عرضها للمستخدمين (دقة واحدة وبرنامج ترميز واحد).
  • دمج الصوت والفيديو
  • استخدام بروتوكول HTTPS واتصال دائم لجميع الطلبات

تحتوي الأقسام التالية على متطلبات أكثر تحديدًا لقوائم تشغيل الوسائط وأجزاء الوسائط.

قوائم تشغيل الوسائط

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

المتطلبات

  • يجب أن ينتهي اسم ملف قائمة التشغيل الخاصة بالوسائط باللاحقة .m3u8 أو .m3u.

  • يجب أن تبدأ قائمة تشغيل الوسائط الأولى التي يتم إرسالها لبث معيّن برقم التسلسل 0 ويجب أن يزداد رقم التسلسل بشكل منتظم.

  • يجب أن تحدّد العلامة EXT-X-MEDIA-SEQUENCE الرقم التسلسلي لأول جزء وسائط مُدرَج في قائمة التشغيل.

  • يجب ألا تحتوي قائمة تشغيل الوسائط على أكثر من خمسة مقاطع لم يستلمها الخادم. يكون الجزء معلّقًا إذا لم يتلقّه الخادم أو لم يؤكّد استلامه.

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

    يُرجى العِلم أنّ الخادم يقرّ باستلام "مقطع وسائط" من خلال عرض استجابة 200 (OK) أو 202 (Accepted) عند تحميل هذا المقطع. تشير الاستجابة 202 إلى أنّ الخادم تلقّى المقطع قبل أن تحدّد قائمة تشغيل هذا المقطع.

  • أرسِل قائمة تشغيل وسائط معدَّلة لكل مقطع وسائط لكي يتمكّن الخادم من استرداد البيانات بسرعة في حال فقدان قائمة تشغيل وسائط.

  • عندما يقرّ الخادم باستلام "أجزاء الوسائط"، يمكنك زيادة قيمة علامة EXT-X-MEDIA-SEQUENCE لمنع "قائمة تشغيل الوسائط" من أن تصبح طويلة جدًا. على سبيل المثال، إذا كان الخادم قد أقرّ باستلام أول تسعة أجزاء من الوسائط، قد تسرد قائمة تشغيل الوسائط التالية أجزاء الوسائط الثامن والتاسع والعاشر.

  • لا يمكن استخدام علامتَي EXT-X-KEY وEXT-X-SESSION-KEY.

أمثلة

تعرض القائمة التالية مثالاً على الملفات التي من المتوقع أن يرسلها برنامج الترميز:

Media Playlist file with seqnum #0
Media Segment file #0
Media Playlist file with seqnum #0-#1
Media Segment file #1
Media Playlist file with seqnum #0-#2
Media Segment file #2
Media Playlist file with seqnum #1-#3
Media Segment file #3
...

يعرض المثال التالي قائمة تشغيل وسائط تم إرسالها في منتصف بث فيديو مباشر. بما أنّ المثال مأخوذ من منتصف البث، فإنّ العلامة EXT-X-MEDIA-SEQUENCE تتضمّن قيمة غير صفرية.

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:2680

#EXTINF:3.975,
fileSequence2680.ts
#EXTINF:3.941,
fileSequence2681.ts
#EXTINF:3.975,
fileSequence2682.ts

شرائح الوسائط

تحدّد القائمة التالية متطلبات "شرائح الجمهور المستندة إلى الوسائط":

  • أسماء الملفات
    • يجب أن تتضمّن أسماء ملفات "أجزاء الوسائط" في عنوان URL الإضافة .ts في اسم الملف، وأن تتطابق مع أسماء الملفات في قائمة التشغيل.
    • يجب أن تكون أسماء ملفات "أجزاء الوسائط" فريدة في جميع عمليات إعادة تشغيل برامج الترميز وعمليات إعادة تشغيل البث.
  • التنسيق
    • يجب أن تكون مقاطع الوسائط بتنسيق M2TS وأن تكون ذاتية الإعداد.
    • يجب أن يحتوي كل مقطع M2TS على برنامج MPEG-2 واحد.
    • يجب أن تحتوي شريحة M2TS على PAT وPMT، ويجب أن تكون أول حزمتَي Transport Stream في الشريحة هما PAT وPMT.
  • المحتوى
    • يجب دمج الفيديو والصوت.
    • برامج ترميز الفيديو المتوافقة هي H.264 وHEVC.
    • يتوفّر محتوى HDR باستخدام HEVC (راجِع متطلبات HDR).
    • يمكن استخدام عدد لقطات في الثانية يصل إلى 60 لقطة.
    • يُسمح فقط بمجموعة GOP مغلقة.
    • برنامج ترميز الصوت المتوافق هو الترميز المتقدّم للصوت (AAC)، ويتوافق فقط مع الصوت الأحادي المسار.
    • يُنصح بأن تتراوح مدة مقاطع الوسائط بين ثانية واحدة وأربع ثوانٍ، كما هو موضّح في القسم التالي. يجب ألا تتجاوز مدة مقاطع الوسائط 5 ثوانٍ.
    • يجب تشفير مقاطع الوسائط فقط في طبقة TLS/SSL باستخدام HTTPS. لا تتوفّر آليات تشفير أخرى.

مدة مقطع الوسائط

نتوقّع استخدام عملية نقل البيانات عبر HLS للمحتوى المميّز الذي يتطلّب جودة ودقة عاليتَين. عادةً ما يكون وقت استجابة عملية نقل البيانات باستخدام HLS أطول من وقت استجابة عمليات النقل المستندة إلى RTMP وWebRTC لأنّ عملية نقل البيانات باستخدام HLS تستند إلى الشرائح.

ننصح بأن تتراوح مدة "مقطع الوسائط" بين ثانية واحدة وأربع ثوانٍ، لأنّ استخدام "مقاطع وسائط" أصغر يمكن أن يؤدي إلى تقليل وقت الاستجابة، ولكن على حساب زيادة معدّل إعادة التخزين المؤقت وانخفاض كفاءة الترميز. كما هو موضّح في القسم السابق، يجب ألا تزيد مدة مقاطع الوسائط عن 5 ثوانٍ.

معدلات البت

يقدّم مركز مساعدة YouTube إرشادات حول إعدادات معدّل نقل البيانات.

يُرجى العِلم أنّ برنامج الترميز HEVC يضغط البيانات بنسبة تتراوح بين% 25 و% 50 مقارنةً ببرنامج الترميز H.264، وذلك مع الحفاظ على جودة الفيديو نفسها. وبالتالي، يمكن استخدام قيم معدل نقل البيانات في الطرف الأدنى من النطاقات المقترَحة مع HEVC لتوفير معدل نقل البيانات، وهو أمر مفيد بشكل خاص لمحتوى 4K.

متطلبات أخرى

  • يجب أن تضبط برامج الترميز عنوان User-Agent في طلب HTTP باستخدام البنية التالية التي تتضمّن اسم الشركة المصنّعة واسم الطراز والإصدار:

    User-Agent: <manufacturer> / <model> / <version>
    

الترجمة والشرح

تتيح ميزة نقل البيانات عبر HLS خيارَين لإرسال مقاطع الترجمة والشرح:

  • أرسِل مقاطع الترجمة والشرح باستخدام طلبات HTTP POST منفصلة. ويمكن استخدام هذه الميزة لجميع عمليات نقل البيانات عبر HLS.
  • تعمل مقاطع الترجمة والشرح المضمّنة 608/708 مع عمليات نقل البيانات عبر بروتوكول HLS التي تستخدم برنامج ترميز الفيديو H264، ولكنّها لا تعمل مع عمليات نقل البيانات التي تستخدم برنامج ترميز الفيديو HEVC. لمزيد من التفاصيل، يُرجى الاطّلاع على متطلبات النسخ النصي التلقائي في "مركز مساعدة YouTube".

رموز استجابة HTTP

توضّح الأقسام التالية رموز الاستجابة التي يعرضها YouTube استجابةً لـ "مقاطع الوسائط" و"قوائم تشغيل الوسائط" التي يتم إرسالها باستخدام HLS.

‫200 (تمت العملية بنجاح)

استجابةً لطلب PUT أو POST، تشير استجابة HTTP 200 (OK) إلى أنّ خادم YouTube تلقّى عملية متوقعة وتعامل معها بنجاح.

عند تلقّي طلب DELETE، تشير الاستجابة HTTP 200 (OK) إلى أنّ خادم YouTube تلقّى الطلب وتجاهله. لا يتطلّب خادم YouTube من العميل حذف أي مورد في البث، ويتجاهل طلبات الحذف. لأسباب تتعلّق بالأداء، ينصح YouTube العملاء بعدم إرسال طلبات DELETE.

202 (تم القبول)

تشير الاستجابة HTTP 202 (تم القبول) إلى أنّ خادم YouTube تلقّى &quot;مقطع الوسائط&quot; قبل تلقّي &quot;قائمة تشغيل الوسائط&quot; التي تتضمّن &quot;مقطع الوسائط&quot;. يشير ذلك إلى أنّ على العميل إرسال قائمة التشغيل الخاصة بالوسائط التي تحتوي على مقطع الوسائط هذا في أقرب وقت ممكن لتجنُّب حدوث تأخير في معالجة هذا المقطع. يُرجى العِلم أنّ هذه المشكلة لن تحدث إذا أرسل برنامج الترميز قائمة تشغيل وسائط معدَّلة لكل جزء من الوسائط.

‫400 (طلب غير صالح)

تشير استجابة HTTP 400 (طلب غير صالح) إلى حدوث إحدى المشاكل التالية:

  • عنوان URL غير مكتوب بشكل صحيح
  • يتعذّر تحليل قائمة التشغيل أو أنّها تحتوي على علامات غير متوافقة
‫401 (غير مصرّح به)

تشير الاستجابة HTTP 401 (غير مصرح به) إلى أنّ المَعلمة cid في الجزء الأساسي من عنوان URL لنقطة نهاية البث المباشر وفق بروتوكول HTTP ‏(HLS) على YouTube تالفة أو انتهت صلاحيتها. على العميل تعديل المَعلمة cid للمتابعة.

‫405 (الطريقة غير مسموح بها)

تشير الاستجابة HTTP 405 (الطريقة غير مسموح بها) إلى أنّ الطلب لم يكن طلب POST أو PUT أو DELETE.

‫500 (خطأ في الخادم الداخلي)

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