Para transmitir un vídeo en directo, primero debes crear un objeto LiveVideo
. El objeto LiveVideo
representa la transmisión. Puedes manipular las propiedades del objeto para controlar la configuración de la transmisión. Tras la creación, la API devolverá el identificador del objeto LiveVideo
y una URL de transmisión, que puedes pasar al codificador y usar para transmitir datos al objeto LiveVideo
.
Para transmitir en un perfil de usuario, obtén un identificador de acceso de usuario con el permiso publish_video
y envía una solicitud a:
POST /{user-id}/live_videos?status=LIVE_NOW
Consulta la referencia del perímetro /live_videos
para ver los parámetros de cadena de consulta adicionales que puedes incluir para describir la transmisión, como un título y una descripción.
Tras completar la operación correctamente, la API creará un objeto LiveVideo
en el usuario y devolverá un elemento secure_stream_url
y el valor de id
del objeto LiveVideo
. La transmisión aparecerá en una publicación en el perfil del usuario cuando envíes datos a la URL de transmisión segura. Puedes consultar el objeto LiveVideo
para supervisar el estado de la transmisión y finalizarla.
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 un vídeo en directo en una página, obtén un identificador de acceso a la página perteneciente a un administrador de la página con los permisos pages_read_engagement
y pages_manage_posts
, y envía una solicitud a:
POST /{page-id}/live_videos?status=LIVE_NOW
Consulta la referencia del perímetro /live_videos
para ver los parámetros de cadena de consulta adicionales que puedes incluir para describir la transmisión, como un título y una descripción.
Tras completar la operación correctamente, la API creará un objeto LiveVideo
en la página y devolverá un elemento secure_stream_url
y el valor de id
del objeto LiveVideo
. La transmisión aparecerá en una publicación en la página cuando envíes datos a la URL de transmisión segura. Puedes consultar el objeto LiveVideo
para supervisar el estado de la transmisión y finalizarla.
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 de transmitir un vídeo en directo en un grupo, el grupo debe instalar tu aplicación. Un administrador del grupo puede hacerlo en www.facebook.com. Para ello, debe visualizar el grupo, ir a Editar configuración del grupo > Aplicaciones > Añadir aplicaciones y añadir tu aplicación.
Para transmitir un vídeo en directo en un grupo que ha instalado tu aplicación, obtén un identificador de acceso de usuario perteneciente a un administrador del grupo con el permiso publish_video
y envía una solicitud a:
POST /{group-id}/live_videos?status=LIVE_NOW
Consulta la referencia del perímetro /live_videos
para ver los parámetros de cadena de consulta adicionales que puedes incluir para describir la transmisión, como un título y una descripción.
Tras completar la operación correctamente, la API creará un objeto LiveVideo
en el grupo y devolverá un elemento secure_stream_url
y el valor id
del objeto LiveVideo
. La transmisión aparecerá en una publicación en el grupo cuando envíes datos a la URL de transmisión segura. Puedes consultar el objeto LiveVideo
para supervisar el estado de la transmisión y finalizarla.
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..." }
Puedes leer un objeto LiveVideo
para obtener las URL de vista previa de la transmisión y los datos sobre el estado de la transmisión, como las velocidades de bits y las velocidades de fotogramas. Los datos de estado de la transmisión se actualizan cada 2 segundos. Por tanto, limita las consultas a no más de una vez cada 2 segundos. Un tiempo de espera de la transmisión se detectará y notificará después de 4 segundos si no se recibe ningún dato.
Para leer un objeto LiveVideo
, obtén un identificador de acceso a la página o de usuario adecuado con el permiso publish_video
y, a continuación, envía una consulta a:
GET /{live-video-id}?fields={fields}
Utiliza el parámetro {fields}
para especificar los campos del objeto LiveVideo que quieres que se devuelvan. Por ejemplo, a continuación tienes una solicitud para obtener el campo ingest_streams
en el objeto LiveVideo
, que incluye datos sobre el estado de la transmisión:
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}" }
Propiedades de la respuesta
Nombre del campo | Descripción |
---|---|
audio_bitrate | Bits por segundo de la transmisión de audio entrante. |
is_master | Es |
secure_stream_url | URL de ingesta RTMPS segura del identificador de vídeo en directo que se está consultando. |
stream_url | URL de ingesta RTMP del identificador de vídeo en directo que se está consultando. |
video_bitrate | Bits por segundo de la transmisión de vídeo entrante. |
video_framerate | Fotogramas por segundo de la transmisión de vídeo entrante. |
video_gop_size | Tamaño del GOP (grupo de imágenes) en milisegundos. |
video_height | Altura en píxeles del fotograma de vídeo entrante. |
video_width | Anchura en píxeles del fotograma de vídeo entrante. |
Para finalizar una transmisión, deja de transmitir datos de vídeo en directo del codificador a la URL de transmisión o envía una solicitud a:
POST /{live-video-id}?end_live_video=true
Esta operación establece el estado del objeto LiveVideo
en VOD
y lo guarda como un vídeo bajo demanda (VOD) para poder visualizarlo posteriormente.
Tras finalizar la operación correctamente, la API devolverá el identificador del objeto LiveVideo
.
curl -i -X POST \
"https://graph.facebook.com/{live-video-id}
?end_live_video=true
&access_token={access-token}"
{ "id": "10213570560993813" }
Puedes realizar una operación GET
en el identificador de LiveVideo para confirmar que su estado se ha establecido en VOD
:
GET /{live-video-id}?fields=status
{ "status": "VOD", // Broadcast ended, saved as VOD "id": "10213570560993813" }
Para eliminar una transmisión que ha finalizado y se ha guardado como un VOD, envía una solicitud a:
curl -i -X DELETE \
"https://graph.facebook.com/{live-video-id}?access_token={access-token}"
{ success: true }
Para obtener los datos del código de error asociados a una transmisión, envía una solicitud a:
GET /{live-video-id}?fields=errors
La API responderá con los campos error code
, type
, message
y 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 | Resumen del error | Descripción |
---|---|---|
COPYRIGHT__LIVE_COPYRIGHT_VIOLATION | Infracción de copyright en directo | El vídeo en directo se ha detenido porque podría incluir contenido de audio o visual que pertenece a otra página. |
VIDEO__CREATE_FAILED | Problema de subida | Ha habido un problema y no se pudo subir el vídeo. Vuelve a intentarlo. |
LIVE_VIDEO__DELETE_FAILED | El vídeo en directo no se eliminó | Ha habido un problema y no hemos podido eliminar el vídeo en directo. Vuelve a intentarlo. |
LIVE_VIDEO__EDIT_API_NOT_ALLOWED | No se puede editar en directo mediante una API de vídeo | No se puede editar un vídeo en directo mediante la API de edición de vídeo. Utiliza el identificador de vídeo en directo. |
LIVE_VIDEO__LIVE_STREAM_ERROR | Transmisión genérica | Se produjo un error durante la transmisión. |
LIVE_VIDEO__NOT_EXIST | El vídeo en directo no existe | El vídeo en directo al que intentas acceder ya no existe en el sistema. |
LIVE_VIDEO__PRIVACY_REQUIRED | Se necesita la configuración de privacidad | Antes de la publicación, es necesario definir la privacidad. |