Para transmitir un video en vivo, primero debes crear un objeto LiveVideo
. El objeto LiveVideo
representa la transmisión, y puedes manipular las propiedades del objeto a fin de controlar la configuración de la transmisión. Una vez creado, la API devolverá el identificador del objeto LiveVideo
y una URL del stream, que puedes pasar a tu codificador y utilizar para hacer stream de datos al objeto LiveVideo
.
Para transmitir en un perfil de usuario, obtén un token 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 parámetros de cadena de consulta adicionales que puedes incluir para describir la transmisión, como un título y una descripción.
En caso de éxito, la API creará un objeto LiveVideo
en el usuario y devolverá una secure_stream_url
y el id
del objeto LiveVideo
. La transmisión aparecerá en una publicación en el perfil del usuario apenas envíes datos a la URL segura del stream Puedes consultar el objeto LiveVideo
a fin de controlar el estado de la transmisión y finalizar la transmisión.
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 video en vivo en una página, obtén un token de acceso a la página del administrador de una página con los permisos pages_read_engagement
y pages_manage_posts
y, luego, envía una solicitud a:
POST /{page-id}/live_videos?status=LIVE_NOW
Consulta la referencia del perímetro /live_videos
para ver parámetros de cadena de consulta adicionales que puedes incluir para describir la transmisión, como un título y una descripción.
En caso de éxito, la API creará un objeto LiveVideo
en la página y devolverá una secure_stream_url
y el id
del objeto LiveVideo
. La transmisión aparecerá en una publicación en la página apenas envíes datos a la URL segura del stream. Puedes consultar el objeto LiveVideo
a fin de controlar el estado de la transmisión y finalizar la transmisión.
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..." }
Para poder transmitir un video en vivo en un grupo, el grupo debe instalar tu app. El administrador del grupo puede hacer esto en www.facebook.com visitando el grupo, yendo a Editar la configuración del grupo > Apps > Agregar apps, y agregando tu app.
Para transmitir un video en vivo en un grupo que instaló tu app, obtén un token de acceso de usuario de un administrador del grupo con el permiso publish_video
y, luego, envía una solicitud a:
POST /{group-id}/live_videos?status=LIVE_NOW
Consulta la referencia del perímetro /live_videos
para ver parámetros de cadena de consulta adicionales que puedes incluir para describir la transmisión, como un título y una descripción.
En caso de éxito, la API creará un objeto LiveVideo
en el grupo y devolverá una secure_stream_url
y el id
del objeto LiveVideo
. La transmisión aparecerá en una publicación en el grupo apenas envíes datos a la URL segura del stream. Puedes consultar el objeto LiveVideo
a fin de controlar el estado de la transmisión y finalizar la transmisión.
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
a fin de obtener las URL de la vista previa del stream de transmisión y datos sobre el estado del stream, como la velocidad de los bits y la velocidad de los fotogramas. Los datos del estado del stream se actualizan cada dos segundos, de modo que no realices más de una consulta cada dos segundos. Se detectará e informará un tiempo de espera del stream después de cuatro segundos en que no se reciban datos.
Para leer un objeto LiveVideo
, obtén un token de acceso de usuario o página adecuado con el permiso publish_video
y, luego, envía una consulta a:
GET /{live-video-id}?fields={fields}
Utiliza el parámetro {fields}
para especificar los campos del objeto de video en vivo que quieres que se devuelvan. Por ejemplo, esta es una solicitud para obtener ingest_streams
del objeto LiveVideo
, que incluye datos sobre el estado del 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}" }
Propiedades de la respuesta
Nombre del campo | Descripción |
---|---|
audio_bitrate | Bits por segundo del stream de audio entrante. |
is_master |
|
secure_stream_url | La URL RTMPS de ingesta segura del identificador del video en vivo que se consulta. |
stream_url | La URL RTMP de ingesta del identificador del video en vivo que se consulta. |
video_bitrate | Bits por segundo del stream de video entrante. |
video_framerate | Fotogramas por segundo del stream de video entrante. |
video_gop_size | Tamaño GOP (grupo de imágenes) en milisegundos. |
video_height | Altura en píxeles del fotograma del video entrante. |
video_width | Ancho en píxeles del fotograma del video entrante. |
Para finalizar una transmisión, detén el streaming de datos de video en vivo del codificador a la URL del stream o envía una solicitud a:
POST /{live-video-id}?end_live_video=true
Esto configura el estado del objeto LiveVideo
en VOD
y lo guarda como un video a petición (VOD) para que se pueda ver más tarde.
En caso de éxito, 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 del video en vivo a fin de confirmar que su estado se configuró en VOD
:
GET /{live-video-id}?fields=status
{ "status": "VOD", // Broadcast ended, saved as VOD "id": "10213570560993813" }
Para eliminar una transmisión que terminó y se guardó 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 datos de un código de error asociados con una transmisión, envía una solicitud a:
GET /{live-video-id}?fields=errors
La API responderá con 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 de errores | Descripción |
---|---|---|
COPYRIGHT__LIVE_COPYRIGHT_VIOLATION | Infracción de derechos de autor en el video en vivo | Tu video en vivo se detuvo porque puede incluir contenido de audio o video que pertenece a otra página. |
VIDEO__CREATE_FAILED | Problema con la subida | Se produjo un problema y tu video no se subió. Vuelve a intentarlo. |
LIVE_VIDEO__DELETE_FAILED | El video en vivo no se eliminó | Se produjo un problema y no pudimos eliminar tu video en vivo. Vuelve a intentarlo. |
LIVE_VIDEO__EDIT_API_NOT_ALLOWED | No se puede editar con la API de video en vivo mientras se transmite en vivo | No se puede editar un video en vivo utilizando la API de edición de video. Usa el identificador del video en vivo. |
LIVE_VIDEO__LIVE_STREAM_ERROR | Stream genérico | Se produjo un error durante el stream |
LIVE_VIDEO__NOT_EXIST | El video en vivo no existe | El video en vivo al que intentas acceder ya no existe en el sistema. |
LIVE_VIDEO__PRIVACY_REQUIRED | Se requiere configuración de privacidad | Debes configurar parámetros de privacidad antes de transmitir en vivo. |