Publicación

La API de vídeo permite publicar vídeos en páginas y grupos. La publicación en usuarios no se admite.

También se pueden publicar reels en páginas. Para obtener más información, consulta API de publicación de reels.

El proceso de publicación de vídeos implica la elección de un protocolo de subida y el envío de una solicitud POST al perímetro /videos de la página o el grupo segmentado. La API admite los protocolos de subida reanudable y no reanudable. Te recomendamos que utilices el protocolo de subida reanudable, ya que es más versátil y puede controlar sin problemas las interrupciones de la conexión.

Ten en cuenta que todos los ejemplos de este documento utilizan un nodo de página, pero se aplica lo mismo a los nodos de grupo.

Requisitos

Todas las acciones de publicación requieren un identificador de acceso y permisos adecuados para el nodo que estás segmentando. Mientras realizas pruebas, puedes generar identificadores fácilmente y conceder a tu aplicación permisos mediante el explorador de la API Graph. Consulta nuestra guía de introducción para ver cómo hacerlo. Cuando tu aplicación esté preparada para producción, probablemente tendrás que implementar el inicio de sesión con Facebook para obtener los identificadores y los permisos de los usuarios de la aplicación.

Publicación en páginas

El usuario de la aplicación debe ser un administrador de la página que estás segmentando. Necesitarás el identificador de acceso a la página del usuario de la aplicación, que deberá conceder a tu aplicación los permisos pages_show_list, pages_read_engagement y pages_manage_posts.

Publicación en grupos

El usuario de la aplicación debe ser un administrador del grupo que estás segmentando. Necesitarás el identificador de acceso del usuario de la aplicación, que deberá conceder a tu aplicación el permiso publish_to_groups.

Subida reanudable

El protocolo de subida reanudable es el protocolo de publicación preferido, ya que permite dividir vídeos de gran tamaño en fragmentos más pequeños para evitar que se agote el tiempo de espera. Resulta especialmente útil para vídeos de gran tamaño, en los que es más probable experimentar un error de conexión. Si experimentas un error de conexión al subir un vídeo de gran tamaño, normalmente tienes que volver a subir todo el vídeo. No obstante, con el protocolo de subida reanudable, solo tienes que volver a subir el fragmento afectado, no aquellos fragmentos que ya se han subido.

Puedes publicar un vídeo en una página o en un grupo. La publicación implica los pasos siguientes:

  1. Inicializar una sesión de subida en la página o el grupo.
  2. Subir fragmentos individuales en el orden en que deben montarse.
  3. Finalizar la sesión de subida.

Una vez finalizada la sesión de subida, volveremos a montar el vídeo, lo codificaremos y lo publicaremos.

Limitaciones

Los vídeos se limitan a 10 GB y 4 horas.

Paso 1: Inicializar una sesión de subida

Para inicializar la sesión de subida de un vídeo, envía una solicitud POST al extremo de vídeos de página:

POST /v19.0/{page-id}/videos
  ?upload_phase=start
  &access_token={access-token}
  &file_size={file-size}

Incluye los siguientes parámetros:

Nombre del parámetroValor

upload_phase

start

access_token

Identificador de acceso a la página si realizas la publicación en una página, o identificador de acceso de usuario si la realizas en un grupo.

file_size

Tamaño total del archivo de vídeo en bytes.

Ejemplo de solicitud

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=start" \
  -F "access_token=EAADI..." \
  -F "file_size=22420886"

Ejemplo de respuesta

{
  "video_id":"2918040888250909",          //Capture this value (optional)
  "start_offset":"0",                     //Capture this value
  "end_offset":"1048576",
  "upload_session_id":"2918040901584241"  //Capture this value
}

Captura los valores de start_offset y upload_session_id que ha devuelto la API. Los usarás en el paso siguiente para subir el primer fragmento de vídeo. Es posible que también quieras capturar el valor de video_id. No lo necesitas para la publicación, pero será el identificador del vídeo publicado final.

Paso 2: Subir fragmentos individualmente

Sube cada uno de los fragmentos del vídeo en el orden en que deben montarse. Para ello, envía solicitudes POST consecutivas al extremo de vídeos de página:

POST /v19.0/{page-id}/videos
  ?upload_phase=transfer
  &access_token={access-token}
  &upload_session_id={upload-session-id}
  &start_offset={start-offset}
  &video_file_chunk={video-file-chunk}

Incluye los datos siguientes como multipart/form-data en el cuerpo de la solicitud:

Nombre de datos del formularioValor

upload_phase

transfer

access_token

Identificador de acceso a la página si realizas la publicación en una página, o identificador de acceso de usuario si la realizas en un grupo.

upload_session_id

Identificador de la sesión de subida.

start_offset

Valor de start_offset devuelto en la respuesta anterior.

video_file_chunk

Nombre del fragmento de vídeo que se va a subir.

Cada vez que subas un fragmento correctamente, se devolverá un nuevo valor de start_offset. Repite esta solicitud con el valor de start_offset recién devuelto y el nombre del siguiente fragmento de vídeo que se va a subir (asignado a video_file_chunk) y sigue el proceso gradualmente con todos los fragmentos de vídeo restantes.

Ejemplo de solicitud para el primer fragmento

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=0" \
  -F "video_file_chunk=@/Users/...xaa"

Ejemplo de respuesta

{
  "start_offset":"10485760",  //Value for second chunk
  "end_offset":"15728640"
}

Ejemplo de solicitud para el segundo fragmento

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=10485760" \
  -F "video_file_chunk=@/Users/...xab"

Ejemplo de respuesta

{
  "start_offset":"20971520",  //Value for third chunk
  "end_offset":"22420886"
}

Después de subir el último fragmento, la API debería responder con valores de start_offset y end_offset coincidentes, lo que indica que puedes finalizar la sesión de subida.

Ejemplo de respuesta final

{
  "start_offset":"22420886",  //When values match you can
  "end_offset":"22420886"     //end the upload session
}

Paso 3: Finalizar la sesión de subida

Cuando finalices la sesión de subida, volveremos a montar el vídeo completo, lo codificaremos y lo publicaremos en la página. Para finalizar la sesión de subida, envía una solicitud POST final al extremo de vídeos de página:

POST /v19.0/{page-id}/videos
  ?upload_phase=finish
  &access_token={access-token}
  &upload_session_id={upload-session-id}

Incluye los siguientes parámetros:

Nombre del parámetroValor

upload_phase

finish

access_token

Identificador de acceso a la página si realizas la publicación en una página, o identificador de acceso de usuario si la realizas en un grupo.

upload_session_id

Identificador de la sesión de subida.

También puedes incluir cualquier parámetro adicional que el extremo de vídeos de página admita, como title, description y thumb.

Ejemplo de solicitud

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"

Ejemplo de respuesta JSON

{
  "success":true
}

Si recibes esta respuesta, indica que hemos iniciado el montaje y la codificación del vídeo completo. Deberías poder ver el vídeo publicado en cuestión de minutos.

Subida no reanudable

Te recomendamos que subas los archivos con el protocolo de subida reanudable, porque permite controlar las interrupciones de la conexión de manera más eficiente y admite archivos de mayor tamaño. No obstante, si prefieres subir los archivos mediante el protocolo de subida no reanudable, puedes enviar una solicitud POST al perímetro de vídeos de página e incluir el parámetro source (en el caso de archivos de vídeo locales) o el parámetro file_url (en el caso de vídeos alojados en un servidor público) en el cuerpo de la solicitud como multipart/form-data. También puedes incluir cualquier parámetro adicional que el extremo de vídeos de página admita, como title, description y thumb.

Limitaciones

Los vídeos se limitan a 1 GB y 20 minutos. Si tu archivo de vídeo es más grande, divídelo en fragmentos y publícalo con el protocolo de subida reanudable en su lugar.

Ejemplo de solicitud de archivo local

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"

Ejemplo de solicitud de archivo alojado

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "file_url=https://socialsizz.../incredible.mov"

Si la operación se realiza correctamente, la API responderá con el identificador del vídeo publicado.

Ejemplo de respuesta

{
  "id":"287788272232962"  //ID of the published Video
}

Miniaturas de vídeo

Generamos imágenes en miniatura automáticamente con imágenes fijas de los vídeos publicados. Las miniaturas generadas se pueden realzar con mejoras de brillo, color y contraste. Si prefieres proporcionar tu propia imagen en miniatura, incluye el campo thumb con el protocolo reanudable o el no reanudable. Si utilizas el protocolo reanudable, incluye el campo thumb durante el Paso 3: Finalizar la sesión de subida. Las imágenes en miniatura que proporciones no se modificarán.

Requisitos de las imágenes en miniatura

Formato: BMP, GIF, JPEG, PNG o TIFF.
Tamaño de archivo: 10 MB o menos.

No existen requisitos en cuanto a la dimensión de las imágenes, pero deben tener la misma relación de aspecto que el vídeo.

Ejemplo de solicitud de subida reanudable con miniatura

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"
  -F "thumb=@/Users/...thumbnail_image.png"

Ejemplo de respuesta JSON

{
  "success":true
}

Ejemplo de solicitud de subida no reanudable con miniatura

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"
  -F "thumb=@/Users/...thumbnail_image.png"

Ejemplo de respuesta

{
  "id":"287788272232962"
}