バックアップストリーミング

ライブ動画一斉配信のバックアップライブ動画データを同時にストリーミングすることができます。プライマリーストリーミングがエラーになった場合、Facebookは自動的にバックアップストリーミングに切り替えて、ライブ動画一斉配信が途切れることなく続行されるようにします。手動でプライマリーストリーミングに切り替えるか、プライマリーストリーミングが再開されバックアップストリーミングがエラーにならない限り、一斉配信はバックアップストリーミングを使用して続行されます。

バックアップストリーミングをライブ動画一斉配信で使用するには、一斉配信のLiveVideoオブジェクトを作成するときにバックアップストリーミングを有効にするか、LiveVideoオブジェクトがストリーミングデータを受け取る前にLiveVideoオブジェクトでバックアップストリーミングを有効にしなければなりません。

LiveVideo作成時にバックアップストリーミングを有効にする

バックアップストリーミングを一斉配信のLiveVideoオブジェクトを作成するときに有効にするには、enable_backup_ingest=trueクエリ文字列パラメーターをクエリに含めます。

例えば、バックアップストリーミングを有効にしたLiveVideoUserで作成するには、次のようにします。

POST /{user-id}/live_videos ?status=LIVE_NOW &enable_backup_ingest=true &access_token={access-token}

これにより、プライマリーストリーミング用に1つ、バックアップ(セカンダリー)用に1つ、合計2つのURLが返されます。

{ "id": "{live-video-id}", "stream_url": "{stream-url}", "secure_stream_url": "{secure-stream-url}", "stream_secondary_urls": [ "{stream-secondary-urls}" ], "secure_stream_secondary_urls": [ "{secure-stream-secondary-urls}" ] }

secure_stream_urlはプライマリー取り込みストリーミング用で、secure_stream_secondary_urlsはバックアップ取り込みストリーミング用です。一斉配信中いつでも、バックアップデータをLiveVideoオブジェクトにストリーミングできます。

cURLリクエストの例

curl -i -X POST \ "https://graph.facebook.com/362629830945302/live_videos ?enable_backup_ingest=true &access_token=EAAI4b..."

応答の例

{ "id": "10215840463339953", "stream_url": "rtmps://rtmp.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbxMhT-cq73GTdpuPLo", "secure_stream_url": "rtmps://rtmp.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbxMhT-cq73GTdpuPLo", "stream_secondary_urls": [ "rtmp://rtmps.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api&a=AbzhD2fKJw1Uw7JQjFc" ], "secure_stream_secondary_urls": [ "rtmps://rtmps.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api&a=AbzhD2fKJw1Uw7JQF80" ] }

既存のLiveVideoでバックアップストリーミングを有効にする

LiveVideoの/input_streamsエッジにPOSTリクエストを送信することにより何らかのライブ動画ストリーミングデータを受け取っている場合を除いて、既存のLiveVideoオブジェクトでバックアップストリーミングを有効にすることができます。例:

POST /{live-video-id}/input_streams &access_token={access-token}

これにより、LiveVideoのIDが返されます。

{ "id": "{live-video-id}" }

いったん有効になると、LiveVideoオブジェクトから[プライマリーストリーミングURLとバックアップストリーミングURLを取得]できます。

cURLリクエストの例

curl -i -X POST \ "https://graph.facebook.com/10215840463339953/input_streams &access_token=EAAI4b..."

応答の例

{ "id": "10215840463339953" }

手動でのストリーミングの切り替え

次のリクエストを送信することで、LiveVideoのプライマリーストリーミングとバックアップストリーミングを主導で切り替えることができます。

POST /{live-video-id} ?master_ingest_stream_id={master-ingest-stream-id} &access_token={access-token}

{master-ingest-stream-id}値はブーリアンです。0はプライマリー取り込みストリーミングを、1はバックアップ取り込みストリーミングを表します。

cURLリクエストの例

curl -i -X POST \ "https://graph.facebook.com/10215840463339953 ?master_ingest_stream_id=1 &access_token=EAAI4b..."

プライマリーストリーミングURLとバックアップストリーミングURLの取得

次のようにLiveVideoのingest_streamsフィールドを読み取って、プライマリーストリーミングURLとバックアップストリーミングURLを取得できます。

GET /{live-video-id} ?fields=ingest_streams &acess_token={access-token}

これにより、LiveVideoについて、取り込みストリーミングの正常性と、プライマリーストリーミングのURLとバックアップストリーミング(もしあれば)のURLが返されます。

{ "ingest_streams": [ { "stream_id": "{stream-id}", "stream_url": "{stream-url}", "secure_stream_url": "{secure-stream-url}", "is_master": {is-master}, "stream_health": {stream-health}, "id": "{id}" }, { "stream_id": "{stream-id}", "stream_url": "{stream-url}", "secure_stream_url": "{secure-stream-url}", "is_master": {is-master}, "stream_health": {stream-health}, "id": "{id}" } ], "id":"10215840874550233" }

cURLリクエストの例

curl -i -X GET \ "https://graph.facebook.com/10215840463339953 ?fields=ingest_streams &access_token=EAAI4b..."

応答の例

{ "ingest_streams": [ { "stream_id": "0", "stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbyvsHKGRrur_sZOeuo", "secure_stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbyvsHKGRrur_sZOF08", "is_master": true, "stream_health": { "video_bitrate": 2304481.75, "video_framerate": 27.586206436157, "video_gop_size": 2000, "video_height": 700, "video_width": 1120, "audio_bitrate": 118149.8828125 }, "id":"10215840874630235" }, { "stream_id": "1", "stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api_dev&a=AbySai39Wr08FKpUYw0", "secure_stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api_dev&a=AbySai39Wr08FKpUv3M", "is_master": false, "stream_health": { "video_bitrate": 1866942.625, "video_framerate": 22.338048934937, "video_gop_size": 2000, "video_height": 700, "video_width": 1120, "audio_bitrate": 95675.3515625 }, "id":"10215840874670236" } ], "id":"10215840874550233" }