Поддержка

Часто задаваемые вопросы

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

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

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

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

Да, это возможно. Вторая трансляция, скорее всего, получит меньше уведомлений, чем первая. Дополнительную информацию см. в документации по уведомлениям для трансляций.

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

По умолчанию соотношение сторон составляет 16 x 9, однако мы получаем информацию о нем из трансляции. Подробную информацию см. в этом руководстве.

Чтобы встроить видеотрансляцию, используйте параметр 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 трансляции, чтобы продолжить ее.

Да, фильтрация зрителей по геоданным возможна. Подробнее о поле targeting видеотрансляций см. в этом руководстве.

Да, видео, удаленные за нарушение авторских прав, можно восстановить. Вы должны были получить уведомление, в котором предлагается возможность восстановить это видео. Учтите, что видео можно восстановить только через это уведомление.

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

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

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

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

Мы рекомендуем использовать в прямом эфире только трансляции в режиме реального времени, чтобы соответствовать ожиданиям зрителей. Однако в некоторых случаях бывает необходимо использовать заранее записанное видео (например, когда в новостях показывают заранее записанный отрывок). Подробную информацию о таких ситуациях см. в этом руководстве.

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

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

Отправка сообщений об ошибках

Если вы обнаружили ошибку в Live API, сообщите о ней в соответствующем инструменте, и один из инженеров займется ею в ближайшее время. Вы также можете выполнить поиск существующих ошибок по кодам ошибок API, методам SDK и т. д.

Сообщить об ошибке