Introducción

En este tutorial se describe cómo usar la API de vídeo para crear un vídeo en una página. Se presupone que sabes realizar solicitudes cURL básicas con una herramienta de línea de comandos como Terminal o una aplicación como Postman y que tienes conocimientos básicos del explorador de la API Graph.

Antes de empezar

Necesitarás lo siguiente:

  • Una aplicación de Facebook existente. En caso de no tener una, ve a Facebook para desarrolladores, haz clic en Mis aplicaciones y créala.
  • Un vídeo de entre 10 y 20 MB dividido en fragmentos de 5 MB cada uno, con todos los fragmentos en un único directorio.
  • Una página en la que puedas realizar tareasCREATE_CONTENT.
  • Acceso a una herramienta de línea de comandos (p. ej., Terminal) o una aplicación (p. ej., Postman) que pueda realizar solicitudes cURL.

Paso 1: Obtener un identificador de acceso de usuario

En general, tienes que implementar el inicio de sesión con Facebook en la aplicación y usarlo para obtener los identificadores de acceso de los usuarios de la aplicación. Sin embargo, para este tutorial, puedes usar el explorador de la API Graph, que ya ha implementado el inicio de sesión con Facebook y te facilita generar identificadores para cualquiera de tus aplicaciones.

  1. Carga el explorador de la API Graph y selecciona tu aplicación en el menú desplegable de la aplicación de Facebook.

  2. En el menú desplegable Usuario o página, selecciona Obtener identificador de acceso de usuario, continúa como tú mismo y autentícate. Si estás reutilizando una aplicación antigua, es posible que ya estés autenticado.

  3. En la sección Permisos, usa el campo de búsqueda Añadir permiso para buscar y seleccionar los siguientes permisos: pages_manage_engagement y pages_read_user_content.
  4. Haz clic en Generar identificador de acceso.
  5. En la ventana modal que aparece, continúa como tú mismo y elige la página donde quieres subir el vídeo.
  6. Haz clic en Siguiente para continuar por el resto de pantallas hasta ignorar la ventana modal. De este modo, la aplicación obtendrá los permisos que has seleccionado y también generará un identificador de acceso de usuario.
  7. Opcional. Haz clic en el icono de información azul para verificar que has concedido a tu aplicación los permisos (ámbitos) correctos.

Paso 2: Obtener el identificador de la página y su identificador

  1. Con el explorador de la API Graph, envía una solicitud al perímetro GET /me/accounts. Esta solicitud consulta tu usuario y devuelve las páginas para las que has concedido acceso a la aplicación en el paso anterior.
  2. Identifica tu página en la respuesta y copia su identificador (id) y el identificador de acceso a la página (access_token).
  3. {
      "data": [
        {
          "access_token": "EBACf...",  //Copy your Page Access Token
          "category": "Media",
          "category_list": [
            {
              "id": "163003840417682",
              "name": "Media"
            }
          ],
          "name": "Metricsaurus",
          "id": "1755847768034402",  //Copy your Page ID
          "tasks": [
            "ANALYZE",
            "ADVERTISE",
            "MODERATE",
            "CREATE_CONTENT",
            "MANAGE"
          ]
        }
      ],
      "paging": {
        "cursors": {
          "before": "MTc1NTg0Nzc2ODAzNDQwMgZDZD",
          "after": "MTc1NTg0Nzc2ODAzNDQwMgZDZD"
        }
      }
    }
    

Paso 3: Crear una sesión de vídeo

  1. En tu herramienta de línea de comandos, navega a la carpeta que contiene los fragmentos de vídeo y, después, envía una solicitud cURL al perímetro POST /page-id/videos en el host graph-video.facebook.com. Si utilizas Postman, incluye las claves y los valores del parámetro de consulta en el cuerpo de la solicitud como datos del formulario.

  2. Ejemplo de solicitud
    curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=start" \
      -F "file_size=77188035"
    
  3. Sustituye el identificador de la página (1755847768034402) en la ruta de la solicitud por el identificador de tu página, establece access_token en el identificador de acceso a la página que acabas de copiar y file_size en el tamaño total del archivo de vídeo en bytes.

  4. La API devuelve una sesión de vídeo:
    {
      "video_id": "225467151853466",
      "start_offset": "0",
      "end_offset": "1048576",
      "upload_session_id": "225467155186799"
    }
    
  5. Copia todos los valores devueltos excepto end_offset.

Paso 4: Subir el primer fragmento de vídeo

Envía otra solicitud al perímetro POST /{page-id}/videos e incluye tu upload_session_id y el nombre del primer fragmento de tu vídeo.

Ejemplo de solicitud

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

Si utilizas cURL, incluye el símbolo @ antes del nombre del archivo.

Si utilizas Postman, omite el símbolo @, establece video_file_chunk en Archivo (pasa el cursor sobre la fila para activar el menú desplegable) y selecciona manualmente el archivo del primer fragmento.

La API responderá con un nuevo valor de start_offset. Guarda el nuevo valor.

{
  "start_offset": "10485760",
  "end_offset": "15728640"
}

Paso 5: Subir el resto de fragmentos de vídeo

  1. Realiza la misma solicitud, pero establece start_offset en el nuevo valor de start_offset devuelto en la respuesta anterior y video_file_chunk en el nombre del fragmento de vídeo siguiente de la secuencia.
  2. curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=transfer" \
      -F "start_offset=10485760" \
      -F "upload_session_id=225467155186799" \
      -F "video_file_chunk=@xab"
    
    La API volverá a responder con un nuevo valor de start_offset, que puedes usar para subir el fragmento siguiente de la secuencia.
    {
      "start_offset":"15728640",
      "end_offset":"20971520"
    }
    
  3. Repite este paso hasta haber subido todos los fragmentos de vídeo en el orden correcto. El programa que has utilizado para dividir el archivo de vídeo en fragmentos debería denominar los fragmentos en orden secuencial.

Paso 6: Finalizar la sesión de subida

Cuando hayas subido el último fragmento, envía una solicitud final al mismo extremo y establece upload_phase para finalizar la sesión de subida.

Ejemplo de solicitud

curl -X POST \
  "https://graph-video.facebook.com/1755847768034402/videos"  \
  -F "access_token=EBACf..." \
  -F "upload_phase=finish" \
  -F "upload_session_id=225467155186799"

Si la operación se realiza correctamente, la API finalizará la sesión de subida y responderá con true.

{
  "success": true
}

Nosotros montaremos el vídeo y lo codificaremos. El proceso de codificación puede tardar varios minutos en completarse, en función del tamaño total del archivo de vídeo.