サポート

よくある質問

ストリーミングソフトウェア(RTMPエンコーディングソフトウェア)は、RTMPストリーミングURLとキーを取得してFacebookに送信します。Facebookは、ストリーミングソフトウェアを提供していません。多くのライブストリーミングでは、OBS (Open Broadcasting Software)またはPlayer.meを使用できます。どちらも無料バージョンがあります。

Live APIはすぐに使用を開始できます。ただし、複数のカメラとグラフィックを使用して完全なプロダクション品質のストリーミングを作成したい場合、アプリレビューによっては、1~2週間(またはそれ以上)かかることがあります。

ライブ配信を開始してから動画がFacebookに表示されるまで、約4~5秒の遅延があります。テストページ(または公開ページ)で動画が再生されていることを確認できたら、アップされたことがわかります。

ライブストリーミングに問題がある場合は、ライブ動画のトラブルシューティングのガイドをご覧ください。また、高品質のライブストリーミングに適した設定を行うには、仕様のガイドの確認をおすすめします。不具合を発見したと思われる場合は、不具合ツールで直接ご報告いただければ、エンジニアが折り返しご連絡します。

はい、できます。2番目のストリーミングは、おそらく最初のストリーミングよりも推定される通知が少なくなります。ライブ通知の仕組みの詳細については、Facebookのドキュメントをご覧ください。

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

デフォルトのアスペクト比は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}" } 

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

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

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

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

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

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

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

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

はい。ジオゲート管理(視聴者の所在地によって、動画を視聴できる人を制限すること)が可能です。オーディエンスのターゲット設定に関する高度な使用ガイドで、ライブ動画のtargetingフィールドの詳細をご確認ください。

はい。著作権侵害で削除された動画は復元できます。通知が届くので、それによって動画を復元するオプションを選択できます。ただし、通知を受け取ったときにアクションを実行しないと、動画を復元できなくなります。

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

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

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

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

視聴者のエクスペリエンスの整合性を維持するために、すべてのライブ一斉配信はライブコンテンツだけで構成することをおすすめします。ただし、ニュース番組の生放送で事前に録画したコンテンツを放映する場合のように、事前に録画したクリップを挿入することに意味がある特別なケースもあります。仕様、ブランドコンテンツ、著作権のガイドをご覧ください。

はい。ライブ動画はクロス投稿できます。クロス投稿動画を使用するアップロードヘルプセンターの別のページの動画をクロス投稿する方法をご覧ください。コメントとリアクションは元のページにのみ表示されます。

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

パーシステントキーをリセットするには、www.facebook.com/live/createにアクセスして、[ライブストリーミングを作成]をクリックし、[パーシステントストリーミングキーを使用]チェックボックスをオンにして、[リセット]ボタンをクリックします。

不具合の報告

ライブAPIに不具合があると思われる場合は、当社の不具合報告ツールで不具合レポートを提出してください。技術者が直ちに確認します。既存の不具合を、APIエラーコードやSDKのメソッドなどを使って検索することもできます。

不具合の報告