Этот документ обновлен.
Перевод (Русский) еще не готов.
Последнее обновление (английский): 21 мая
Последнее обновление (Русский): 28 дек 2021 г.

Support for Live Video API for Facebook

FAQ

Программное обеспечение для трансляции или кодирования RTMP получает URL и ключ вашей RTMP-трансляции и отправляет их Facebook. Мы не предоставляем такое программное обеспечение. Многие трансляции проводятся с помощью OBS (Open Broadcasting Software) или Player.me, которые имеют бесплатные версии.

Live API можно использовать сразу. Однако если вам нужна высококачественная трансляция с использованием нескольких камер и графических элементов, настройка может занять 1–2 недели или больше в зависимости от скорости прохождения проверки приложения.

Между выходом в эфир и появлением видео на Facebook обычно проходит 4–5 секунд. Проверить его доступность можно на тестовой или общедоступной Странице.

If you are having issues with your live streams, please refer to our guides to make sure that you are using our API correctly. We also recommend reviewing our video specifications to ensure that your settings are best suited for a quality live stream. If you believe you have run into a bug, you can send it directly to our Bug Tool and an engineer will get back to you.

Yes you can! The second stream will likely get fewer inferred notifications than the first. Please refer to our Best Practices documentation for more information on how notifications work.

Необязательно. Для трансляции на нескольких страницах имеются соответствующие кодировщики и API, например Wowza или Streamshark. Хотя транслировать на нескольких страницах с использованием одного кодировщика возможно, мы рекомендуем вести трансляцию только на одной странице и публиковать ее на других. Таким образом будут учитываться общие комментарии, реакции и количество просмотров.

Our default aspect ratio is 16x9, though we infer the aspect ratio from the stream. For complete specifications, see our reference.

Чтобы встроить видеотрансляцию, используйте параметр embeddable API Live Video.

Отправьте запрос POST /{live_video_id} и установите для параметра embeddable значение true. Используйте маркер доступа к Странице или маркер доступа пользователя с теми же разрешениями, что и для создания видеотрансляции.

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

Чтобы получить HTML-код для встраивания, отправьте запрос GET /{live_video_id}?fields=embed_html. Используйте маркер доступа к Странице или маркер доступа пользователя с теми же разрешениями, что и для создания видеотрансляции.

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

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

Пример ответа

{ "embed_html": "<iframe src=\"https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fyourpage%2Fvideos%2F{your-page-id}%2F&width=0\" width=\"0\" height=\"0\" style=\"border:none;overflow:hidden\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" allowFullScreen=\"true\"></iframe>", "id": "{your-live-video-id}" } 

Нет, это стандартное поведение. На данный момент мы не поддерживаем просмотр видеотрансляций в мобильных браузерах, пока они не перейдут в статус видео по запросу (Videos On Demand, VOD). Если вы хотите посмотреть через мобильный браузер видеотрансляцию, встроенную в другой сайт, вы будете перенаправлены в приложение Facebook для просмотра.

Этому может быть несколько причин. Вот самые распространенные:

  1. Если на фоне вашей трансляции играет музыка, видео может быть удалено за нарушение авторских прав. Это может произойти как во время прямого эфира, так и после его завершения.
  2. Видео удалено вами или другим администратором вашей Страницы. Если трансляция удалена вручную, ее нельзя восстановить.
  3. Возможно, видео было автоматически отмечено как нарушающее права интеллектуальной собственности. В таких случаях вы должны получить электронное письмо от Facebook. В нем содержится ссылка, перейдя по которой, вы сможете узнать подробности удаления видео и заново отправить его на проверку нашей команде по соблюдению политик.

Такая ситуация возникает, когда трансляция передала сигнал об окончании, но не начала процесс завершения. Отправьте запрос POST с параметром end_live_video. Если ошибка по-прежнему возникает, сообщите о ней с помощью этого инструмента и укажите ID видео.

Искажение звука может произойти, если Facebook получает видеотрансляцию с уже искаженным звукорядом или в том случае, когда мы уже получили кадры видео, но ещё не перекодировали их для трансляции. Возможная причина таких ошибок заключается в том, что скорость потока выше скорости, которую может поддерживать соединение между вашей конечной точкой трансляции и серверами Facebook. В таких случаях, а также при потере пакетов, часть видео или звукоряда будет получена неправильно, что вызывает искажение звука.

Проблемы с синхронизацией аудио и видео могут возникать, если у вас или зрителей не хватает пропускной способности соединения. Если ошибки синхронизации присутствуют в получаемом Facebook видео, они будут присутствовать и в конечном прямом эфире. Проверьте свое оборудование для записи и кодирования на предмет ошибок, которые могут вызывать рассинхронизацию.

Для API Live Video требуется аудио. Если вы пытаетесь транслировать только видео, трансляция автоматически завершается.

Прямой эфир может оборваться из-за ошибки кодировщика или проблем с подключением. Если это произойдет, у вас будет 2–3 минуты на то, чтобы заново подключиться к исходному URL трансляции, который был сгенерирован для публикации прямого эфира. В противном случае вам придется сгенерировать новый ключ и URL трансляции, чтобы продолжить ее.

Yes, you can geo-gate (restrict who can see your video depending on the viewer's location). See Audience Targeting to learn how.

Yes, videos taken down for copyright violation can be restored. You should receive a notification that gives you the option to restore the video. However, if you do not take this action when you receive the notification, the video can no longer be restored.

На данный момент поднятие видеотрансляций не поддерживается.

На данный момент конечных точек для создания таких титров не существует. Однако скрытые титры можно добавить в трансляцию LiveVideo после ее завершения или во время ее отправки на наши серверы. Во втором случае необходимо использовать стандарт скрытых титров CEA-608.

Информацию о том, как добавить титры в завершенную трансляцию LiveVideo, которая имеет статус видео по запросу, см. в этой статье справки. Добавление титров по стандарту CEA-608 описано в этом руководстве.

Добавление сторонней рекламы в трансляции противоречит политике Facebook о видеотрансляциях. Не включайте в свои трансляции рекламные вставки и рекламу типа pre-roll, mid-roll и post-roll.

We encourage all live broadcasts to exclusively contain live content so as to preserve the integrity of the viewer's experience. However, there are unique cases in which cutting to a pre-recorded clip makes sense, similar to how a news show might show previously recorded content on live TV.

Yes, refer to our Crossposting guide and How do I crosspost another Page's video? Help Center topic to learn how. Comments and reactions are shown only in the original Page.

Чтобы ваша видеотрансляция отображалась на карте, укажите ее местоположение в параметре place запроса POST /{live_video_id}.

Чтобы сбросить постоянный ключ, перейдите на страницу www.facebook.com/live/create, нажмите Создать прямую трансляцию, установите флажок Использовать постоянный ключ трансляции и нажмите кнопку Сбросить.

Reporting Bugs

If you believe you may have found a bug in the Live API, please file a bug report in our bug tool and an engineer will take a look at it shortly. You can also search for existing bugs by API error codes, SDK methods, and more.

Report a Bug