يشرح هذا المستند كيفية استخدام بروتوكول "البث المباشر وفق بروتوكول HTTP" (HLS) لبث بيانات مباشرة على YouTube من برنامج ترميز. هذا المستند مخصّص لصنّاع برامج الترميز الذين يريدون إضافة ميزة نقل بيانات HLS إلى منتجاتهم. إنّ نقل بيانات HLS هو خيار جيد للمحتوى المميّز الذي يتطلّب دقة عالية وبدرجة جودة عالية مع وقت استجابة أعلى نسبيًا. للاطّلاع على مقارنة موجزة بين بروتوكولات النقل المختلفة التي يتيح استخدامها ميزة "بث YouTube المباشر"، يمكنك الاطّلاع على مقارنة بين بروتوكولات النقل في ميزة "بث YouTube المباشر".
لبث البيانات المباشرة باستخدام بروتوكول HLS، يجب أن يرسل برنامج الترميز سلسلة من قوائم تشغيل الوسائط وشرائح الوسائط إلى نقطة نهاية بروتوكول HLS في YouTube باستخدام طلبات HTTP PUT
أو
POST
. من وجهة نظر برنامج الترميز، تبدو نقطة نهاية HLS في YouTube
كخادم HTTP سلبي.
يمثّل كلّ "قسم وسائط" محتوى الوسائط المتعددة الفعلي في جزء قصير من البثّ تتراوح مدّته بين ثانية واحدة و4 ثوانٍ. توضّح كل قائمة تشغيل وسائط كيفية إعادة تجميع مقاطع الوسائط بترتيب البث الصحيح.
متطلبات تنسيق الوسائط
تفرض عملية نقل بيانات HLS في YouTube المتطلبات التالية على محتوى الفيديو والصوت:
- يجب دمج الفيديو والصوت بتنسيق M2TS.
- برامج ترميز الفيديو المتوافقة هي H.264 وHEVC.
- يمكن استخدام معدلات عرض تصل إلى 60 لقطة في الثانية.
- يمكن استخدام مجموعة GOP المغلقة فقط.
- برنامج ترميز الصوت المتوافق هو الترميز المتقدّم للصوت (AAC)، ولا يمكن استخدام سوى مقطع صوتي واحد.
يمكنك الاطّلاع على متطلبات أكثر تفصيلاً في قسم شرائح الجمهور المستندة إلى الوسائط.
نطاق عالي الديناميكية
يمكن تحميل فيديوهات بنطاق عالي الديناميكية (HDR) باستخدام برنامج ترميز HEVC، ويجب استيفاء ال requirements التالية:
- معايير الألوان المتوافقة هي PQ وHLG بسعة 10 بت مع سطوع غير ثابت.
في ما يلي المزيد من التفاصيل:
- يجب أن يكون تنسيق معلومات الألوان هو 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 المباشر من أجل إدراج مورد بث مباشر باستخدام الخصائص التالية:
"cdn": {
"ingestionType": "hls",
"frameRate": "variable",
"resolution": "variable"
}
في استجابة واجهة برمجة التطبيقات، يحدِّد الحقل cdn.ingestionInfo.ingestionAddress
عنوان URL الأساسي لنقل البيانات، ويحدِّد الحقل cdn.ingestionInfo.backupIngestionAddress
عنوان URL الاحتياطي لنقل البيانات. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات
مورد liveStreams
.
الحصول على عنوان URL لتحميل بروتوكول HLS من "استوديو YouTube"
في واجهة الويب في "استوديو YouTube"، بعد أن ينقر صانع المحتوى على "إنشاء بث"، تعرِض منصة YouTube "مفتاح بث" يتألّف من أحرف أبجدية رقمية وواصلات. يحدّد هذا المفتاح السري كلّ من صانع المحتوى و البث المباشر على YouTube.
يمكنك إنشاء عنوان URL لبث HLS من مفتاح البث هذا على النحو التالي:
https://a.upload.youtube.com/http_upload_hls?cid=$STREAM_KEY©=0&file=
... حيث يكون $STREAM_KEY
هو مفتاح البث المعروض في
واجهة الويب.
على سبيل المثال:
https://a.upload.youtube.com/http_upload_hls?cid=abcd-efgh-ijkl-mnop-qrst©=0&file=
لتعزيز الموثوقية، يمكنك إرسال نسخة ثانية زائدة من عملية نقل البيانات إلى عنوان URL الاحتياطي هذا:
https://b.upload.youtube.com/http_upload_hls?cid=$STREAM_KEY©=1&file=
يختلف عنوان URL الاحتياطي عن عنوان URL الأساسي في نقطتَين: تغيّر كلّ من اسم المضيف
ومَعلمة copy=
. يجب أن تُرسِل عملية نقل البيانات الاحتياطية قيمة مختلفة للمَعلمة copy=
عن عملية النقل الأساسية لتجنُّب
تلف البث.
إكمال عنوان URL لعرض المحتوى وفق بروتوكول HLS
إنّ عناوين URL التي يتم الحصول عليها باستخدام أيّ من الطريقتَين هي نماذج غير مكتملة، وينتهي كلّ عنوان منها
بمَعلمة طلب بحث فارغة file=
. لإنشاء عنوان URL النهائي، يجب أن يلصق برنامج الترميز اسم ملف قائمة تشغيل الوسائط أو مقطع الوسائط بنهاية عنوان URL، وبالتالي إكمال المَعلمة file=
.
تنطبق القواعد التالية على قيمة المَعلمة file=
:
- يمكن لبرنامج الترميز إنشاء اسم قائمة تشغيل وسائط أو اسم مقطع وسائط من الأحرف الأبجدية الرقمية والشرطات السفلية والشُرط المائلة للأمام والواصلات والنقاط، ولا يمكن استخدام أحرف أخرى.
- يجب ألا يُشفِّر برنامج الترميز اسم الملف باستخدام ترميز URL.
- قد يتضمّن برنامج الترميز مكوّنات مسار نسبي أو مطلق في أسماء الملفات، على الرغم من أنّ ذلك ليس مطلوبًا أبدًا. إذا كان برنامج الترميز يتضمّن مكوّن مسار ضمن اسم ملف "مقطع وسائط"، يجب أن يشير إلى المسار نفسه في إدخال قائمة التشغيل المقابل.
متطلبات بروتوكول HLS
يجب أن تكون قوائم تشغيل الوسائط وشرائح الوسائط التي يرسلها برنامج الترميز متوافقة مع مواصفات الإصدار 2 من بروتوكول HTTP Live Streaming.
تحدِّد مواصفات HLS نوعَين من قوائم التشغيل: قائمة تشغيل الوسائط وقائمة تشغيل ملف الوسائط الرئيسي. بما أنّ YouTube يُعيد ترميز المحتوى الذي يتم بثّه بدرجات دقة ومعدلات نقل بيانات مختلفة، لا يحتاج برنامج الترميز إلى إرسال محتوى بمعدّلات نقل بيانات مختلفة إلى YouTube. نتيجةً لذلك، لا تتيح منصة YouTube سوى قوائم التشغيل الخاصة بالوسائط لتحميل HLS، ويُتجاهل استخدام قوائم التشغيل الرئيسية. (توفّر قائمة التشغيل الرئيسية مجموعة من عمليات بث المحتوى المتغير، يصف كل منها نسخة مختلفة من المحتوى نفسه).
يجب أن يستوفي برنامج الترميز الشروط التالية:
- إرسال بث واحد مُشفَّر بالدقة الأعلى التي تريد عرضها للمستخدمين (دقة وبرنامج ترميز واحدان)
- mux الصوت والفيديو
- استخدام بروتوكول 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
في اسم الملف ، ويجب أن تتطابق مع أسماء الملفات في قائمة التشغيل. - يجب أن تكون أسماء ملفات مقاطع الوسائط فريدة عند إعادة تشغيل برنامج الترميز وإعادة بدء البث.
- يجب أن تتضمّن أسماء ملفات مقاطع الوسائط في عنوان URL الإضافة
- التنسيق
- يجب أن تكون شرائح الوسائط بتنسيق M2TS ويجب أن تكون ذاتية الإعداد.
- يجب أن يحتوي كل جزء من أجزاء M2TS على برنامج MPEG-2 واحد.
- يجب أن يحتوي قسم M2TS على جدولَي PAT وPMT، ويجب أن يكون أول اثنين من حزم النقل في أي قسم هما جدولَي PAT وPMT.
- المحتوى
- يجب أن يكون الفيديو والصوت مدمجين.
- برامج ترميز الفيديو المتوافقة هي H.264 وHEVC.
- تتوفّر تقنية HDR مع HEVC (اطّلِع على متطلبات HDR).
- يمكن استخدام معدلات عرض تصل إلى 60 لقطة في الثانية.
- يمكن استخدام مجموعة GOP المغلقة فقط.
- برنامج ترميز الصوت المتوافق هو الترميز المتقدّم للصوت (AAC)، ولا يمكن استخدام سوى مقطع صوتي واحد.
- ننصح بأن تتراوح مدة مقاطع الوسائط بين ثانية واحدة وأربعة ثواني، كما هو موضّح في القسم التالي. يجب ألا تتعدى مدّة مقاطع الوسائط 5 ثوانٍ.
- يجب تشفير مقاطع الوسائط في طبقة TLS/SSL باستخدام HTTPS فقط. لا يُسمح باستخدام آليات التشفير الأخرى.
مدة مقطع الوسائط
نتوقع استخدام عملية نقل بيانات بروتوكول HLS للمحتوى المميّز الذي يتطلّب دقة عالية وبجودة عالية. يكون وقت استجابة نقل بيانات HLS عادةً أطول من وقت استجابة عمليات نقل بيانات RTMP وWebRTC لأنّ نقل بيانات HLS يعتمد على الشرائح.
ننصحك بتحديد مدة شريحة الوسائط بين ثانية واحدة و4 ثوانٍ لأنّ استخدام شرائح وسائط أصغر يمكن أن يؤدي إلى تقليل وقت الاستجابة، ولكن مع زيادة معدل إعادة تحميل المحتوى وانخفاض كفاءة الترميز. كما هو موضّح في القسم السابق،يجب ألا تزيد مدّة أقسام الوسائط عن 5 ثوانٍ.
معدلات البت
يقدّم "مركز مساعدة" YouTube إرشادات حول إعدادات معدل نقل البيانات.
يُرجى العِلم أنّ HEVC يحقّق بشكل عام ضغط بيانات أكبر بنسبة تتراوح بين% 25 و% 50 عند استخدام جودة الفيديو نفسها مقارنةً ببرنامج H.264. وبالتالي، يمكن استخدام قيم معدل نقل البيانات في الطرف الأدنى من النطاقات المقترَحة مع HEVC لتوفير عرض النطاق، وهو مفيد بشكلٍ خاص لمحتوى بدقة 4K.
متطلبات أخرى
على برامج الترميز ضبط الرأس
User-Agent
في طلب HTTP باستخدام البنية التالية التي تتضمّن اسم الشركة المصنّعة واسم الطراز والإصدار:User-Agent: <manufacturer> / <model> / <version>
الترجمة والشرح
تتيح عملية نقل بيانات HLS خيارَين لإرسال مقاطع الترجمة والشرح:
- أرسِل الترجمة والشرح باستخدام طلبات POST منفصلة لبروتوكول HTTP. ويعمل هذا الإجراء مع جميع عمليات نقل بيانات HLS.
- تعمل مقاطع الترجمة والشرح 608/708 المضمّنة مع عمليات نقل بيانات بروتوكول HLS التي تستخدم برنامج ترميز الفيديو H264، ولكن لا تعمل مع عمليات نقل البيانات التي تستخدم برنامج ترميز الفيديو HEVC. لمزيد من التفاصيل، يُرجى الاطّلاع على متطلبات ميزة "النسخ النصي التلقائي" في مركز مساعدة YouTube.
رموز استجابة HTTP
توضّح الأقسام التالية رموز الاستجابة التي تعرضها YouTube في استجابة لمقاطع الوسائط وقوائم تشغيل الوسائط التي يتم عرضها باستخدام بروتوكول HLS.
- 200 (حسنًا)
استجابةً لطلب PUT أو POST، يشير رمز HTTP 200 (OK) إلى أنّ خادم YouTube تلقّى عملية متوقّعة وعالجها بنجاح.
استجابةً لطلب DELETE، يشير رمز HTTP 200 (حسنًا) إلى أنّه تلقّى خادم YouTube الطلب وتجاهله. لا يطلب خادم YouTube من العميل حذف أيّ مورد في البث، كما يتجاهل طلبات الحذف. لأسباب تتعلّق بالأداء، تنصح YouTube العملاء بعدم إرسال طلبات DELETE.
- 202 (تم القبول)
تشير استجابة HTTP 202 (مقبول) إلى أنّ خادم YouTube تلقّى القسم الإعلامي قبل تلقّي قائمة تشغيل إعلامية تتضمّن هذا القسم. يشير ذلك إلى العميل على أنّه يجب إرسال قائمة تشغيل الوسائط التي تحتوي على هذا المقطع من الوسائط في أقرب وقت ممكن لمنع حدوث تأخير في معالجة هذا المقطع. يُرجى العِلم أنّ هذا لن يشكّل مشكلة إذا أرسل برنامج الترميز ملفًا معدَّلاً لجدول تشغيل الوسائط لكل جزء من أجزاء الوسائط.
- 400 (طلب غير صالح)
تشير استجابة HTTP 400 (طلب غير صالح) إلى حدوث إحدى المشاكل التالية:
- عنوان URL غير مكتوب بشكل صحيح
- لا يمكن تحليل قائمة التشغيل أو أن تحتوي على علامات غير متوافقة
- 401 (غير مصرّح به)
تشير استجابة HTTP 401 (غير مصرّح به) إلى أنّ مَعلمة cid في عنوان URL الأساسي لنقطة نهاية YouTube HLS تالف أو انتهت صلاحيته. على العميل تعديل المَعلمة
cid
للمتابعة.- 405 (Method Not Allowed)
يشير الردّ HTTP 405 (الطريقة غير مسموح بها) إلى أنّ الطلب لم يكن طلب POST أو PUT أو DELETE.
- 500 (خطأ في الخادم الداخلي)
تشير استجابة HTTP 500 (خطأ في الخادم الداخلي) إلى أنّه تعذّر على الخادم معالجة الطلب. بالنسبة إلى هذا الخطأ، ننصحك بإعادة محاولة إرسال الطلب باستخدام خوارزمية الصعق الكهربي الثنائي.