ライブ動画を視聴できる対象に特定のオーディエンスを含めたり除外したりします。
ページのライブ動画の場合、以下が必要です。
CREATE_CONTENT
タスクを実行できるユーザーがリクエストしたページアクセストークングループのライブ動画の場合、以下が必要です。
targeting
フィールドとそのパラメーターを設定したPOST /id
リクエスト(id
はLiveVideo ID)を送信します。
curl -i -X POST \
"https://graph.facebook.com/LIVE_VIDEO_ID
?targeting={age_min:17, geo_locations:{countries:["US","CA","MX"]}}
&access_token=ACCESS_TOKEN"
{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US", "CA", "MX" ] } }, "id":"LIVE_VIDEO_ID" }
ページのライブ動画の場合、以下が必要です。
CREATE_CONTENT
タスクを実行できるユーザーがリクエストしたページアクセストークングループのライブ動画の場合、以下が必要です。
targeting
フィールドを設定したGET /id
リクエストを送信します。ここで、id
はLiveVideo IDです。
curl -i -X GET \
"https://graph.facebook.com/LIVE_VIDEO_ID
?fields=targeting&access_token=ACCESS_TOKEN"
{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US" "CA", "MX" ] } }, "id":"LIVE_VIDEO_ID" }
最初のストリーミングデータをデコードしてすべての関連するAPIリクエストを処理している間に、ライブ配信が開始される前にわずかな遅延が発生する可能性があります。これにより、配信がいつ開始されたかを出演者が正確に知ることが困難になる場合があります。この問題を回避するため、LiveVideoオブジェクトを、ストリーミングデータを受け入れても、ストリーミングデータ自体の中でライブ配信開始RTMPメッセージが検出されるまでは視聴者に配信されないように設定することができます。そうすれば、配信をプレビューできる人なら誰でもそれを見ることができる一方で、ストリーミングエンコーダーは、視聴者に対してライブ配信が開始される時間と、視聴者が目にする最初のフレームの両方を正確にコントロールできます。
正確なフレームでのライブ配信開始を有効にするには、まず通常どおりの方法でLiveVideoオブジェクトを作成し、そのステータスをPREVIEWに設定します。LiveVideoオブジェクトを作成したらそれに対してクエリを実行し、次のネストされたフィールドを使用してsecure_stream_urlフィールドをリクエストします。
secure_stream_url.inband_go_live(require_inband_signal)
これにより、LiveVideoオブジェクトで正確なフレームでのライブ配信開始が有効になり、APIはストリーミング先として使用できる新しいセキュアストリームURLを応答として返します。LiveVideoオブジェクトを最初に作成したときに送信された、最初のセキュアストリームURLは無視してかまいません。
(1)配信ステータスが(グラフAPI呼び出しまたはLive Producerから公開するユーザーを通して) LIVEに設定され、かつ、(2)エンコーダーがライブ配信開始RTMPメッセージを送信した後、ライブ配信が開始されて視聴者に表示されます。
以下を含むAMF0パケット(タイプ0x12):
onGoLive
timestamp
LiveVideoで正確なフレームでのライブ配信開始を有効にするためのリクエストの例を次に示します。
curl -i -X GET \ "https://graph.facebook.com/v19.0
/LIVE_VIDEO_ID?fields=secure_stream_url.inband_go_live(require_inband_signal)&access_token=12345..."
正確なフレームでのライブ配信開始を有効にしたLiveVideoオブジェクトのセキュアストリームURLの例を次に示します。
{ "secure_stream_url": "rtmps://rtmp-pc.facebook.com:443/rtmp/LIVE_VIDEO_ID?s_bl=1&s_gl=1&...", "id": "LIVE_VIDEO_ID" }
2021年5月25日以降、[ライブ配信を開始]ダイアログは廃止されます。詳しくは、ブログ投稿をご覧ください。
Facebookは、Live API統合のプロセスをできる限り簡素化するプラグインを作成しました。これにより、ライブ配信の開始前に、ポップアップウィンドウでFacebookへの認証、ライブストリーミングのプレビュー、ライブストリーミングの説明の記述などを行うことができます。このダイアログは、クライアントサイドからのストリーミングに最適です。バックエンド統合は、引き続きAPIを直接使用する必要があります。
POST
応答の送信先を決定するコントロールを含むポップアップウィンドウを初期化するには、次のコードを挿入します。
<button id="liveButton">Create Live Stream To Facebook</button> <script> document.getElementById('liveButton').onclick = function() { FB.ui({ display: 'popup', method: 'live_broadcast', phase: 'create', }, function(response) { if (!response.id) { alert('dialog canceled'); return; } alert('{your-stream-url}:' + response.secure_stream_url); FB.ui({ display: 'popup', method: 'live_broadcast', phase: 'publish', broadcast_data: response, }, function(response) { alert("video status: \n" + response.status); }); }); }; </script>
パラメーター | 値 | 説明 |
---|---|---|
|
| ウェブページでダイアログをどのように開くか。 |
|
| createフェーズのダイアログでは、ストリーミングURLに動画をアップロードできます。publishフェーズのダイアログには、プレビューと[ライブ配信を開始]ボタンが表示されます。 |
| APIまたは |
|
[Create]フェーズポップアップウィンドウで、自分が管理する任意のページまたはグループからライブストリーミングの投稿先を選択します。POST
応答には、stream_url
フィールドとsecure_stream_url
フィールドが含まれます。どちらのフィールドも、サーバーURLとストリーミングキーに分けることができます。
サーバーURLは、stream_urlの前半のrtmp://rtmp-api.facebook.com:80/rtmp/
ストリーミングキーは、stream_urlの後半の10153307708286557?ds=1&a=AdrRKk4mOaqPbQdxDuk
応答フィールド | フェーズ | 説明 |
---|---|---|
|
| 配信動画のID。 |
|
| ライブストリーミングのアップロードに使用する、ストリーミングサーバーとストリーミングキーを含むRTMP URL。 |
|
| RTMPS URL(セキュアプロトコルで保護されたストリーミングURL)。 |
|
| 配信のステータスを示す文字列値。 |
Facebookのコードスニペットには、stream_url
を使用するalert
呼び出しが用意されています。クライアントはstream_url
を使用してストリーミングを開始します。ストリーミングが開始されるとすぐに、[publish]フェーズポップアップウィンドウに配信のプレビューが表示されます。このダイアログでは、リクエストのプライバシーパラメーターを調整せずに利用者がプライバシー設定を選択できます。またライブ動画の説明、タイトル、トピックタグも設定できます。
注:[publish]ポップアップウィンドウが[オフライン]の場合は、ファイアウォールがRTMPをブロックしていないことと、ブラウザーのAdblockerソフトウェアがすべてオフになっていることを確認してください。
[ライブ配信を開始]をクリックすると、ダイアログは閉じ、数秒後にライブストリーミングが、設定した投稿先に応じてページまたはグループで再生されます。
ライブ動画の最初のフレームにフレームの正確な開始時間を設定したメタデータが挿入されます。エンコーダーでカウントダウンを実装すると、パブリッシャーに動画の正確な開始時間を知らせることができます。Facebookのインターフェイスから動画を開始、停止することもできます。