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.
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.
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" ] }
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.
curl -i -X POST \ "https://graph.facebook.com/10215840463339953/input_streams &access_token=EAAI4b..."
{ "id": "10215840463339953" }
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.
curl -i -X POST \ "https://graph.facebook.com/10215840463339953 ?master_ingest_stream_id=1 &access_token=EAAI4b..."
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" }
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" }