Para transmitir um vídeo ao vivo, você primeiro precisa criar um objeto LiveVideo
. O objeto LiveVideo
representa a transmissão. É possível gerenciar as propriedades do objeto para controlar as configurações da transmissão. Após a criação, a API retornará o ID do objeto LiveVideo
e uma URL de stream, que pode ser enviada ao codificador e usada para fazer stream de dados ao objeto LiveVideo
.
Para transmitir em um perfil de Usuário, obtenha um token de acesso do Usuário com a permissão publish_video
e envie uma solicitação para:
POST /{user-id}/live_videos?status=LIVE_NOW
Consulte a referência da borda /live_videos
para ver outros parâmetros de cadeia de caracteres de consulta que você pode incluir para descrever a transmissão, como o título e a descrição.
Se o processo for concluído, a API criará um objeto LiveVideo
no usuário e retornará um secure_stream_url
e o id
do objeto LiveVideo
. A transmissão será exibida em uma publicação no perfil do usuário assim que você enviar dados para a URL de stream segura. É possível consultar o objeto LiveVideo
para monitorar a integridade e finalizar a transmissão.
curl -i -X POST \
"https://graph.facebook.com/{user-id}/live_videos
?status=LIVE_NOW
&title=Today%27s%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20today.
&access_token={access-token}"
{ "id": "1953020644813104", "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
Para transmitir um vídeo ao vivo em uma Página, obtenha um token de acesso à Página de um administrador dela com as permissões pages_read_engagement
e pages_manage_posts
. Em seguida, envie uma solicitação para:
POST /{page-id}/live_videos?status=LIVE_NOW
Consulte a referência da borda /live_videos
para ver outros parâmetros de cadeia de caracteres de consulta que você pode incluir para descrever a transmissão, como o título e a descrição.
Se o processo for concluído, a API criará um objeto LiveVideo
na Página e retornará um secure_stream_url
e o id
do objeto LiveVideo
. A transmissão será exibida em uma publicação na Página assim que você enviar dados para a URL de stream segura. É possível consultar o objeto LiveVideo
para monitorar a integridade e finalizar a transmissão.
curl -i -X POST \
"https://graph.facebook.com/{page-id}/live_videos
?status=LIVE_NOW
&title=Today%27s%20Page%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20the%20Page%20for%20today
&access_token=EAAC..."
{ "id": "1953020644813108", "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
Antes que você possa transmitir um vídeo ao vivo em um grupo, o grupo precisa instalar seu aplicativo. Um admin pode fazer isso em www.facebook.com. Para isso, basta visualizar o grupo, acessar Editar configurações do grupo > Aplicativos > Adicionar aplicativos e adicionar o aplicativo.
Para transmitir um vídeo ao vivo em um grupo que tenha instalado seu aplicativo, obtenha um token de acesso do usuário de um administrador com a permissão publish_video
e envie uma solicitação para:
POST /{group-id}/live_videos?status=LIVE_NOW
Consulte a referência da borda /live_videos
para ver outros parâmetros de cadeia de caracteres de consulta que você pode incluir para descrever a transmissão, como o título e a descrição.
Se o processo for concluído, a API criará um objeto LiveVideo
no grupo e retornará um secure_stream_url
e o id
do objeto LiveVideo
. A transmissão será exibida em uma publicação no grupo assim que você enviar dados para a URL de stream segura. É possível consultar o objeto LiveVideo
para monitorar a integridade e finalizar a transmissão.
curl -i -X POST \
"https://graph.facebook.com/{group-id}/live_videos
?status=LIVE_NOW
&title=Today%27s%20Group%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20the%20group%20for%20today
&access_token={access-token}"
{ "id": "1953020644813108", "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
É possível ler um objeto LiveVideo
para obter as URLs de prévia do stream de transmissão e dados de integridade de streaming, como a taxa de bits e de quadros. Os dados de integridade do stream são atualizados a cada 2 segundos. Por isso, não exceda essa frequência ao fazer consultas. Um tempo limite de stream será detectado e registrado após 4 segundos sem recebimento de dados.
Para ler um objeto LiveVideo
, obtenha um token de acesso adequado de Usuário ou Página com a permissão publish_video
e envie uma consulta para:
GET /{live-video-id}?fields={fields}
Use o parâmetro {fields}
para especificar os campos do objeto LiveVideo que você quer retornar. Por exemplo, veja uma solicitação para receber o ingest_streams
no objeto LiveVideo
, que inclui dados sobre a integridade do stream:
curl -i -X GET \
"https://graph.facebook.com/{live-video-id}
?fields=ingest_streams
&access_token={access-token}"
{ "ingest_streams": [ { "stream_id": "0", "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url": "rtmps://rtmp-api.facebook...", "is_master": true, "stream_health": { "video_bitrate": 4024116, "video_framerate": 60, "video_gop_size": 2000, "video_height": 720, "video_width": 1280, "audio_bitrate": 128745.4921875 }, "id": "1914910145231512" // Ingest stream ID } ], "id": "{your-live-video-id}" }
Propriedades de resposta
Nome do campo | Descrição |
---|---|
audio_bitrate | Bits por segundo do stream de áudio recebido. |
is_master |
|
secure_stream_url | A URL de ingestão RTMPS segura para o ID do vídeo ao vivo consultado. |
stream_url | A URL de ingestão RTMP para o ID do vídeo ao vivo consultado. |
video_bitrate | Bits por segundo do stream de vídeo recebido. |
video_framerate | Quadros por segundo do stream de vídeo recebido. |
video_gop_size | Tamanho do GOP (grupo de fotos) em milissegundos. |
video_height | Altura em pixels do quadro de vídeo recebido. |
video_width | Largura em pixels do quadro de vídeo recebido. |
Para finalizar uma transmissão, interrompa o streaming de dados do vídeo ao vivo do codificador para a URL de stream ou envie uma solicitação para:
POST /{live-video-id}?end_live_video=true
Isso define o status do objeto LiveVideo
como VOD
e o salva como um vídeo sob demanda (VOD) para que possa ser assistido mais tarde.
Se o processo for concluído, a API retornará o ID do objeto LiveVideo LiveVideo
.
curl -i -X POST \
"https://graph.facebook.com/{live-video-id}
?end_live_video=true
&access_token={access-token}"
{ "id": "10213570560993813" }
É possível realizar uma operação GET
no ID do LiveVideo para confirmar que o status dele foi definido como VOD
:
GET /{live-video-id}?fields=status
{ "status": "VOD", // Broadcast ended, saved as VOD "id": "10213570560993813" }
Para excluir uma transmissão que foi finalizada e salva como VOD, envie uma solicitação para:
curl -i -X DELETE \
"https://graph.facebook.com/{live-video-id}?access_token={access-token}"
{ success: true }
Para obter dados de código de erro associados à transmissão, envie uma solicitação para:
GET /{live-video-id}?fields=errors
A API responderá com o error code
, o type
, a message
e um timestamp
.
curl -i -X GET \
"https://graph.facebook.com/{live-video-id}
?fields=errors
&access_token={access-token}"
{ "errors": { "data": [ { "error_code": 1969004, "error_type": "stream", "error_message": "Video signal lost", "creation_time": "2018-12-05T23:58:52+0000" }, { "error_code": 1969004, "error_type": "stream", "error_message": "Video signal lost", "creation_time": "2018-12-05T23:58:52+0000" }, { "error_code": 0, "error_type": "info", "error_message": "Live Service received the video signal", "creation_time": "2018-12-05T23:58:02+0000" }, { "error_code": 0, "error_type": "info", "error_message": "Live Service received the video signal", "creation_time": "2018-12-05T23:58:02+0000" } ] }, "id": "{your-live-video-id}" }
error_subcode | Resumo do erro | Descrição |
---|---|---|
COPYRIGHT__LIVE_COPYRIGHT_VIOLATION | Violação de direitos autorais ao vivo | Seu vídeo ao vivo foi interrompido porque ele pode conter conteúdo de áudio ou imagens de propriedade de uma Página diferente. |
VIDEO__CREATE_FAILED | Problema de carregamento | Ocorreu um problema, e seu vídeo não foi carregado. Tente novamente. |
LIVE_VIDEO__DELETE_FAILED | Vídeo ao vivo não excluído | Ocorreu um problema, e não foi possível excluir seu vídeo ao vivo. Tente novamente. |
LIVE_VIDEO__EDIT_API_NOT_ALLOWED | A edição por meio da API de Vídeo não é permitida durante transmissões ao vivo | Não é permitido editar um vídeo ao vivo usando a API de Edição de vídeo Use o ID de vídeo ao vivo. |
LIVE_VIDEO__LIVE_STREAM_ERROR | Stream genérico | Houve um erro durante o stream |
LIVE_VIDEO__NOT_EXIST | O vídeo ao vivo não existe | O vídeo ao vivo que você está tentando acessar não existe mais no sistema. |
LIVE_VIDEO__PRIVACY_REQUIRED | Configuração de privacidade obrigatória | Você precisa configurar uma privacidade antes de transmitir o conteúdo ao vivo. |