الاستخدامات المتقدمة

استهداف الجماهير

يمكنك تضمين جماهير محددة واستبعادها من مشاهدة فيديو البث المباشر لديك.

إنشاء جمهور مستهدف

العقدة

قبل البدء

بالنسبة لمقاطع فيديو البث المباشر في أية صفحة، ستحتاج إلى ما يلي:

بالنسبة لمقاطع فيديو البث المباشر في أية مجموعة، ستحتاج إلى ما يلي:

الأمثلة

أرسل طلب POST /id حيث يكون المعرف id هو معرف LiveVideo، وقم بتعيين الحقل targeting والمعلمات التابعة له

curl -i -X POST \
  "https://graph.facebook.com/LIVE_VIDEO_ID
    ?targeting={age_min:17, geo_locations:{countries:["US","CA","MX"]}}
    &access_token=ACCESS_TOKEN"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/LIVE_VIDEO_ID/",
  new JSONObject("{}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/LIVE_VIDEO_ID/"
           parameters:@{ @"targeting": @"{age_min:17, geo_locations:{countries:["US","CA","MX"]}, excluded_zipcodes:{"key":"US:10001"}}",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/LIVE_VIDEO_ID/',
  'POST',
  {"targeting":"{age_min:17, geo_locations:{countries:[\"US\",\"CA\",\"MX\"]}, excluded_zipcodes:{\"key\":\"US:10001\"}}"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/LIVE_VIDEO_ID/',
    array (
      'targeting' => '{age_min:17, geo_locations:{countries:["US","CA","MX"]}, excluded_zipcodes:{"key":"US:10001"}}'
    ),
    'ACCESS_TOKEN'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

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

{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US", "CA", "MX" ] } }, "id": "LIVE_VIDEO_ID" } 

الحصول على معلومات حول الجمهور المستهدف

العقدة

قبل البدء

بالنسبة لمقاطع فيديو البث المباشر في أية صفحة، ستحتاج إلى ما يلي:

بالنسبة لمقاطع فيديو البث المباشر في أية مجموعة، ستحتاج إلى ما يلي:

  • رمز وصول المستخدم الذي يطلبه مسؤول المجموعة

الأمثلة

أرسل طلب GET /id حيث يكون المعرف id هو معرف LiveVideo مع الحقل targeting.

GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/LIVE_VIDEO_ID",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "targeting");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/LIVE_VIDEO_ID"
           parameters:@{ @"fields": @"targeting",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/LIVE_VIDEO_ID',
  'GET',
  {"fields":"targeting"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/LIVE_VIDEO_ID',
    'ACCESS_TOKEN'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
curl -i -X GET \
  "https://graph.facebook.com/LIVE_VIDEO_ID
    ?fields=targeting&access_token=ACCESS_TOKEN"

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

{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US" "CA", "MX" ] } }, "id": "LIVE_VIDEO_ID" } 

البث المباشر دقيق الإطارات

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

لتمكين البث المباشر دقيق الإطارات، أنشئ أولًا كائن LiveVideo كما تفعل عادة وقم بتعيين حالته إلى "معاينة". وبمجرد إنشائه، استعلم عن كائن LiveVideo واطلب الحقل secure_stream_url مع الحقول المتداخلة التالية:

secure_stream_url.inband_go_live(require_inband_signal)

سيؤدي ذلك إلى تمكين البث المباشر دقيق الإطارات بكائن LiveVideo وستستجيب واجهة API مع عنوان URL جديد للبث الآمن والذي يمكنك البث إليه بعد ذلك. ويمكنك تجاهل عنوان url الأولي للبث الآمن الذي تم إرساله إليك عندما أنشأت كائن LiveVideo أول مرة.

سيبدأ البث المباشر ويكون مرئيًا للجمهور بعد (1) تعيين حالة البث إلى "مباشر" (من خلال استدعاء واجهة Graph API أو مستخدم ينشر من Live Producer) و (2) يرسل برنامج التشفير رسالة RTMP للبث المباشر.

بنية رسالة RTMP للبث المباشر

حزمة AMF0 (النوع 0x12) التي تحتوي على:

  • السلسلة onGoLive
  • مصفوفة ECMA (النوع 0x08) التي تحتوي على زوج قيمة ومفتاح واحد:
    • المفتاح: السلسلة (النوع 0x02) timestamp
    • القيمة: الرقم (النوع 0x00): الطابع الزمني لإطار الفيديو الأول الذي سيكون مرئيًا للعامة

لمزيد من المعلومات، يمكنك الرجوع إلى مواصفات RTMP وAMF0.

عينة من الطلب

تتوفر عينة من الطلب لتمكين البث المباشر دقيق الإطارات على LiveVideo.

curl -i -X GET \ "https://graph.facebook.com/v19.0/LIVE_VIDEO_ID?fields=secure_stream_url.inband_go_live(require_inband_signal)&access_token=12345..."

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

يتوفر عنوان URL للبث الآمن لكائن LiveVideo مع تمكين البث المباشر دقيق الإطارات.

{ "secure_stream_url": "rtmps://rtmp-pc.facebook.com:443/rtmp/LIVE_VIDEO_ID?s_bl=1&s_gl=1&...", "id": "LIVE_VIDEO_ID" }

مربع الحوار البث المباشر

اعتبارًا من 25 مايو 2021، سيتم إيقاف استخدام مربع الحوار البث المباشر. ولمزيد من المعلومات، يرجى زيارة منشور المدونة.

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

المتطلبات

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

<button id="liveButton">Create Live Stream To Facebook</button>
<script>
document.getElementById('liveButton').onclick = function() {
  FB.ui({
    display: 'popup',
    method: 'live_broadcast',
    phase: 'create',
}, function(response) {
    if (!response.id) {
      alert('dialog canceled');
      return;
    }
    alert('{your-stream-url}:' + response.secure_stream_url);
    FB.ui({
      display: 'popup',
      method: 'live_broadcast',
      phase: 'publish',
      broadcast_data: response,
    }, function(response) {
    alert("video status: \n" + response.status);
    });
  });
};
</script>
المعلمات القيمة الوصف

display

popup، iframe

طريقة فتح مربع الحوار في صفحتك على الويب.

phase

create، publish

يتيح لك مربع الحوار في مرحلة الإنشاء إمكانية الحصول على عنوان URL للبث المباشر لتحميل فيديو بينما سيوفر مربع الحوار في مرحلة النشر زر البث المباشر والمعاينة. required

broadcast_data

الاستجابة object التي يتم إرجاعها إما من واجهة API أو مرحلة create.

تُعد هذه المعلمة هي required في مرحلة publish.

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

يمثل عنوان URL للخادم الجزء الأول من stream_url: rtmp://rtmp-api.facebook.com:80/rtmp/

بينما يمثل مفتاح البث الجزء الآخر من stream_url: 10153307708286557?ds=1&a=AdrRKk4mOaqPbQdxDuk

حقل الاستجابةالمرحلةالوصف

id

create, publish

معرف فيديو البث.

stream_url

create

عنوان url لـ rtmp الذي يحتوي على خادم البث ومفتاح البث المُستخدم لتحميل البث المباشر.

secure_stream_url

create

عنوان rtmps url، وهو عنوان URL البث مع بروتوكول آمن.

status

publish

قيمة سلسلة تشير إلى حالة البث.

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

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

عند النقر على البث المباشر، سيتم إغلاق مربع الحوار وفي غضون بضع ثوانٍ يتم تشغيل البث المباشر على الصفحة أو المجموعة وفقًا للوجهة المختارة.

ويتم إدراج بيانات التعريف في الإطار الأول من فيديو البث المباشر مع أوقات بدء دقيقة الإطارات. ويمكن لبرامج الترميز تنفيذ عدّ تنازلي لتنبيه الناشرين بتوقيت البدء الدقيق للفيديو. ويمكنك أيضًا بدء الفيديو وإيقافه من واجهة Facebook.