このドキュメントが更新されました。
日本語への翻訳がまだ完了していません。
英語の最終更新: 5月21日
日本語の最終更新: 2022/09/05

Support for Live Video API for Facebook

FAQ

ストリーミングソフトウェア(RTMPエンコーディングソフトウェア)は、RTMPストリーミングURLとキーを取得してFacebookに送信します。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.

必ずしも必要ありません。2つ(またはそれ以上)の異なるページにストリーミングしたい場合は、WowzaやStreamsharkなどのエンコーダーとAPIをそのために使用できます。1つのエンコーダーで複数のページにストリーミングすることは可能ですが、1つのページにストリーミングして他のページにシェアすることをおすすめします。こうすると、コメント、リアクション、視聴者の数が一元化されます。

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

ライブ動画は、ライブ動画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}" } 

いいえ。不具合ではなく、予期された動作です。Facebookは、現在、ライブ動画がVOD(オンデマンド動画)になるまで、モバイルサイトでの視聴をサポートしていません。ただし、別のサイトに埋め込まれたモバイルサイトのライブ動画を見る場合は、視聴できるようにFacebookアプリにリダイレクトされます。

この現象が発生する原因はいくつかあります。一般的な原因を以下に示します。

  1. ライブ動画でバックグラウンドミュージックを再生している場合、著作権侵害で動画が削除された可能性があります。これは、ライブ動画の配信中か、配信終了後のVODのリプレイで発生することがあります。
  2. あなたかページの別の作成者がライブ動画を削除した可能性があります。ライブ動画が手動で削除された場合、復元することはできません。
  3. 動画に対してIP違反のフラグが自動的に立てられた可能性があります。この場合は、Facebookからあなたにメールが届きます。メールには、削除を確認して、ポリシーチームによるレビューを受けるために動画を再送信するためのリンクが含まれています。

この問題は、配信がライブ動画終了のシグナルを送った後、封印または処理を開始しなかった場合に発生します。end_live_videoパラメーターを指定してPOSTリクエストを送信したことを確認してください。この問題が引き続き発生する場合は、Facebookのバグツールで不具合を報告してください。その際に、必ず動画IDを含めてください。

Facebookが音声の乱れのある動画ストリームを受信したとき、またはフレームを受信してから一斉配信用の再エンコードを行うまでの間に、音声の乱れが発生することがあります。この種のエラーについて考えられる原因の1つは、使用されているビットレートが、一斉配信元のエンドポイントとFacebookサーバー間の接続で維持できるビットレートより高いことです。その場合、またはパケットが失われた場合、映像または音声トラックの一部が正しく受信されないために、音声の乱れが生じる可能性があります。

音声と映像の同期の問題は、限られた帯域幅でライブ配信がクライアントに配信される場合、またはクライアント側にライブで視聴するのに十分な帯域幅がない場合に、発生する可能性があります。また、Facebookサーバーが受信したストリーミングが同期していなければ、ライブ動画も同期しません。音声と映像がずれている可能性がある個所については、必ずレコーディングおよびエンコーディングハードウェアをチェックしてください。

ライブ動画APIには音声が必須です。映像のみをストリーミングしようとすると、ストリーミングは終了します。

ライブフィードは、エンコーダーの障害またはネットワークの接続不良により、停止することがあります。停止した場合、ライブ投稿用に生成した元のストリーミングURLに再接続する猶予が2~3分間あります。再接続しない場合は、ライブストリーミングを続行するために、新しいストリーミングのキーと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.

いいえ。残念ながら、現時点ではライブ動画を宣伝することはできません。

現在、クローズドキャプションを作成するためのエンドポイントはありません。ただし、ライブ動画の一斉配信の終了後にクローズドキャプションを追加するか、Facebookサーバーにストリーミングする際に、CEA-608クローズドキャプション規格を使用してライブ動画ストリームにクローズドキャプションを追加することはできます。

終了した(つまり、ステータスがVODの)ライブ動画にキャプションを追加する方法については、ヘルプトピックのページの動画にキャプションを追加するにはどうすればよいですか。をご覧ください。CEA-608規格を使用してキャプションを追加する方法については、クローズドキャプションのガイドをご覧ください。

ライブストリーミングにサードパーティの広告を含めることは、Facebookのライブ動画ポリシーに違反します。たとえば、バンパー広告、プリロール広告、ミッドロール広告、ポストロール広告を含めないでください。

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.

Live Mapに表示されるためには、POST /{live_video_id}リクエストでplaceパラメーターを使用して、動画の位置情報を設定する必要があります。

パーシステントキーをリセットするには、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