Este documento foi atualizado.
A tradução para Português (Brasil) não foi concluída ainda.
Atualização em inglês: 5 de out de 2020

Streams de backup

Você pode fazer um streaming dos dados de backup para uma transmissão de vídeo ao vivo. Caso ocorram falhas no seu stream primário, alternaremos automaticamente para o stream de backup. Dessa forma, a transmissão do vídeo ao vivo pode continuar sem interrupções. O stream de backup continuará sendo usado na transmissão, a menos que você retorne manualmente para o stream primário. O stream primário também poderá ser retomado caso o stream de backup apresente erros.

Para usar um stream de backup com uma transmissão de vídeo ao vivo, você deve ativar o streaming de backup ao criar o objeto LiveVideo da transmissão ou ativar o recurso no objeto LiveVideo antes de receber os dados do streaming.

Ativar o streaming de backup na criação do LiveVideo

Para ativar o streaming de backup ao criar seu objeto LiveVideo da transmissão, inclua o parâmetro de cadeia de caracteres de consulta enable_backup_ingest=true na sua consulta.

Por exemplo, para criar um LiveVideo com um streaming de backup ativado em um usuário, use este comando:

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

Isso retornará duas URLs, uma para o stream primário e outra para o de backup (secundário):

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

Use secure_stream_url para o stream de ingestão primário e secure_stream_secondary_urls para o stream de ingestão de backup. É possível fazer o streaming dos dados de backup para seu objeto LiveVideo a qualquer momento durante a transmissão.

Exemplo de solicitação de cURL

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

Exemplo de resposta

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

Ativar o streaming de backup em um LiveVideo existente

Você pode ativar o streaming de backup em um LiveVideo, desde que o objeto não tenha recebido dados do streaming de vídeo ao vivo, enviando uma solicitação POST para a borda /input_streams do LiveVideo. Por exemplo:

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

Isso retornará o ID do LiveVideo:

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

Após a ativação, você pode [obter as URLs dos streams primário e de backup] a partir do objeto LiveVideo.

Exemplo de solicitação de cURL

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

Exemplo de resposta

{ "id": "10215840463339953" }

Alternar streams manualmente

Se você quiser alternar manualmente entre um stream primário e um de backup do LiveVideo, envie uma solicitação para:

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

O valor {master-ingest-stream-id} é booliano. 0 representa o stream de ingestão primário, e 1 representa o stream de ingestão de backup.

Exemplo de solicitação de cURL

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

Obter URLS dos streams primário e de backup

Você pode ler um campo ingest_streams do LiveVideo para obter as URLs dos streams primário e de backup.

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

Isso retornará a integridade do stream de ingestão e as URLs dos streams primário e de backup (se houver) no LiveVideo:

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

Exemplo de solicitação de cURL

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

Exemplo de resposta

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