Este documento foi atualizado.
A tradução para Português (Brasil) não foi concluída ainda.
Atualização em inglês: 21 de mai
Atualização em Português (Brasil): 14 de jul de 2023

Support for Live Video API for Facebook

FAQ

O software de streaming, ou software de codificação RTMP, pega a chave e a URL de stream RTMP e as envia para o Facebook. Não fornecemos o software de streaming. Muitos streams ao vivo podem usar o OBS (Open Broadcasting Software) ou o Player.me. Ambos oferecem versões gratuitas.

É possível começar a usar a Live API imediatamente. No entanto, se a intenção for criar um stream de qualidade de produção completa, com várias câmeras e gráficos, o processo pode levar de 1 a 2 semanas (ou mais), dependendo da análise do aplicativo.

Há um atraso de cerca de 4 a 5 segundos a partir do momento em que você faz a transmissão ao vivo até seu vídeo ser exibido no Facebook. Você saberá que está no ar ao ver o vídeo sendo reproduzido na sua página de teste (ou pública).

If you are having issues with your live streams, please refer to our guides to make sure that you are using our API correctly. We also recommend reviewing our video specifications to ensure that your settings are best suited for a quality live stream. If you believe you have run into a bug, you can send it directly to our Bug Tool and an engineer will get back to you.

Yes you can! The second stream will likely get fewer inferred notifications than the first. Please refer to our Best Practices documentation for more information on how notifications work.

Não necessariamente. Se você quiser fazer stream para duas (ou mais) páginas diferentes, existem codificadores e APIs disponíveis que podem tornar isso possível, como o Wowza e o Streamshark. Embora seja possível fazer stream para páginas diferentes a partir de um codificador, recomendamos fazer um streaming para uma página e compartilhar para as outras páginas. Assim, os comentários, as reações e as contagens de visualizadores ficarão consolidados.

Our default aspect ratio is 16x9, though we infer the aspect ratio from the stream. For complete specifications, see our reference.

Vídeos ao vivo podem ser incorporados com o parâmetro embeddable por meio da API de Vídeo ao vivo.

Envie uma solicitação POST /{live_video_id} e defina o parâmetro embeddable como true. Use uma Página ou Token de acesso do usuário com as mesmas permissões que são solicitadas durante a criação de um vídeo ao vivo.

curl -i -X POST \
 "https://graph.facebook.com/{your-live-video-id}
   ?embeddable=true&access_token={your-access-token}"
GraphRequest request = GraphRequest.newPostRequest(
  accessToken,
  "/{your-live-video-id}",
  new JSONObject("{}"),
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{your-live-video-id}"
           parameters:@{ @"embeddable": @"true",}
           HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{your-live-video-id}',
  'POST',
  {"embeddable":"true"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->post(
    '/{your-live-video-id}',
    array (
      'embeddable' => 'true'
    ),
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Para obter o HTML incorporado, envie uma solicitação GET /{live_video_id}?fields=embed_html. Use uma Página ou Token de acesso do usuário com as mesmas permissões que são solicitadas durante a criação de um vídeo ao vivo.

curl -i -X GET \
 "https://graph.facebook.com/{your-live_video_id}
   ?fields=embed_html
   &access_token={your-access-token}"
GraphRequest request = GraphRequest.newGraphPathRequest(
  accessToken,
  "/{your-live_video_id}",
  new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "embed_html");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{your-live_video_id}"
           parameters:@{ @"fields": @"embed_html",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{your-live_video_id}',
  'GET',
  {"fields":"embed_html"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{your-live_video_id}',
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Exemplo de resposta

{ "embed_html": "<iframe src=\"https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fyourpage%2Fvideos%2F{your-page-id}%2F&width=0\" width=\"0\" height=\"0\" style=\"border:none;overflow:hidden\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" allowFullScreen=\"true\"></iframe>", "id": "{your-live-video-id}" } 

Não, esse é o comportamento esperado. No momento, não oferecemos suporte a assistir vídeos ao vivo em web móvel até que sejam disponibilizados como VODs (vídeos sob demanda). No entanto, se quiser assistir no web móvel a um vídeo ao vivo que tenha sido incorporado a outro site, será feito o redirecionamento para que você assista no aplicativo do Facebook.

Existem algumas razões pelas quais isso pode ter acontecido. Veja alguns dos motivos mais comuns:

  1. Se houver música tocando no plano de fundo do seu vídeo ao vivo, ele pode ser retirado por violação de direitos autorais. Isso pode acontecer durante o vídeo ao vivo ou depois, quando o VOD reproduzir novamente.
  2. Você, ou outro autor da sua página, pode ter excluído o vídeo ao vivo. Se um vídeo ao vivo foi excluído manualmente, não é possível recuperá-lo.
  3. O vídeo pode ter sido sinalizado automaticamente por violação de IP. Se isso ocorrer, o Facebook enviará um email com um link para você analisar a remoção e reenviar o vídeo para revisão da nossa equipe de políticas.

Isso ocorre quando a transmissão não inicia o encerramento ou o processamento após sinalizar o fim do vídeo ao vivo. Certifique-se de ter enviado uma solicitação POST com o parâmetro end_live_video. Se isso ocorrer novamente, registre um erro na nossa ferramenta de erros e certifique-se de incluir o ID do seu vídeo.

A distorção do áudio pode ocorrer quando o Facebook recebe um stream de vídeo com áudio distorcido ou após o recebimento dos quadros, mas antes da recodificação para a transmissão. Uma possível razão para esse tipo de erro é que a taxa de bits usada é maior do que a taxa que a conexão entre o ponto de extremidade da transmissão e os servidores do Facebook pode manter. Se isso acontecer, ou se houver um pacote perdido, parte da faixa de vídeo ou áudio não será recebida corretamente e isso pode causar distorção no áudio.

Problemas de sincronização entre áudio e vídeo podem ocorrer quando uma transmissão ao vivo é entregue com largura de banda limitada ao cliente ou o cliente não tem largura de banda para visualizá-la ao vivo. Além disso, se o stream recebido pelo servidor do Facebook estiver dessincronizado, o vídeo ao vivo também ficará fora de sincronia. Lembre-se de verificar o hardware de gravação e codificação em busca de possíveis locais em que o áudio possa estar desalinhado com o vídeo.

A API de Vídeo ao vivo requer áudio. Se você tentar fazer stream apenas de vídeo, o stream é encerrado.

Seu feed ao vivo pode ser interrompido devido a uma falha no codificador ou conectividade fraca com a rede. Se isso acontecer, você tem de 2 a 3 minutos para se reconectar à URL de stream original gerada para sua publicação ao vivo. Caso contrário, será necessário gerar uma URL e uma chave de stream novas para continuar o stream ao vivo.

Yes, you can geo-gate (restrict who can see your video depending on the viewer's location). See Audience Targeting to learn how.

Yes, videos taken down for copyright violation can be restored. You should receive a notification that gives you the option to restore the video. However, if you do not take this action when you receive the notification, the video can no longer be restored.

Não. Infelizmente, vídeos ao vivo não podem ser impulsionados no momento.

Atualmente, não há ponto de extremidade para a criação de legendas. No entanto, é possível adicionar legendas às transmissões de LiveVideo após elas serem encerradas ou adicionar legendas ao seu stream de vídeo ao vivo à medida que ele é transmitido para nossos servidores, por meio do padrão de legendas CEA-608.

Para adicionar legendas a um LiveVideo que foi encerrado (por exemplo, com um status de VOD), consulte nosso tópico de ajuda “Como posso adicionar legendas ao vídeo da minha página?”. Para adicionar legendas usando o padrão CEA-608, consulte nosso guia de Legendas.

É contra a política de vídeo ao vivo do Facebook incluir anúncios de terceiros em streams ao vivo. Por exemplo, não inclua bumpers, pre-roll, mid-roll ou post-roll.

We encourage all live broadcasts to exclusively contain live content so as to preserve the integrity of the viewer's experience. However, there are unique cases in which cutting to a pre-recorded clip makes sense, similar to how a news show might show previously recorded content on live TV.

Yes, refer to our Crossposting guide and How do I crosspost another Page's video? Help Center topic to learn how. Comments and reactions are shown only in the original Page.

Para aparecer no mapa ao vivo, você precisa definir a localização do seu vídeo. Para isso, use o parâmetro place em uma solicitação POST /{live_video_id}.

Para redefinir uma chave persistente, acesse www.facebook.com/live/create, clique em Criar um stream ao vivo, marque a caixa de seleção Usar uma chave de stream persistente e clique no botão Redefinir.

Reporting Bugs

If you believe you may have found a bug in the Live API, please file a bug report in our bug tool and an engineer will take a look at it shortly. You can also search for existing bugs by API error codes, SDK methods, and more.

Report a Bug