支持

常见问题

直播软件(也称为 RTMP 编码软件)会获取您的 RTMP 直播网址和密钥,然后将其发送到 Facebook。我们不提供直播软件。许多直播可以使用 OBS (Open Broadcasting Software) 或 Player.me,二者均提供免费版本。

您可以立即开始使用 Live API。但是,如果您想创建使用多个相机和显卡的完整专业级直播,则可能需要 1 至 2 周或更久,具体取决于应用审核的速度。

从您开始直播到 Facebook 上显示直播视频,二者之间约有 4 到 5 秒的延迟。当您在测试(或公开)页面上看到视频播放时,即表示直播已开始。

如果遇到直播问题,请参阅我们的直播视频疑难解决指南。此外,我们还建议您阅读规范指南,以确保您的设置能实现优质直播。如果您认为自己遇到漏洞问题,请直接将其发送至我们的漏洞工具,我们的工程师将会尽快联系您。

可以!第二个直播发送的推测性通知数量可能会少于第一个直播。如需详细了解直播通知的工作原理,请参阅我们的文档。

不一定。如果您想在两个(或更多)不同页面上直播,可选择使用某些编码器和 API,例如 Wowza 和 Streamshark。虽然可使用一个编码器在多个不同页面上直播,但我们建议您在一个页面上直播,然后将其分享给另一个页面,以便整合评论、心情和观看量。

默认宽高比是 16x9,但我们会从直播中推测出宽高比。如需了解更多技术规范,请参阅我们的规范、品牌内容和版权指南

您可以通过直播视频 API 并使用 embeddable 参数嵌入直播视频

发送 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}" } 

不,这是正常的情况。目前,用户必须等待直播视频变成 VOD(点播视频),才能在移动网页上观看它们。然而,如果您想在移动网页上观看嵌入到其他网站的直播视频,则系统会将您重定向至 Facebook 应用进行观看。

视频消失的原因有多种。以下是几种最常见的原因:

  1. 如果直播视频中配有背景音乐,则您的视频可能会因侵犯版权而被删除。无论是直播视频还是重播点播视频,均会出现此情况。
  2. 您或您主页的另一位作者可能已删除直播视频。如果已手动删除直播视频,则其将无法恢复。
  3. 系统可能已将您的视频自动标记为 IP 侵权。如果出现此情况,Facebook 将会向您发送一封包含链接的电子邮件,您可以通过此链接查看下架详情,并重新提交视频供我们的政策团队审核。

当直播发出结束信号后,如果系统未开始封存或处理直播,便会出现此问题。请确保您已发送带 end_live_video 参数的 POST 请求。如果此问题再次出现,请在我们的漏洞工具中提交漏洞报告,并务必提供视频编号。

请查看我们的错误代码列表,以便充分了解您的问题。

当 Facebook 收到带有失真音频的直播视频时,或在我们收到视频帧之后将其重新编码以供直播之前,均可能会出现音频失真的问题。出现此类错误的原因可能是:使用的比特率高于直播端点与 Facebook 服务器之间的连接可支持的比特率。如果发生这种情况或丢失数据包,则将无法正确接收部分视频或音频轨道,从而导致音频失真。

当直播通过受限带宽传送至客户端,或客户端没有足够的带宽来实时观看直播时,便可能出现视听不同步的问题。此外,如果 Facebook 服务器所接收的直播数据视听不同步,那么直播视频也将会出现同样的问题。请务必检查录制内容和编码硬件,以找出有可能出现视听不同步的位置。

直播视频 API 要求包含音频。如果仅流失传输视频,则直播将会终止。

当编码器出现故障或网络连接不良时,直播动态可能会中断。如果出现此情况,您有 2 到 3 分钟时间重新连接到直播发布时生成的初始直播网址。否则,您必须通过生成新的直播密钥和网址来继续直播。

能,您可以设置地域限制(根据观众的位置限制可观看视频的人群)。如需详细了解直播视频的 targeting 字段,请参阅我们的针对受众定位的高级使用指南

您可以恢复因侵犯版权而遭下架的视频。你将会收到通知,让您选择恢复该视频。不过,如果您在收到该通知后未执行此操作,则视频便再也无法恢复。

不能。很遗憾,目前无法速推直播视频。

目前尚没有可用于创建隐藏字幕的端点。不过,您可以在 LiveVideo 直播结束后为其添加隐藏字幕,或者也可在直播视频流式传输至 Facebook 服务器时,使用 CEA-608 隐藏字幕标准为其添加隐藏字幕。

如要为已结束的 LiveVideo(即点播视频)添加字幕,请参阅我们的“如何为主页视频添加字幕?”帮助主题。如要使用 CEA-608 标准添加字幕,请参阅我们的隐藏字幕指南

在直播中发布第三方广告违反 Facebook 的直播视频政策。例如,请勿发布串场广告、片头广告、片中广告或片尾广告。

我们建议您仅播放现场直播内容,以确保观众体验的完整性。不过在特殊情况下,您可能也需要发布事先录制的视频,就像新闻节目需要在电视直播中播放预先录制的内容一样。详情请参阅我们的规范、品牌内容及版权指南

如要显示在直播地图上,您必须在 POST /{live_video_id} 请求中使用 place 参数,进而设置您的直播位置。

如要重置固定密钥,请前往 www.facebook.com/live/create,依次点击创建直播,勾选使用固定直播密钥复选框,然后点击重置按钮。

报告漏洞

如果您认为自己可能发现了 Live API 的漏洞,请在我们的漏洞工具中提交漏洞报告,工程师很快就会前来处理。此外,您也可以通过 API 错误代码、SDK 方法等途径搜索已经提交过的漏洞。

报告漏洞