جدولة عمليات البث

تم إيقاف استخدام جدولة فيديو البث المباشر للإصدار 12.0 وسيتم إيقافه لكل الإصدارات في 14 ديسمبر 2021. وستؤدي استدعاءات نقطة النهاية POST /ID/live-video التي تتضمن المعلمة planned_start_time إلى إرجاع خطأ.

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

جدولة البث

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

POST /{node-id}/live_videos?status=SCHEDULED_UNPUBLISHED&planned_start_time={start-time}

استخدم المعلمة planned_start_time والطابع الزمني UNIX للإشارة إلى وقت البدء المطلوب.

وسيؤدي ذلك إلى إنشاء كائن LiveVideo في العقدة المستهدفة وإرجاع secure_stream_url وid لفيديو البث المباشر. استخدم عنوان URL الآمن للبث مع برنامج الترميز من أجل بث بيانات فيديو البث المباشر إلى الكائن LiveVideo في وقت البدء المجدول أو قبله. وستظهر عملية البث على يوميات/موجز العقدة في وقت البدء المُخطط له طالما يتم تلقي بيانات البث.

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

عينة من الطلب

curl -i -X POST \ 
  "https://graph.facebook.com/{page-id}/live_videos?status=SCHEDULED_UNPUBLISHED&planned_start_time=1541539800&access_token={access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{page-id}/live_videos",
  new JSONObject("{\"status\":\"SCHEDULED_UNPUBLISHED\",\"planned_start_time\":\"1541539800\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{page-id}/live_videos"
           parameters:@{ @"status": @"SCHEDULED_UNPUBLISHED",@"planned_start_time": @"1541539800",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{page-id}/live_videos',
  'POST',
  {"status":"SCHEDULED_UNPUBLISHED","planned_start_time":"1541539800"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{page-id}/live_videos',
    array (
      'status' => 'SCHEDULED_UNPUBLISHED',
      'planned_start_time' => '1541539800'
    ),
    '{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();

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

{
  "id": "10214937378883406",  //LiveVideo object ID
  "stream_url": "rtmp://rtmp-api.facebook...",
  "secure_stream_url": "rtmps://rtmp-api.facebook..."  //Stream URL
}

للحصول على قائمة بعمليات البث المجدولة، راجع الحصول على عمليات البث المجدولة.

معاينة البث

يمكنك استخدام API فيديو البث المباشر لمعاينة عملية بث فيديو البث المباشر غير المنشور، مثل كائن LiveVideo الذي تم إنشاؤه مع تعيين status على SCHEDULED_UNPUBLISHED أو UNPUBLISHED.

لمعاينة بث فيديو البث المباشر الذي تم إلغاء نشره، أرسل طلبًا إلى:

GET /{live_video_id}?fields={fields}

استخدم المعلمة {fields} للحصول على dash_preview_url في الكائن LiveVideo.

عينة من الطلب

curl -i -X GET \
 "https://graph.facebook.com/{live-video-id}
    ?fields=dash_preview_url
     &access_token={access-token}"
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", "dash_preview_url");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{live-video-id}"
           parameters:@{ @"fields": @"dash_preview_url",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{live-video-id}',
  'GET',
  {"fields":"dash_preview_url"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{live-video-id}',
    '{fields:dash_preview_url}',    
    '{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();

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

{
  'dash_preview_url': 'https://video.xx.fbcdn.net/...',
  'id': '{live-video-id}'
}

سيؤدي ذلك إلى إرجاع dash_preview_url وid لفيديو البث المباشر. انسخ عنوان URL والصقه في مشغل واجهة التحكم لمعاينة البث.

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

الحصول على عمليات البث المجدولة

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

GET /{node-id}/live_videos?broadcast_status=["SCHEDULED_UNPUBLISHED"]

لاحظ أن القيمة broadcast_status يجب أن تكون مصفوفة. ويمكنك الرجوع إلى المرجع LiveVideo للحصول على قائمة كاملة بالقيم الإضافية.

عينة من قائمة البث للصفحة

curl -i -X GET \ 
  "https://graph.facebook.com/{page-id}/live_videos?broadcast_status=["SCHEDULED_UNPUBLISHED"]&access_token={access-token}"
GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/{page-id}/live_videos",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("broadcast_status", "["SCHEDULED_UNPUBLISHED"]");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{your-page-id}/live_videos"
           parameters:@{ @"broadcast_status": @"["SCHEDULED_UNPUBLISHED"]",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{page-id}/live_videos',
  'GET',
  {"broadcast_status":"[\"SCHEDULED_UNPUBLISHED\"]"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{your-page-id}/live_videos',
    '{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();

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

{
  "data": [
    {
      "status": "SCHEDULED_UNPUBLISHED",
      "stream_url": "rtmp://rtmp-api-dev.facebook.com:80/rtmp/...",
      "secure_stream_url": "rtmps://rtmp-api-dev.facebook.com:443/rtmp/...",
      "embed_html": "<iframe src=\"https://www.facebook.com/plugins/video.php?...",
      "id": "10214937378883406 "  //LiveVideo object ID
    }
  ]
}

إعادة جدولة البث

يمكنك تغيير وقت البدء للبث المجدول من خلال إرسال طلب إلى:

POST /{live-video-id}?planned_start_time={new-start-time}

يجب أن تكون القيمة {new-start-time} عبارة عن طابع زمني بتنسيق UNIX يشير إلى وقت البدء الجديد. عند نجاح العملية، ستستجيب API بمعرف الكائن LiveVideo.

عينة من فيديو البث المباشر للصفحة

curl -i -X POST \
  "https://graph.facebook.com/{live-video-id}?planned_start_time=1541540800&access_token={access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{live-video-id}",   
  new JSONObject("{\"planned_start_time\":\"1541540800\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{live-video-id}"    
           parameters:@{ @"planned_start_time": @"1541540800",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{live-video-id}', 
  'POST',
  {"planned_start_time":"1541540800"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{live-video-id}', 
    array (
      'planned_start_time' => '1541540800'
    ),
    '{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();

مثال على الاستجابة

{
  "id": "10214937378883406"
}

بدء البث على الفور

يمكنك بدء البث على الفور من خلال إرسال طلب إلى:

POST /{live-video-id}?status=LIVE_NOW

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

عينة من الطلب

curl -i -X POST \
 "https://graph.facebook.com/{live-video-id}?status=LIVE_NOW&access_token={access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{live-video-id}",
  new JSONObject("{\"status\":\"LIVE_NOW\"}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{live-video-id}"
           parameters:@{ @"status": @"LIVE_NOW",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{live-video-id}',
  'POST',
  {"status":"LIVE_NOW"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{live-video-id}',
    array (
      'status' => 'LIVE_NOW'
    ),
    '{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();

مثال على الاستجابة باللغة JSON

{
  "id": "10214937378883406"
}