اختبار السرعة

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

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

يمكنك أيضًا استخدام أداة عمليات استيعاب Facebook Live بدلاً من واجهة API اختبار السرعة لتحديد خوادم الاستيعاب المثالية الخاصة ببث فيديو البث المباشر لديك.

الخطوة الأولى: بدء جلسة اختبار جديدة

لبدء جلسة اختبار جديدة، أرسل طلبًا إلى:

GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second

ستستجيب نقطة النهاية بكائن لغة JSON يحتوي على قائمة من حالات الاختبار. وتحتوي كل حالة اختبار على عنوان URL لوجهة وعدد وحدات البايت.

عينة من الطلب

curl -i -X GET "https://graph.facebook.com/v3.3/traffic_speedtest \
 ?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second \
 &access_token={access-token}"

عينة من الاستجابة

{                        //Formatted for clarity
 "next_tests": [
   {
     "byte_count": 3145728,
     "url": "https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api"
   },
   {
     "byte_count": 3145728,
     "url": "https://edge-star-mad.xx.fbcdn.net/upload-speed-test-api"
   },
   {
     "byte_count": 3145728,
     "url": "https://edge-star-ort.xx.fbcdn.net/upload-speed-test-api"
   },
   {
     "byte_count": 3145728,
     "url": "https://edge-star-eze.xx.fbcdn.net/upload-speed-test-api"
   }
 ]
}

الخطوة الثانية: اختبار كل عنوان URL لوجهة

لاختبار كل حالة، حمّل ملفًا ثنائيًا بالحجم الذي تم تعيينه من خلال byte_count إلى عنوان URL للوجهة المقابلة الخاص به.

POST /{destination-url}/upload-speed-test

عينة من الطلب

ففي هذا المثال، يمثل {binary-file} ملفًا يحتوي على 3145728 بايت عشوائية والتي تتطابق مع عدد وحدات البايت من الاستجابة.

curl --data-binary @{binary-file} https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api

عينة من الاستجابة

يتم إرجاع سلسلة غير واضحة.

eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO...   //Truncated for brevity

أنشئ مصفوفة باسم previous_results تحتوي على كائن بلغة JSON مكوّن من الخصائص والقيم التالية:

previous_results=[
 {
   "test_url": "{destination-url}",
   "result_string": "{opaque-string}"
 }
]

ملاحظة: تعامل مع result_string بصفتها سلسلة غير واضحة. ولا تحاول تفسير الاستجابة من نقطة نهاية الاختبار. وإذا تعذر على برنامج الترميز الوصول إلى عنوان URL للترميز، فاحذف ذلك الإدخال الفردي في القائمة previous_results.

المعلمةالوصف

{destination-url}

عنوان URL للوجهة التي أجريت اختبارًا عليها.

{opaque-string}

سلسلة نتيجة الاختبار التي يتم إرجاعها بواسطة عنوان URL.

عينة من مصفوفة مع استجابة اختبار فردي

previous_results=[           // JSON formatted for clarity
 {
   "test_url": "https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api",
   "result_string": "eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO..."   //Truncated for brevity
 }
]

ألحق كل عنوان URL لوجهة وأجر اختبارًا على الاستجابة للمصفوفة previous_results.

التنبيهات

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

الخطوة الثالثة: طلب مجموعة أخرى من عناوين URL للوجهة

بعد اختبار أول مجموعة من عناوين URL، اطلب مجموعة أخرى وقم بتضمين النتائج السابقة.

GET /traffic_speedtest?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second&previous_results={previous-results}

استبدل {previous-results} بمصفوفة نتائج الاختبار التي قمت بتخزينها.

عينة من الطلب

curl -i -X GET 'https://graph.facebook.com/v3.3/traffic_speedtest \
 ?fields=target_token,next_tests,upload_bandwidth_estimate_bits_per_second \
 &access_token={access-token} \
 &previous_results=[   // JSON formatted for clarity
   { 
     "test_url":"https://edge-star-kut.xx.fbcdn.net/upload-speed-test-api",
     "result_string":
       {
          "eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO..."   //Truncated for brevity
       }
   },
   {
     "test_url":"https://edge-star-bru.xx.fbcdn.net/upload-speed-test-api",
     "result_string":
       {
          "eyJzdGFydFRpbWVNUyI6IjE1NjIxMDk4NDg3ODAiLCJydHQiO..."   //Truncated for brevity
       }
   },
   ...  //Truncated for brevity
 ]'

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

عينة من الاستجابة برمز

{
 "target_token": "atl",   //Testing is complete
 "upload_bandwidth_estimate_bits_per_second": 173557406  //Suggested bps
}
الخاصيةالوصف

target_token

سلسلة يتم تضمينها عند استخدام واجهات API فيديو البث المباشر. وعندما يتم تضمين رمز هدف، ستعمل واجهة API فيديو البث المباشر على إرجاع عناوين URL للبث التي تم تحسينها من أجل اتصالك.

upload_bandwidth_estimate_bits_per_second

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

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

الخطوة الرابعة: الحصول على عنوان URL للبث المثالي

أنشئ عملية بث فيديو البث المباشر كالمعتاد، ثم استعلم عن معرف فيديو البث المباشر وقم بتضمين الرمز الهدف الخاص بك:

GET /{broadcast-id}?fields=secure_stream_url&target_token={target-token}

تستجيب نقطة النهاية بعنوان URL للبث الآمن الذي تم تحسينه من أجل اتصالك.

عينة من الطلب

ففي هذا المثال، يمثل target_token الذي قام اختبار السرعة بإرجاعه atl.

curl -i -X GET \
"https://graph.facebook.com/v3.3/{broadcast-id} \
  ?fields=secure_stream_url&target_token=atl \
  &access_token={access-token}"

عينة من الاستجابة

{
 “secure_stream_url”: “rtmps://...”,  //Optimized stream URL
 “id”: “{broadcast-id}”
}

أفضل الممارسات

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

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

نوصي بإعادة تشغيل اختبار السرعة عند حدوث إحدى الحالات التالية:

  • يتغير اتصال شبكتك. فعلى سبيل المثال، التغيير من اتصال wifi إلى اتصال سلكي.
  • تعيين تطبيقك إلى وضع السكون لبعض الوقت.
  • يكتشف تطبيقك أن ظروف الشبكة قد تغيرت. فعلى سبيل المثال، إذا كانت مخازن الإرسال المؤقتة تتم تعبئتها أو إذا كنت غير قادر على البث في النطاق الترددي التقديري.
  • تتغير جودة اتصالك. فعلى سبيل المثال، إذا أصبح الرابط بين اثنين من موفري خدمة الإنترنت (ISP) مزدحمًا.

عندما يتم إرجاع رمز هدف جديد، توقف عن استخدام عنوان URL للبث الحالي وابدأ باستخدام عنوان URL للبث الجديد الذي تم إرجاعه بواسطة الرمز الجديد.

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