Se actualizó este documento.
La traducción en español no está disponible todavía.
Actualización del documento en inglés: 21 de may.
Actualización del documento en español: 22 ago. 2022

Support for Live Video API for Facebook

FAQ

El software de streaming, o software de codificación RTMP, toma tu URL y tu clave de stream de RTMP y las envía a Facebook. No proporcionamos el software de streaming. Muchos streams en vivo pueden usar OBS (Open Broadcasting Software) o Player.me, que ofrecen versiones gratuitas.

Puedes comenzar a usar Live API de inmediato. Sin embargo, si deseas crear un stream de calidad de producción completa con varias cámaras y gráficos, se pueden necesitar entre 1 y 2 semanas, o más, en función del proceso de revisión de apps.

Hay un retraso de unos 4 o 5 segundos entre cuando inicias la transmisión en vivo y cuando tu video aparece en Facebook. Sabrás que comenzó cuando veas el video en tu página de prueba (o en tu página 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.

No necesariamente. Si deseas realizar stream a dos (o más) páginas distintas, hay codificadores y API que hacen que esto sea posible, como Wowza y Streamshark. Si bien se puede realizar stream a distintas páginas desde un mismo codificador, te recomendamos que el stream sea a una página y que lo compartas a las demás páginas, de manera que los comentarios, las reacciones y las cantidades de espectadores estén consolidadas.

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

Puedes insertar videos en vivo utilizando el parámetro embeddable a través de la API de video en vivo.

Envía una solicitud POST /{live_video_id} y configura el parámetro embeddable en true. Utiliza una página o un token de acceso de usuario con los mismos permisos que se solicitan cuando se crea un video en 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 obtener el HTML insertado, envía una solicitud GET /{live_video_id}?fields=embed_html. Utiliza una página o un token de acceso de usuario con los mismos permisos que se solicitan cuando se crea un video en 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();

Ejemplo de respuesta

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

No, es normal. Actualmente los videos en vivo solo se pueden mirar en la web móvil cuando pasan a ser videos a petición. Sin embargo, si quieres mirar un video en vivo en la web móvil y el video se insertó en otro sitio, se te redirigirá a la app de Facebook para reproducirlo.

Puede deberse a una serie de motivos. Los siguientes son los más comunes:

  1. Si en el video en vivo tenías música de fondo, tal vez se haya eliminado debido a una infracción contra los derechos de autor. Esto puede suceder durante la transmisión del video en vivo o después, durante la reproducción como video a petición.
  2. Tal vez eliminaste el video en vivo, o tal vez fue algún otro autor de tu página. Si un video en vivo se eliminó manualmente, no se puede recuperar.
  3. El video puede haberse marcado automáticamente por infracción contra la propiedad intelectual. En este caso, Facebook te enviará un mensaje de correo electrónico con un enlace para que revises el video eliminado y lo vuelvas a enviar a fin de que nuestro equipo de políticas lo revise.

Esto sucede cuando la transmisión no se comienza a procesar después señalizar la finalización del video en vivo. Asegúrate de haber enviado una solicitud POST con el parámetro end_live_video. Si vuelve a ocurrir lo mismo, registra un error en nuestra herramienta de depuración y asegúrate de incluir el identificador de tu video.

Este tipo de distorsión del audio puede ocurrir cuando Facebook recibe un stream de video con audio distorsionado o después de haber recibido los marcos, pero antes de volver a codificarlos para la transmisión. Un motivo posible de este tipo de error es que la velocidad de bits utilizada es mayor de lo que admite la conexión entre el extremo de transmisión y los servidores de Facebook. En este caso, o si hay pérdida de paquetes, parte de la pista de audio o el video no se recibirá correctamente, lo cual ocasionará la distorsión del audio.

Puede haber problemas de sincronización entre el audio y el video cuando una transmisión en vivo se entrega al cliente con ancho de banda limitado o cuando el cliente no tiene suficiente ancho de banda para verla en vivo. Además, si el stream que recibe el servidor de Facebook no está sincronizado, el video en vivo tampoco lo estará. Asegúrate de comprobar el hardware de grabación y codificación para detectar lugares potenciales donde el audio podría estar mal alineado con el video.

La API de video en vivo requiere audio. Si intentas realizar un stream de video solamente, la transmisión finaliza.

Tu transmisión en vivo puede interrumpirse debido a un error del codificador o si la conectividad de red es baja. Si esto sucede, tienes entre 2 y 3 minutos para reestablecer la conexión en la URL del stream original que generaste para la publicación en vivo. De lo contrario, deberás generar una nueva URL y clave de stream para continuar el stream en 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.

No. Lamentablemente, los videos en vivo no se pueden promocionar por el momento.

Actualmente no hay ningún extremo para crear subtítulos opcionales. Sin embargo, puedes agregarlos a transmisiones de LiveVideo una vez que finaliza la transmisión. También puedes agregarlos a los streams de video en vivo mientras se transmiten a nuestros servidores; para ello, debes usar el estándar CEA-608 de subtítulos opcionales.

Para agregar subtítulos a una transmisión ya finalizada de LiveVideo (es decir, ya es un video a petición), consulta el tema de ayuda "¿Cómo agrego subtítulos al video de mi página?". Para agregar subtítulos con el estándar CEA-608, consulta nuestra Guía de subtítulos opcionales.

Es contrario a la política de videos en vivo de Facebook incluir anuncios de terceros durante los streams en vivo. Por ejemplo, no incluyas anuncios antes del video, durante el video ni después del video, ni tampoco anuncios bumper.

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 en el mapa de Facebook Live, debes configurar la ubicación de tu video mediante el parámetro place en una solicitud POST /{live_video_id}.

Para restablecer una clave permanente, ve a www.facebook.com/live/create, haz clic en Crear stream en vivo, marca la casilla Usar una clave de stream permanente y haz clic en el botón Restablecer.

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