Streams de sauvegarde

Vous pouvez diffuser simultanément une vidéo en direct à partir de données de sauvegarde streamées. Si votre stream principal échoue, nous basculons automatiquement vers votre stream de sauvegarde afin que la diffusion ne s’interrompe pas. Celle-ci se poursuit alors avec le stream de sauvegarde, sauf si vous rebasculez manuellement vers le stream principal, ou si votre stream principal a repris et que votre stream de sauvegarde échoue.

Pour diffuser une vidéo en direct à partir d’un stream de sauvegarde, vous devez activer le streaming de sauvegarde lors de la création de l’objet vidéo en direct à diffuser ou l’activer sur l’objet en question avant qu’il ne reçoive les données de streaming.

Activer le streaming de sauvegarde lors de la création de la vidéo en direct

Pour activer le streaming de sauvegarde lors de la création de l’objet vidéo en direct à diffuser, incluez le paramètre de chaîne de requête enable_backup_ingest=true dans votre requête.

Par exemple, pour créer une vidéo en direct alors que le streaming de sauvegarde est activé pour un utilisateur :

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

Deux URL seront renvoyées, l’une correspondant au stream principal, l’autre correspondant au stream de sauvegarde (secondaire).

{ "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}" ] }

Utilisez secure_stream_url pour votre stream de réception principal et secure_stream_secondary_urls pour votre stream de réception de sauvegarde. Vous pouvez à tout moment streamer les données de sauvegarde vers l’objet vidéo en ligne au cours de la diffusion.

Exemple de demande cURL

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

Exemple de réponse

{ "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" ] }

Activer le streaming de sauvegarde sur une vidéo en direct existante

Pour activer le streaming de sauvegarde sur un objet vidéo en direct n’ayant reçu aucune donnée de streaming, envoyez une requête POST à l’arête /input_streams de la vidéo en direct. Par exemple :

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

L’ID de la vidéo en direct est alors renvoyé :

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

Une fois le streaming activé, [les URL des streams principal et de sauvegarde] vous sont envoyées par l’objet vidéo en direct.

Exemple de demande cURL

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

Exemple de réponse

{ "id": "10215840463339953" }

Basculer manuellement d’un stream à un autre

Basculez manuellement d’un stream principal de vidéo en direct vers un stream de sauvegarde en envoyant une requête à :

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

La valeur {master-ingest-stream-id} est booléenne. 0 représente le stream de réception principal et 1 représente le stream de réception de sauvegarde.

Exemple de demande cURL

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

Obtenir les URL des streams principal et de sauvegarde

Lisez le champ ingest_streams d’une vidéo en direct pour obtenir ses URL de stream principal et de sauvegarde :

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

Vous recevrez alors l’état du stream de réception et les URL des streams principal et de sauvegarde (le cas échéant) sur la vidéo en direct :

{ "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" }

Exemple de demande cURL

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

Exemple de réponse

{ "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" }