حياة البث

مقدمة

يشرح هذا المستند دورة حياة بث مباشر على YouTube تم إنشاؤه وإدارته باستخدام YouTube Live Streaming API وYouTube Content ID API.

الموارد وأنواع الموارد

كما هو موضّح في دليل البدء، المورد هو كيان بيانات فردي له معرّف فريد. لإنشاء أحداث مباشرة وإدارتها على YouTube، ستستخدم عددًا من أنواع الموارد المختلفة التي يتم تعريفها كجزء من YouTube Data API أو YouTube Content ID API. يتم تحديد الموارد المدرَجة ضمن عنوان YouTube Live Streaming API من الناحية الفنية في واجهات برمجة التطبيقات الأخرى هذه، ولكن يتم إدراجها بشكل منفصل لأنّها تُستخدَم فقط في أحداث البث المباشر.

مراجع حول YouTube Live Streaming API

مراجع YouTube Data API

مراجع YouTube Content ID API

إنشاء بث مباشر وإدارته

توضّح الخطوات التالية كيفية إنشاء حدث مباشر وإدارته على YouTube. تنقسم الخطوات إلى المراحل التالية:

  1. إعداد البث
  2. المطالبة بملكية المحتوى
  3. الاختبار
  4. البث
  5. إنهاء البث
  6. إنشاء مرجع

المرحلة 1: إعداد البث

الخطوة 1.1: إنشاء البث

استخدِم طريقة liveBroadcasts.insert لإضافة البث إلى جدول أحداث البث المباشر على YouTube. يجب أن يحدّد مصدر liveBroadcast الذي تريد إدراجه قيمًا للسمات المدرَجة أدناه.

يُرجى مراعاة الإرشادات التالية عند إعداد البث:

  • إذا أردت الحصول على مرحلة اختبار للبث، حيث يمكنك مشاهدة بث الفيديو بدون أن يتمكن المشاهدون الآخرون أيضًا من مشاهدة البث، يجب ضبط السمة contentDetails.monitorStream.enableMonitorStream على true والسمة contentDetails.enableAutoStart على false. هذه هي القيم التلقائية لكلتا السمتَين.

  • إذا أردت إنشاء مرجع من بث مسجّل، عليك ضبط السمة contentDetails.recordFromStart للبث على true. إذا أردت إتاحة الفيديو المسجّل للتشغيل فور انتهاء البث، عليك أيضًا ضبط قيمة السمة contentDetails.enableDvr على true. (القيمة التلقائية لكلتا السمتَين هي true).

  • إذا أردت حصر المناطق التي يمكن فيها مشاهدة البث، يمكنك ضبط السمة contentDetails.availabilityConfig. تتيح لك هذه السمة حظر مناطق معيّنة أو إتاحة المحتوى لقائمة محدّدة من المناطق. يمكنك أيضًا تحديد النوافذ الزمنية للتوفّر الإقليمي.

  • يمكنك اختياريًا تحديد فئة الفيديو للبث باستخدام السمة snippet.categoryId. في حال عدم تحديد الفئة، يتم ضبطها تلقائيًا على Entertainment.

  • يمكنك تعديل أيّ من سمات contentDetails طالما أنّ حالة البث لا تزال created أو ready.

  • يمكنك تعديل وقتَي بدء البث المباشر وانتهائه المحدّدَين مسبقًا طالما أنّ حالة البث المباشر هي created أو ready أو testing.

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

    ملاحظة: إذا أردت أن يكون الفيديو متاحًا لمستخدمين محدّدين على YouTube فقط، اضبط قيمة السمة status.privacyStatus على unlisted أو private حسب احتياجاتك.

معالجة الردّ من واجهة برمجة التطبيقات

عند استدعاء الطريقة liveBroadcasts.insert، يحتوي الردّ من واجهة برمجة التطبيقات على المورد liveBroadcast الذي أنشأته. يجب أن يستخرج الرمز الخاص بك id من هذا المورد ويخزّنه. ستحتاج إلى هذه القيمة لتحديد البث في طلبات البيانات المستقبلية من واجهة برمجة التطبيقات. (يمكنك أيضًا تحديد مورد video الذي يتوافق مع مورد liveBroadcast باستخدام المعرّف نفسه).

الخطوة 1.2: إنشاء مصدر البيانات

يتيح لك مرجع liveStream إرسال الفيديو إلى YouTube، ويصف المحتوى الذي ترسله. يجب ربط كل بث بحدث بث واحد فقط.

استخدِم طريقة liveStreams.insert لإنشاء بث الفيديو للحدث. عند إنشاء مصدر البيانات، يجب ضبط قيم للسمات المدرَجة أدناه:

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

يمكنك أيضًا ضبط قيم للسمات التالية:

  • snippet.description - مثل عنوان البث، يمكن تعديل وصف البث بعد إنشائه. لا يظهر العنوان ولا الوصف لمستخدمي YouTube.
  • [contentDetails.isReusable](

    /youtube/data/live/reference/rest/v3/liveStreams#contentDetails.isReusable)

    تحدّد هذه السمة ما إذا كان البث قابلاً لإعادة الاستخدام، ما يعني أنّه يمكن ربطه ببث مباشر متعدد. تحدّد قيمة هذه السمة بشكل فعّال ما إذا كانت القناة تتضمّن علاقة متعدد إلى واحد أو واحد إلى واحد بين موارد liveBroadcast وliveStream:

    • إذا استخدمت القيمة التلقائية للسمة true، يمكنك استخدام مورد liveStream نفسه لكل أحداث البث في القناة. وهذا يعني أنّه ليس عليك تكرار هذه الخطوة (1.2) لكل بث. بدلاً من ذلك، يمكنك إعادة استخدام معرّف البث لعمليات البث اللاحقة.
    • إذا ضبطت قيمة السمة على false، عليك إنشاء بث مباشر جديد لكل عملية بث.

بعد إصدار طلب البيانات من واجهة برمجة التطبيقات، يحتوي الردّ من واجهة برمجة التطبيقات على مورد liveStream الذي أنشأته. يجب أن يستخرج الرمز ويخزّن id من هذا المرجع. ستحتاج إلى هذه القيمة لتحديد مصدر البيانات في طلبات البيانات المستقبلية من واجهة برمجة التطبيقات.

الخطوة 1.3: ربط البث المباشر بالبث

بعد إنشاء موردَي liveBroadcast وliveStream، عليك الآن ربطهما باستخدام طريقة liveBroadcasts.bind. يربط هذا الإجراء أجزاء الفيديو التي سترسلها إلى YouTube ببث الحدث الخاص بهذا الفيديو.

عند استدعاء الطريقة liveBroadcasts.bind، اضبط المَعلمة id على معرّف البث الذي تم الحصول عليه في الخطوة 1.1، والمَعلمة streamId على معرّف البث المباشر الذي تم الحصول عليه في الخطوة 1.2.

المرحلة 2: المطالبة بالمحتوى

إذا أردت عرض الإعلانات أثناء البث، عليك المطالبة بملكية فيديو البث قبل بدء الحدث. اتّبِع الخطوات التالية لإعداد البث والفيديو والإعلانات. يُرجى العِلم أنّ قناة مالك البث يجب أن تكون مؤهّلة لعرض الإعلانات.

يُرجى العِلم أنّ جميع طلبات البيانات من واجهة برمجة التطبيقات التي تمّت مناقشتها في هذه المرحلة معرَّفة في YouTube Content ID API.

الخطوة 2.1: إنشاء مادة عرض

يمثّل مورد asset جزءًا من الملكية الفكرية. في هذه الحالة، تكون مادة العرض هي البث. استخدِم طريقة assets.insert لإنشاء مادة العرض.

سيتضمّن الردّ من واجهة برمجة التطبيقات المورد asset الذي أنشأته. يجب أن يستخرج الرمز البرمجي id من هذا المرجع ويخزّنه، لأنّك ستحتاج إلى هذه القيمة لتحديد مادة العرض في طلبات واجهة برمجة التطبيقات المستقبلية.

الخطوة 2.2: تحديد ملكيتك للمادة

تحدّد بيانات ملكية مادة العرض مالكيها والمناطق التي يملكون فيها مادة العرض. يستخدم YouTube هذه البيانات لتحديد البلدان التي يمكن فيها لمالك المحتوى ضبط السياسة الخاصة بفيديو تمّت المطالبة بملكيته.

على سبيل المثال، إذا كان لديك الحق في بث حدث في الولايات المتحدة، وكانت جهة بث أخرى تملك الحقوق نفسها في كندا، يمكن لكل منكما تحديد سياسات مختلفة لفيديو البث والفيديوهات التي يحمّلها المستخدمون والتي تتطابق مع فيديو البث. ستنطبق سياسة المطابقة الخاصة بك على الفيديوهات المطابقة التي حمّلها المستخدمون في الولايات المتحدة، بينما ستنطبق سياسة المالك الآخر على الفيديوهات المطابقة في كندا.

لتحديد مناطق ملكية مادة العرض، استخدِم الطريقة ownership.update. في هذا الطلب، اضبط المَعلمة assetId على id الذي خزّنته في الخطوة 2.1.

الخطوة 2.3: ضبط سياسة المطابقة لمادة العرض

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

ملاحظة: عليك ضبط سياسة مطابقة إذا كنت تخطّط لإنشاء مرجع من فيديو البث المباشر واستخدام هذا المرجع لتحديد الفيديوهات التي حمّلها المستخدمون وتتطابق مع البث المباشر. أو يمكنك تخطي هذه الخطوة.

لضبط سياسة المطابقة، عليك أولاً تحديد السياسة التي تريد تطبيقها. يمكنك استرداد قائمة بالسياسات الحالية من خلال استدعاء الطريقة policies.list، أو يمكنك تحديد سياسة جديدة من خلال استدعاء الطريقة policies.insert. في كلتا الحالتين، عليك تسجيل id للسياسة التي تريد تطبيقها.

بعد تحديد السياسة، يمكنك استدعاء الطريقة assetMatchPolicy.update. في هذا الطلب، اضبط مَعلمة assetId على id التي خزّنتها في الخطوة 2.1.

الخطوة 2.4: المطالبة بملكية الفيديو

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

لإنشاء مطالبة، استخدِم طريقة claims.insert. في المورد claim الذي تدرجه، عليك ضبط قيم للسمات التالية:

  • ‫assetId: حصلت على هذه القيمة في الخطوة 2.1.
  • ‫videoId: يمثّل هذا المعرّف معرّف البث الذي حصلت عليه في الخطوة 1.1.
  • policy: هذا مرجع policy يمكنك تطبيق سياسة حالية من خلال ضبط السمة id لهذا المورد على رقم تعريف السياسة الحالية. توضّح الخطوة السابقة كيفية استرداد معرّف سياسة حالية.
  • ‫contentType: اضبط هذه القيمة على audiovisual.

معالجة الردّ من واجهة برمجة التطبيقات

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

الخطوة 2.5: تعديل إعدادات الإعلانات للبث

يجب ضبط خيارات الإعلانات للفيديو إذا أردت عرض إعلان ما قبل التشغيل عندما يبدأ المشاهدون بمشاهدة البث أو عرض الإعلانات أثناء فترات الاستراحة في البث.

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

لتفعيل الإعلانات، استدعِ طريقة videoAdvertisingOptions.update. في طلبك، اضبط المَعلمة videoId على قيمة البث id التي حصلت عليها في الخطوة 1.1. استخدِم السمة adFormats[] في المورد videoAdvertisingOption لتحديد أشكال الإعلانات (preroll أو midroll أو postroll) التي تريد تفعيلها.

المرحلة 3: الاختبار

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

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

الخطوة 3.1: تضمين مشغّل بث شاشة

استردِد البث باستخدام طريقة liveBroadcasts.list، واستخرِج قيمة السمة contentDetails.streamDetails.monitorStreamEmbedHtml. وتحتوي هذه القيمة على رمز HTML الذي تحتاج إليه لتضمين مشغّل YouTube الذي يعرض بثّ المراقبة.

الخطوة 3.2: بدء الفيديو

ابدأوا بنقل الفيديو على البث.

الخطوة 3.3: التأكّد من أنّ بث الفيديو نشط

اطلب طريقة liveStreams.list لاسترداد مورد liveStream المرتبط بالبث. تأكَّد من أنّ قيمة السمة status.streamStatus هي active، ما يشير إلى أنّ خوادم YouTube تتلقّى البيانات من برنامج الترميز بشكل صحيح.

الخطوة 3.4: تغيير حالة البث إلى "اختبار"

استدعِ الطريقة liveBroadcasts.transition لتعديل حالة البث. اضبط قيمة المَعلمة id على معرّف البث الذي تم الحصول عليه في الخطوة 1.1، واضبط قيمة المَعلمة broadcastStatus على testing.

بعد استدعاء طريقة liveBroadcasts.transition، قد يستغرق اكتمال عملية النقل هذه بضع ثوانٍ أو حتى دقيقة واحدة. وخلال هذه الفترة، يجب إجراء استطلاع لواجهة برمجة التطبيقات للتحقّق من حالة البث. إلى أن يكتمل الانتقال، ستكون حالة البث المباشر testStarting. ستصبح الحالة testing بعد اكتمال عملية النقل.

الخطوة 3.5: إكمال الاختبار

إذا سار الاختبار بسلاسة، يمكنك الانتقال إلى المرحلة 4. ومع ذلك، في بعض الحالات، قد تحتاج إلى إجراء المزيد من الاختبارات. على سبيل المثال، إذا كشف الاختبار عن عدم ضبط بث الفيديو بشكل صحيح، فعليك معالجة ذلك قبل متابعة البث.

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

  1. لإلغاء ربط بث الفيديو، يمكنك استدعاء الطريقة liveBroadcasts.bind من الخطوة 1.3. في طلب بيانات من واجهة برمجة التطبيقات، اضبط المَعلمة id على القيمة id التي حصلت عليها في الخطوة 1.1. لا تُدرِج المَعلمة streamId في الطلب.

  2. لحذف بث الفيديو، يمكنك استدعاء الطريقة liveStreams.delete. في الطلب، اضبط المَعلمة id على قيمة id التي تم الحصول عليها في الخطوة 1.2.

  3. كرِّر الخطوة 1.2 لإنشاء مورد liveStream جديد تم إعداده بشكل صحيح. بعد ذلك، كرِّر الخطوة 1.3 لربط البث الجديد بالبث المباشر، والخطوات من 3.1 إلى 3.3 لاختبار البث الجديد.

الخطوة 3.6: تفعيل السمتَين autoStart وautoStop

بعد إكمال مرحلة الاختبار بنجاح، يمكنك ضبط السمتَين contentDetails.enableAutoStart وcontentDetails.enableAutoStop للبث على true قبل بدء البث الفعلي. لا يمكن ضبط هذه السمات على true قبل مرحلة الاختبار لأنّ الاختبار سيؤدي في الواقع إلى بدء البث.

المرحلة 4: البث

خلال هذه المرحلة، يمكن لجمهورك مشاهدة فيديو البث.

الخطوة 4.1: بدء الفيديو

ابدأوا بنقل الفيديو على البث.

الخطوة 4.2: التأكّد من أنّ بث الفيديو نشط

اطلب طريقة liveStreams.list لاسترداد مورد liveStream المرتبط بالبث. تأكَّد من أنّ قيمة السمة status.streamStatus هي active، ما يشير إلى أنّ خوادم YouTube تتلقّى البيانات من برنامج الترميز بشكلٍ صحيح.

الخطوة 4.3: تغيير حالة البث إلى "مباشر"

ملاحظة مهمة: تتيح هذه الخطوة للجمهور مشاهدة الفيديو.

استدعِ الطريقة liveBroadcasts.transition لتعديل حالة البث. اضبط قيمة المَعلمة id على معرّف البث الذي تم الحصول عليه في الخطوة 1.1، واضبط قيمة المَعلمة broadcastStatus على live.

إذا ضبطت السمة contentDetails.enableAutoStart لمورد liveBroadcast على true، لن تحتاج إلى استدعاء الطريقة liveBroadcasts.transition.

بعد إجراء طلب البيانات هذا من واجهة برمجة التطبيقات، أو إذا ضبطت السمة contentDetails.enableAutoStart على true، بعد بدء البث، عليك عادةً الانتظار لمدة تتراوح بين 5 و10 ثوانٍ حتى تكتمل عملية الانتقال. قد تستغرق عملية الانتقال مدة تصل إلى دقيقة واحدة. وخلال هذه الفترة، يجب إجراء استطلاع لواجهة برمجة التطبيقات للتحقّق من حالة البث. إلى أن تكتمل عملية الانتقال، ستكون حالة البث liveStarting. ستكون الحالة live بعد اكتمال عملية الانتقال، وسيتمكّن المشاهدون من مشاهدة البث من تلك النقطة في بث المراقبة.

يُرجى ملاحظة التأثيرات التالية لهذا الأمر:

  • إذا فعّلت بث المراقبة للبث المباشر (راجِع الخطوة 3.1)، ستتمكّن من مشاهدة بث المراقبة في مشغّل مضمّن.
  • إذا كنت قد حدّدت قيمة لسمة contentDetails.streamDetails.broadcastStreamDelayMs الخاصة بالبث، سيتم تأخير بث الفيديو الذي يظهر للمشاهدين الآخرين بمقدار هذه القيمة.

الخطوة 4.4: إدراج فواصل إعلانية في البث

استدعِ طريقة liveBroadcasts.cuepoint لإدراج نقطة تلميح. قد تؤدي نقطة الإشارة إلى تشغيل فاصل إعلاني. في مورد cuepoint المقدَّم في نص الطلب، اضبط السمة durationSecs على المدة المطلوبة للفاصل الإعلاني (بالثواني) الذي تريد عرضه. (القيمة التلقائية هي 30).

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

يوفّر دليل البدء مزيدًا من المعلومات حول تجربة المشاهدة أثناء الفواصل الإعلانية في البث المباشر.

المرحلة 5: اختتام البث

الخطوة 5.1: إيقاف البث

بهذا نختتم اختبار نظام البث المباشر على YouTube.

الخطوة 5.2: تغيير حالة البث إلى "مكتمل"

عندما تكون مستعدًا لإيقاف البث، استدعِ طريقة liveBroadcasts.transition في واجهة برمجة التطبيقات لتعديل حالة البث. اضبط قيمة المَعلمة id على معرّف البث الذي حصلت عليه في الخطوة 1.1، واضبط قيمة المَعلمة broadcastStatus على complete.

إذا ضبطت السمتَين contentDetails.recordFromStart وcontentDetails.enableDvr للبث على true، سيتمكّن جمهورك من مشاهدة إعادة تشغيل الحدث المباشر فور انتهائه.

المرحلة 6: إنشاء مرجع

بعد اكتمال التسجيل المباشر، يمكنك إنشاء مرجع من الفيديو المسجَّل. يطلب هذا الإجراء من YouTube البحث عن الفيديوهات التي حمّلها المستخدمون وتتطابق مع البث، والتعامل معها وفقًا لسياسة المطابقة التي حدّدتها في الخطوة 2.3.

ملاحظة مهمة: لإنشاء المرجع، يجب ضبط السمة contentDetails.recordFromStart للبث على true.

الخطوة 6.1: استطلاع حالة الفيديو من خلال Data API

يجب أن ينتهي YouTube من معالجة بث أو فيديو تم تحميله قبل أن تتمكّن من إنشاء مرجع من ذلك الفيديو. لتحديد ما إذا كانت معالجة الفيديو قد انتهت، يمكنك استطلاع طريقة videos.list في YouTube Data API، وضبط المَعلمة part على status والمَعلمة id على معرّف البث الذي خزّنته في الخطوة 1.1.

سيحتوي ردّ واجهة برمجة التطبيقات على طلب الاستطلاع على مورد video. عندما تكون قيمة السمة status.uploadStatus لهذا المورد هي processed، انتقِل إلى الخطوة 6.2.

الخطوة 6.2: إنشاء مرجع من الفيديو الذي تمت معالجته

لإنشاء المرجع، استخدِم الطريقة references.insert في Content ID API واضبط المَعلمة claimId على معرّف المطالبة الذي حفظته في الخطوة 2.4.

إرسال المحتوى المباشر إلى Content ID

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

لتفعيل البث المباشر لإرسال المحتوى إلى Content ID، جرِّب الإجراءات الموضّحة في الخطوة 6.2 بعد المطالبة بملكية الفيديو في الخطوة 2.4. إذا لم تتم الموافقة على حساب الشريك لإنشاء مرجع لبث مباشر قبل بدء هذا البث، ستعرض واجهة برمجة التطبيقات الخطأ fingerprintingNotAllowed. في هذه الحالة، عليك الانتظار حتى اكتمال البث، كما هو موضّح في الخطوتَين 6.1 و6.2 أعلاه، قبل إنشاء المرجع.