Archivado

La función de archivado de la Video API de Vonage te permite grabar, guardar y recuperar sesiones.

Este tema incluye las siguientes secciones:

Flujo de trabajo básico

Importante: Solo puedes archivar las sesiones que utilicen el OpenTok Media Router (sesiones con el modo multimedia enrutado).

Puedes crear un archivo de una sesión de OpenTok utilizando el API REST de OpenTok o uno de los SDK de servidor de OpenTok. Al crear un archivo, se inicia la grabación. Solo se puede crear un archivo de las sesiones en las que haya al menos un cliente conectado. (Un cliente debe empezar a publicar una transmisión en el plazo de un minuto; de lo contrario, el archivo se detiene.)

A medida que los clientes comienzan y dejan de publicar flujos, éstos se registran.

Importante: Se pueden grabar hasta 16 flujos de vídeo con archivado combinado, o 50 con archivado por flujos individuales. (Tanto los archivos combinados como los de flujos individuales pueden incluir hasta 50 flujos de audio). Véase Archivos de una sola fuente y archivos combinados. Una vez alcanzado este límite, si se publican flujos adicionales en la sesión, estos no se graban. El máximo registrado La duración de un archivo (el tiempo acumulado durante el que se publican las transmisiones en la sesión) es de 4 horas (14 400 segundos). Véase Duración del archivo Para más información.

No hay ningún límite en cuanto al número de archivos que puedes grabar. (Ten en cuenta, sin embargo, que sesiones archivadas automáticamente (Se iniciará una nueva grabación cada 4 horas hasta que la grabación se detenga.)

La API REST de OpenTok y los SDK de servidor de OpenTok incluyen métodos para lo siguiente:

  • Iniciar una grabación de archivo
  • Detener una grabación de archivo
  • Archivos de anuncios
  • Recuperación de información de archivo
  • Borrar un archivo

Cuando se detiene la grabación de un archivo, el servidor de OpenTok crea un archivo MP4 o (en el caso de los archivos de transmisiones individuales) un archivo ZIP. (Véase Archivos de una sola fuente y archivos combinados.)

Cuando se inicia y se detiene una grabación de archivo, se emiten eventos en los clientes. Por ejemplo, la biblioteca OpenTok.js incluye archiveStarted y archiveStopped enviados por el objeto Session.

Duración del archivo

El máximo registrado La duración de un archivo es de 4 horas (14 400 segundos). Esto registrado Duración se refiere al tiempo acumulado durante el cual se publican (y se graban) las transmisiones. Mientras se publican (y se graban) las transmisiones, el estado del archivo se establece en "started". (Véase Cambios en el estado del archivo).

Mientras un archivo está grabando sin que se haya publicado ninguna transmisión, el estado se establece en "paused".

El máximo total La duración de un archivo, incluidos los estados «iniciado» y «en pausa», es de 12 horas (43 200 segundos). Los archivos caducan automáticamente (y dejan de grabar) tras 1 hora (3 600 segundos) de inactividad (cuando ningún cliente está publicando transmisiones).

Notas:

  • Sesiones archivadas automáticamente dar lugar a una o varias grabaciones consecutivas, de una duración máxima de 4 horas cada una.
  • Los archivos en curso finalizan durante la rotación del servidor (a excepción de los archivos automáticos, que se reinician automáticamente cuando la sesión migra durante la rotación del servidor). Puede reiniciar archivos en respuesta a eventos de notificación de rotación del servidor. Véase Rotación de servidores y migración de sesiones.

Almacenamiento de archivos

Utiliza tu Account de la Video API para especificar un destino al que se subirán los archivos de archivo completados. Puede ser tu propio bucket de Amazon S3, un bucket de un proveedor de almacenamiento compatible con S3 distinto de Amazon o un contenedor de Windows Azure. En cuanto a los proveedores de almacenamiento compatibles con S3 distintos de Amazon S3, admitimos Cloudian y Google Cloud Storage (a los que se accede mediante la API de AWS S3). Otros servicios compatibles con S3 pueden presentar limitaciones en cuanto a funcionalidades. Consulte Uso del almacenamiento S3 con el sistema de archivo de OpenTok y Uso de un contenedor de Windows Azure con el sistema de archivado de OpenTok.

Cuando se haya completado el archivo (el estado del archivo se establece en "stopped"), intentaremos subir el archivo de copia de seguridad al destino especificado (como un bucket de S3 o un contenedor de Azure) durante un máximo de 72 horas tras la creación de la copia de seguridad (o al menos 6 horas si se ha habilitado el plan de contingencia), realizando varios intentos a través de una política de programación de subidas distribuida.

Si la carga en el destino especificado se realiza correctamente, el estado del archivo se establece en "uploaded".

Si falla la carga en el destino especificado (tras varios intentos) y está activada la opción de recurrir al almacenamiento de OpenTok, ponemos el archivo a disposición para su descarga desde la nube de OpenTok, y el estado del archivo se establece en "available". Una vez que el archivo esté disponible para su descarga desde la nube de OpenTok, dejaremos de intentar subirlo a la ubicación de destino que hayas especificado. Los archivos que se publican en la nube de OpenTok permanecen disponibles durante 72 horas a partir del momento de su creación. Para evitar que se utilice la nube de OpenTok como almacenamiento de reserva, desactívalo durante el S3 o Azure proceso de configuración.

Si falla la subida al destino especificado (tras los intentos de reintento) y la opción de recurrir al almacenamiento de OpenTok está desactivada, el estado del archivo se establece en "failed".

No podrás acceder al archivo hasta que se haya subido a la ubicación de destino que hayas especificado o esté disponible en el almacenamiento de OpenTok.

En el caso de los archivos almacenados en la nube de OpenTok, la URL de descarga se indica en el url propiedad del archivo cuando el estado del archivo está establecido en "available". Cada URL de descarga utilizada con la opción de almacenamiento de archivos de respaldo es una URL prefirmada que utiliza credenciales de seguridad para conceder un permiso de descarga del archivo con una duración limitada. Transcurridos 10 minutos, la URL prefirmada caducará y será necesario solicitar una nueva URL prefirmada mediante la API REST o un método del servidor para recuperar la URL de descarga. Por motivos de seguridad, la URL de descarga solo está disponible mediante llamadas a la API REST o a los métodos del SDK del servidor para recuperación de información de archivo o archivos de listados (para lo cual se necesitan las credenciales de tu Account).

Archivos sólo audio y sólo vídeo

Cuando creas un archivo utilizando el API REST de OpenTok o uno de los SDK de servidor de OpenTok, puedes especificar si el archivo grabará audio, vídeo o ambos. (Por defecto, se graban ambos.)

Archivos de una sola fuente y archivos combinados

El archivo de salida del archivo puede tener uno de los siguientes formatos:

  • Archivos compuestos: el archivo es un único fichero MP4 compuesto por todas las transmisiones. Esta es la configuración predeterminada. También se utiliza para las sesiones archivadas automáticamente (véase Sesiones archivadas automáticamente). El archivo MP4 utiliza vídeo H.264 y audio AAC (a 128 Kbps y una frecuencia de muestreo de 48 kHz).

    Puedes personalizar el diseño de un archivo compuesto, ajustando la disposición visual de los flujos y seleccionando qué flujos se muestran. Consulta Personalización del diseño de vídeo para composiciones archivos.

    Por defecto, los archivos compuestos tienen una resolución de 640 x 480 píxeles (SD horizontal). Para configurar un archivo compuesto con una resolución de 480 x 640 (SD vertical), 1280 x 720 (HD horizontal), 720 x 1280 (HD vertical), 1920 x 1080 (FHD horizontal) o 1080 x 1920 (FHD vertical), configura el resolution propiedad a "480x640", "1280x720", "1920x1080", "720x1280", o "1080x1920" al llamar a la iniciar archivo método de la API REST de OpenTok. Es posible que te interese utilizar una relación de aspecto vertical al grabar archivos que incluyan transmisiones de vídeo procedentes de dispositivos móviles (que suelen utilizar la relación de aspecto vertical).

    Puedes establecer la tasa de bits máxima de vídeo de un archivo compuesto para controlar el tamaño del mismo. Configura la opción «maxBitrate» al llamar a la función iniciar archivo método. Especifique un bitrate, en bits por segundo, entre 100.000 y 6.000.000. Este ajuste sólo se aplica a la vídeo bitrate del archivo. Si el archivo de salida tiene audio, esos bits se excluirán del límite. Esta opción sólo está disponible para archivos compuestos (no para archivos de flujos individuales). Cuando se establece la tasa de bits máxima, el archivo utiliza una tasa de bits constante.

    Puedes configurar el parámetro de cuantificación (QP) de un archivo compuesto para ajustar el equilibrio entre la calidad del vídeo y el tamaño del archivo. Configura el quantizationParameter al llamar a la función iniciar archivo método. Al establecer el parámetro de cuantificación, el archivo utiliza una tasa de bits variable y una cuantificación de compresión constante, lo que da como resultado un nivel de calidad uniforme entre los cambios de escena. Los valores válidos oscilan entre 15 y 40, y los valores comprendidos entre 20 y 30 producen resultados razonables sin una gran diferencia perceptible en la calidad. Los valores de QP más bajos producen una cuantización de compresión de vídeo más fina, lo que se traduce en una mayor calidad de vídeo (conservando más detalles) y un tamaño de archivo mayor. Los valores de QP más altos producen una cuantización de compresión de vídeo más gruesa, lo que reduce la calidad de vídeo y da lugar a un tamaño de archivo menor. No se pueden establecer a la vez el quantizationParameter propiedad y el maxBitrate propiedad: si lo haces, se produce un error. Nota: Actualmente, la configuración del parámetro de cuantificación solo está disponible en la API REST, pero no en los SDK de servidor de OpenTok.

    Por defecto, si no se configura quantizationParameter o maxBitrate Al crear un archivo compuesto, este utiliza una codificación de velocidad de bits variable con un parámetro de cuantificación que garantiza una alta calidad.

  • Archivos de transmisiones individuales: el archivo es un archivo ZIP que contiene varios archivos multimedia individuales para cada transmisión, así como un archivo de metadatos en formato JSON para la sincronización del vídeo. Puedes especificar este formato cuando utilices una de las SDK de servidor de OpenTok para iniciar el archivo. Este formato no está disponible para las sesiones archivadas automáticamente (véase Sesiones archivadas automáticamente).

Notas:

  • En un archivo compuesto, si se inicia el proceso de archivado y no se transmite ningún dato durante el tiempo que dura dicho proceso (no se publica ningún contenido de audio ni de vídeo), el tamaño del archivo resultante será de 0 bytes.
  • En un archivo compuesto, el vídeo de cada flujo incluido puede comenzar con un ligero retraso respecto al audio (y la imagen aparecerá en negro hasta que comience).

Trabajar con archivos de transmisiones individuales

El modo de archivo de flujos individuales está pensado para utilizarse con una herramienta de posprocesamiento, con el fin de crear contenido personalizado generado por tu aplicación. Hay algunas consideraciones que los desarrolladores deben tener en cuenta a la hora de decidir si utilizan esta función.

Contenedores individuales

Los archivos multimedia de cada flujo se entregan en un archivo ZIP que contiene los archivos correspondientes a cada flujo de audio y vídeo:

  • Cada contenedor de transmisión del archivo corresponde a una transmisión publicada en OpenTok. El ID de transmisión del editor coincide con el nombre del archivo correspondiente, y cada ID de transmisión se declara en el manifiesto de archivo.

    Cuando se interrumpe y se reanuda una transmisión debido a una reconexión automática, o cuando una transmisión se añade y se elimina repetidamente en un archivo del modo de transmisión manual, el archivo ZIP incluirá archivos independientes para cada uno de los segmentos de la transmisión.

  • Los contenedores de flujo son del tipo .webm, o .mkv, dependiendo de la configuración de tu proyecto. Los archivos de las sesiones que utilizan VP8 o VP9 como códec de vídeo preferido tener webm contenedores, y los proyectos que tienen H.264 configurado como códec de vídeo preferido utilizan el mkv formato. Véase Notas sobre el archivado con vídeos VP9 para obtener más información sobre el formato de vídeo VP9 en los archivos de cada transmisión.

  • Los contenedores de archivo de cada flujo son una grabación de todo el vídeo y el audio recibidos por el servidor de archivo. Este material multimedia no se procesa y, por lo tanto, en la mayoría de los casos el contenedor no es apto para su reproducción directa.

El contenedor de flujo se trata como un flujo de transporte: todos los contenidos multimedia recibidos en el servidor de archivo se graban directamente en un archivo, sin inspección ni posprocesamiento. Este diseño tiene implicaciones para el consumo posterior de los contenedores de flujos. En la mayoría de los casos, la reproducción directa de un contenedor de archivo de flujo individual no será posible, o presentará problemas debido al contenido del contenedor:

  • Las dimensiones indicadas en la cabecera de la transmisión rara vez son correctas. Actualmente, las cabeceras del contenedor muestran una pista de vídeo con unas dimensiones de 640 x 480 píxeles, independientemente de las dimensiones de los fotogramas de vídeo codificados.
  • Las dimensiones de los fotogramas de vídeo variarán con el tiempo. Esto también puede incluir cambios en la relación de aspecto, sobre todo en las transmisiones en las que se comparte pantalla.
  • Es posible que los fotogramas de audio y vídeo no lleguen con marcas de tiempo monótonas; las frecuencias de fotogramas no siempre son constantes. Esto es especialmente relevante si la pista de vídeo o la de audio se desactiva durante un tiempo, utilizando una de las publishVideo o publishAudio características de la editorial.

Las marcas de tiempo de presentación de tramas (PTS) se registran basándose en las marcas de tiempo NTP obtenidas en el momento de la captura, con un desfase respecto a la marca de tiempo de la primera trama recibida. Incluso si una pista se silencia y posteriormente se desactiva el silencio, el desfase de la marca de tiempo debe mantenerse constante durante toda la duración de la transmisión. Al decodificar en el posprocesado, existirá una diferencia en el PTS entre tramas consecutivas durante el tiempo que la pista permanezca silenciada: no hay tramas «silenciosas» en el contenedor.

Para generar contenido visualizable a partir de archivos de archivo de flujos individuales, es necesario procesar los archivos multimedia mediante un posprocesador para reparar los contenedores de flujos individuales o multiplexar/combinar varios contenedores en un producto final. En nuestro repositorio de GitHub «archiving-composer» se ofrecen sugerencias para iniciarse en el procesamiento posterior: https://github.com/opentok/archiving-composer.

Manifiesto del archivo de una transmisión concreta

Los archivos de cada transmisión incluyen un archivo de metadatos en formato JSON, que proporciona información sobre las grabaciones de la transmisión incluidas en el archivo. Tiene el siguiente formato:

{
  "createdAt" : 1429305105162,
  "files" : [
    {
      "connectionData" : "connection data for this stream's connection",
      "filename" : "a1475893-99f5-4f02-b697-5d69e8e30d19.webm",
      "size" : 5558064,
      "startTimeOffset" : 3119,
      "stopTimeOffset" : 48765,
      "streamId" : "a1475893-99f5-4f02-b697-5d69e8e30d19",
      "videoType": "camera"
    },
    {
      "connectionData" : "connection data for this stream's connection",
      "filename" : "5ab71b7b-d998-4683-ad2b-7769d6533666.webm",
      "size" : 5396527,
      "startTimeOffset" : 2799,
      "stopTimeOffset" : 48764,
      "streamId" : "5ab71b7b-d998-4683-ad2b-7769d6533666",
      "videoType": "screen"
    }
  ],
  "id" : "297b9c62-78b3-4152-9e98-7e167354c9e6",
  "name" : "archive name",
  "partnerId" : 123456,
  "sessionId" : "2_MX4xMDB-fjE0MjkzMDQ3NzY3NTZ-WUpRUGVFUmhFSkRmVGljeU5zVnJpaXYxfn4"
}

Este archivo JSON incluye las siguientes propiedades:

  • id — El identificador único de este archivo.

  • partnerId — El identificador del socio o del proyecto de este archivo

  • sessionId — El identificador de sesión de este archivo

  • nombre — El nombre de este archivo. Este campo queda vacío si no se ha especificado el nombre en la llamada a iniciar archivo.

  • createdAt — El tiempo Unix, en milisegundos, en el que se inició el archivo.

  • archivos: una matriz de archivos incluidos en el contenedor ZIP. Cada archivo tiene las siguientes propiedades:

    • streamId — El ID correspondiente a la secuencia grabada en este archivo.

      Cuando una transmisión se interrumpe y se reanuda debido a una reconexión automática, o cuando una transmisión se añade y se elimina repetidamente en un archivo del modo de transmisión manual, el archivo de la transmisión incluirá archivos independientes para cada uno de los segmentos de la transmisión.

    • nombre_archivo — El nombre del archivo multimedia grabado. Será un .webm para obtener un archivo de una sesión en un proyecto de OpenTok que utiliza VP8 como códec de vídeo preferido, y será un .mkv para un archivo de una sesión de un proyecto que utiliza H.264 como códec de vídeo preferido.

      Si una transmisión se interrumpe y se reanuda debido a una reconexión automática, o cuando una transmisión se añade y se elimina repetidamente en un archivo del modo de transmisión manual, puede haber varios archivos para una misma secuencia (correspondientes a cada segmento), y al nombre de archivo de cada segmento de la secuencia se le añadirá un número de índice (como «_1» o «_2») después del identificador de la secuencia para identificar el orden del segmento.

    • startTimeOffset — El desfase, en milisegundos, respecto al momento en que este archivo comenzó a grabarse (a partir de la hora «createdAt» del archivo); véase la nota importante que figura a continuación.

    • stopTimeOffset — El desfase, en milisegundos, del momento en que este archivo dejó de grabar (a partir de la hora «createdAt» del archivo); consulta la nota importante que figura a continuación.

    • connectionData — El datos de conexión para el cliente editorial.

    • videoType — O bien "camera", "screen", o "custom". A "screen" El vídeo utiliza la función de compartir pantalla del editor como fuente de vídeo; un vídeo «personalizado» lo publica un cliente web utilizando un elemento VideoTrack de HTML como fuente de vídeo. En el caso de una transmisión publicada desde un dispositivo móvil, el tipo de pantalla puede cambiar de una cámara a un tipo de vídeo de pantalla compartida. Sin embargo, la propiedad del manifiesto del archivo solo indica el tipo de vídeo inicial.

Importante: En un archivo de una transmisión concretasi durante la grabación no se publica ningún flujo durante un breve periodo de tiempo, la función startTimeOffset Los valores de «stopTimeOffset» pueden presentar una ligera desviación. Se trata de un problema conocido.

Posprocesamiento de archivos individuales

Hay una aplicación de posprocesador de muestra disponible en https://github.com/opentok/archiving-composer.

Selección de flujos que se incluirán en un archivo

Cuando se inicia un archivo, si se establece la opción streamMode a "manual", puedes elegir las transmisiones que quieres incluir en el archivo. Puedes añadir y eliminar transmisiones durante la grabación del archivo. Además, puedes especificar si el archivo incluirá el audio o el vídeo de una transmisión (o ambos). Por otra parte, con el streamMode ajustado a "auto" (por defecto), se incluyen todas las secuencias (con audio y vídeo) en el archivo. Véase Iniciar una grabación de archivo y Selección de flujos que se incluirán en un archivo. Sin embargo, en un archivo creado hay un límite de 16 flujos de vídeo y 50 flujos de audio que se pueden incluir a la vez (tanto en el modo automático como en el manual), y los flujos se incluyen en función de normas de priorización de flujos. En el caso de los archivos en modo de transmisión manual, las actualizaciones de la transmisión se envían como Cambios en el estado del archivo.

Sesiones archivadas automáticamente

También puedes hacer que una sesión se archive automáticamente. Puedes especificarlo al crear la sesión, utilizando la API REST de OpenTok o uno de los SDK de servidor de OpenTok:

El archivo de una sesión archivada automáticamente se inicia en cuanto un cliente se conecta a la sesión.

El método de la API REST para crear una sesión incluye una opción para configurar el nombre del archivo y la resolución del mismo al crear una sesión que se archiva automáticamente.

Nota: Si se inicia el archivado y no se transmite ningún dato durante el tiempo que dura el proceso (no se publica ningún archivo de audio ni de vídeo), el tamaño del archivo resultante será de 0 bytes.

Las sesiones archivadas automáticamente incluyen tanto audio como vídeo, y graban todas las transmisiones en un mismo archivo MP4 (compuesto). Sin embargo, si la grabación dura más de 4 horas (14 400 segundos), la sesión se graba en varios archivos MP4 consecutivos, de hasta 4 horas de duración cada uno, hasta que se detiene el archivo. Los archivos automáticos consecutivos de una sesión se solaparán ligeramente, de modo que no se pierda ningún dato grabado.

Puedes llamar al método REST de OpenTok para archivos de listados y pasar el sessionID Parámetro de consulta para mostrar los archivos correspondientes a un ID de sesión específico. A continuación, puedes determinar el orden de los distintos archivos MP4 consultando el createdAt propiedad de cada archivo que figura en los datos JSON devueltos por la llamada al método REST.

No es posible detener un archivo automático mediante la API REST de OpenTok ni los SDK de servidor. Los archivos automáticos se detienen 60 segundos después de que el último cliente se desconecte de la sesión o 60 minutos después de que el último cliente deje de publicar una transmisión en la sesión.

Importante:

  • Si prevé que habrá largos periodos en los que se interrumpirá el archivado, debería plantearse iniciar y detener los procesos de archivado utilizando los métodos descritos en el API REST de OpenTok o uno de los SDK de servidor de OpenTok (en lugar de que la sesión se archive automáticamente).
  • Debes evitar por completo reutilizar los identificadores de sesión si vas a utilizar el archivado automático. La reutilización de un identificador de sesión puede provocar que los archivados automáticos fallen si un archivado automático anterior de esa sesión ha caducado.
  • No utilice archivos automáticos para sesiones de corta duración, como las que se utilizan para pruebas previas a la llamada o de conectividad. Se le facturará el uso excesivo de recursos de archivo, ya que los archivos automáticos se detienen 60 segundos después de que el último cliente se desconecte de la sesión o 60 minutos después de que el último cliente deje de publicar un flujo en la sesión (si el cliente sigue conectado después de publicar).

Nota: Si deseas unir de forma fluida dos grabaciones consecutivas con un pequeño solapamiento entre el final del primer archivo y el principio del segundo, puedes utilizar nuestra herramienta de posprocesamiento para la creación de archivos compuestos, que se explica a continuación.

Postprocesamiento de archivos compuestos

Las grabaciones del archivo de vídeo forman parte del archivo duración de hasta 4 horas y 14.400 segundos. Por lo tanto, una sesión de vídeo más larga no se grabará en un único fichero de archivo. Para evitar perder una parte de la sesión, utilice la opción Sesiones archivadas automáticamente que permite generar varios ficheros para cubrir toda la sesión. También puede utilizar la función Archivos simultáneos para iniciar una segunda grabación antes de finalizar la anterior. En ambos casos, estos archivos se generan con un breve solapamiento entre el final de un archivo y el principio del siguiente.

Si prefiere disponer de un único archivo que contenga toda la sesión, puede utilizar la función Posprocesamiento de archivos compuestos que fusiona grabaciones consecutivas superpuestas e intenta que la transición sea lo más suave posible desde el punto de vista perceptivo. Puede utilizar esta herramienta para generar un único archivo, aunque más largo, que contenga medios de varios archivos más cortos. Para más detalles, consulte la guía del desarrollador Postprocesado de archivos compuestos. La herramienta está disponible en https://github.com/Vonage/archive-post-processing.

También puedes utilizar esta herramienta con grabaciones de vídeo que no se hayan creado como archivos de Vonage Video, siempre que haya cierto solapamiento entre los archivos multimedia y que las grabaciones de vídeo cumplan una serie de características, como el uso de los códecs H264 y AAC LC para el vídeo y el audio, respectivamente.

Archivos simultáneos

Para grabar varios archivos de la misma sesión simultáneamente, configure la opción multiArchiveTag opción cuando iniciando cada archivo. Debes establecer un valor único para cada archivo simultáneo de una sesión en curso.

Puedes utilizar diferentes configuraciones y asignar diferentes señales a cada grabación simultánea en archivo.

En sesiones archivadas automáticamente, fije el multiArchiveTag opción de iniciar un nuevo archivo simultáneo que se graba simultáneamente con los archivos automáticos. Los archivos automáticos comienzan y finalizan cuando la sesión se inicia y se detiene por sí sola (siguiendo las normas de los archivos automáticos), mientras que los iniciados manualmente se detienen por separado.

Cambios en el estado del archivo

Puede registrar una URL de devolución de llamada para recibir una notificación cuando cambie el estado de un archivo. El estado de un archivo se establece como uno de los siguientes:

  • "started" — El archivo se ha puesto en marcha y se está grabando.

  • "paused" — Cuando se pausa un archivo, no se graba nada. El archivo se pausa si se da alguna de las siguientes condiciones:

    • Ningún cliente está publicando flujos en la sesión. En este caso, el tiempo de espera es de 60 minutos; transcurrido ese tiempo, el archivo se detiene y el estado del archivo cambia a "stopped".
    • Todos los clientes se desconectan de la sesión. Tras 60 segundos, el archivado se detiene y el estado del archivado cambia a "stopped".

    Si un cliente reanuda la publicación mientras el archivo se encuentra en el "paused" estado, la grabación de archivo se reanuda y el estado vuelve a ser "started".

  • "stopped" — El archivo dejó de grabar.

  • "uploaded" — El archivo está disponible para su descarga desde la ubicación de destino que especificaste en tu Account de la Video API. Ten en cuenta que, en el caso de archivos muy pequeños, el "uploaded" El evento de estado puede producirse antes de que el "stopped" evento de estado. Si tienes solución alternativa para el almacenamiento en archivo Si está activada, en caso de fallo almacenaremos el archivo en la nube de OpenTok (y el estado será "available").

  • "available" — El archivo se puede descargar desde la nube de OpenTok.

  • "expired" — El archivo ya no está disponible para su descarga desde la nube de OpenTok. (Los archivos almacenados en la nube de OpenTok solo están disponibles durante 72 horas a partir del momento en que se crean.)

  • "failed" — Se ha producido un error en la grabación del archivo (o se ha producido un error al subir el archivo de archivo y el almacenamiento de reserva en la nube de OpenTok está desactivado).

  • "streamAdded" — Se ha añadido una transmisión al archivo. Esto se aplica a modo manual Solo archivos.

  • "streamRemoved" — Se ha eliminado una transmisión del archivo. Esto afecta a modo manual Solo archivos.

Utiliza tu Account de la Video API para especificar una URL de devolución de llamada.

Devoluciones de llamada seguras: Puedes proteger las solicitudes de devolución de llamada de los webhooks mediante devoluciones de llamada firmadas, utilizando un secreto de firma. Consulta Devoluciones de llamada seguras.

Cuando cambia el estado de un archivo, el servidor envía solicitudes HTTP POST a la URL que indiques. El tipo de contenido (Content-Type) de la solicitud es «application/json». Los datos de la solicitud son un objeto JSON con el siguiente formato:

{
    "id" : "b40ef09b-3811-4726-b508-e41a0f96c68f",
    "event": "archive",
    "createdAt" : 1384221380000,
    "duration" : 328,
    "name" : "Foo",
    "partnerId" : 123456,
    "reason" : "",
    "resolution" : "640x480",
    "sessionId" : "2_MX40NzIwMzJ-flR1ZSBPY3QgMjkgMTI6MTM6MjMgUERUIDIwMTN-MC45NDQ2MzE2NH4",
    "size" : 18023312,
    "status" : "available",
    "url" : "https://example.com/archive.mp4"
}

El objeto JSON incluye las siguientes propiedades:

  • createdAt — La marca de tiempo correspondiente al momento en que el llame a el momento en que se inició el archivo, expresado en milisegundos desde la época Unix (1 de enero de 1970, 00:00:00 UTC). Ten en cuenta que este valor se redondea al segundo más cercano. Ten en cuenta también que este valor difiere del createdAt valor en el Método REST para recuperar un archivo y el createdAt valor en el manifiesto de un archivo de transmisión individual En ellos, el createdAt El valor se establece en la hora en la que la grabación comenzó efectivamente en los servidores de OpenTok (no en la hora en la que se realizó la llamada para iniciar la grabación). Ten en cuenta que, aunque se envíe una llamada para iniciar una grabación, esta no comenzará a grabarse efectivamente en el servidor de OpenTok hasta que al menos un cliente publique un flujo en la sesión.
  • duration — La duración del archivo en segundos. Para los archivos que se están grabando (con la propiedad «status» establecida "started"), este valor se fija en 0.
  • id — El identificador único del archivo.
  • name — El nombre del archivo que has proporcionado (esto es opcional)
  • partnerId — Tu clave de API de OpenTok.
  • resolution — La resolución del archivo (ya sea «640x480», «480x640», «1280x720», «720x1280», «1920x1080» o «1080x1920»). Esta propiedad solo se establece para archivos compuestos. Puedes establecer la resolución de un archivo compuesto al llamar a la función iniciar archivo método de la API REST de OpenTok.
  • reason — Una cadena que describe el motivo del cambio de estado.
    • Para archivos con el estado "stopped" o "failed"esta cadena describe la razón por la que el archivo se detuvo o falló. Para archivos con el estado "stopped"puede establecerse en "maximum duration exceeded", "maximum idle time exceeded", "session ended", o "user initiated".
    • Para archivos con el estado "failed"puede establecerse en "Internal server failure".
    • Para archivos con el estado "streamRemoved"se puede establecer como la razón por la que el flujo se eliminó de la sesión (y del archivo): "clientDisconnected", "networkDisconnected", "forceDisconnected", "forceUnpublished", "mediaStopped".
  • sessionId — El ID de la sesión de OpenTok que se ha archivado.
  • size — El tamaño del archivo comprimido. En el caso de los archivos comprimidos que aún no se han generado, este valor se establece en 0.
  • status — El estado del archivo:
    • "available" — El archivo se puede descargar desde OpenTok.

    • "expired" — El archivo ya no está disponible para su descarga desde la nube de OpenTok. (Los archivos almacenados en la nube de OpenTok solo están disponibles durante 72 horas a partir del momento en que se crean.)

    • "failed" — Se ha producido un error al guardar el archivo.

    • "paused" — Cuando se pausa un archivo, no se graba nada. El archivo se pausa si se da alguna de las siguientes condiciones:

      • Ningún cliente está publicando flujos en la sesión. En este caso, el tiempo de espera es de 60 minutos; transcurrido ese tiempo, el archivo se detiene y el estado del archivo cambia a "stopped".
      • Todos los clientes se desconectan de la sesión. Tras 60 segundos, el archivado se detiene y el estado del archivado cambia a "stopped".

      Si un cliente reanuda la publicación mientras el archivo se encuentra en el "paused" estado, la grabación de archivo se reanuda y el estado vuelve a ser "started".

    • "started" — El archivo se ha puesto en marcha y se está grabando.

    • "stopped" — El archivo dejó de grabar.

    • "uploaded" — El archivo se puede descargar desde el bucket de S3 o el contenedor de Azure que hayas especificado en tu Account de la Video API. Ten en cuenta que, en el caso de archivos muy pequeños, el "uploaded" El evento de estado puede producirse antes de que el "stopped" evento de estado.

  • streamMode — Si todas las transmisiones están incluidas en el archivo ("auto") o seleccionas las transmisiones que quieres incluir en el archivo ("manual"). Véase Selección de flujos que se incluirán en un archivo.
  • streams — Una matriz de objetos que corresponden a las secuencias que se están archivando en ese momento. Solo se establece para un archivo cuyo estado sea "started". Cada objeto de la matriz incluye las siguientes propiedades:
    • streams — El identificador de la secuencia incluida en el archivo.
    • hasAudio — Si el audio de la retransmisión se incluye en el archivo.
    • hasVideo — Si el vídeo de la retransmisión está incluido en el archivo.
  • url — La URL de descarga del archivo comprimido disponible. Solo se establece para un archivo comprimido cuyo estado sea "available"; para otros archivos, (incluidos los archivos con el estado "uploaded") esta propiedad se establece en null. Por seguridad, la URL de descarga sólo está disponible al realizar llamadas a la API REST (o al SDK del servidor) para recuperación de información de archivo o archivos de listadoso accediendo a la URL desde su cuenta de Account de la Video API en línea (todas ellas requieren autenticación). Transcurridos 10 minutos, la URL de descarga caducará y se asignará una nueva URL con una nueva solicitud.
  • timestamp — Para manual actualizaciones de la secuencia de datos, la marca de tiempo en la que se produjo el evento, expresada en milisegundos desde la época Unix (1 de enero de 1970, 00:00:00 UTC)
  • stream - Para manual actualizaciones del flujo, propiedades:
    • id — El identificador de la secuencia añadida o eliminada del archivo.
    • connection — El objeto de conexión del flujo, que incluye una propiedad: id. En id Esta propiedad es el ID de conexión del flujo añadido o eliminado del archivo.
    • createdAt — La marca de tiempo correspondiente al inicio de la transmisión, expresada en milisegundos desde la época Unix (1 de enero de 1970, 00:00:00 UTC). Ten en cuenta que este valor se redondea al segundo más cercano.

También puedes consultar el estado de los archivos en la Account de la Video API:

  1. Navegue hasta su Account de la Video API página.
  2. En la lista de proyectos que aparece a la izquierda de la página, selecciona el proyecto que contenga las sesiones que deseas archivar.
  3. En el Archivado sección, haz clic en el Lista de archivos pestaña. Aquí se muestran los detalles sobre los archivos del proyecto.

Seguridad de los archivos

Puedes proteger tus archivos de las siguientes maneras:

  • Desactivar el recurso de almacenamiento de archivo — De forma predeterminada, Vonage almacena un archivo de copia de seguridad en los servidores de OpenTok si no ha podido cargar el archivo en el servidor S3 o Azure que hayas especificado. Para evitar este almacenamiento de reserva (que está activado de forma predeterminada), inicia sesión en tu Account de la Video API, selecciona el proyecto y configura la opción para desactivar el almacenamiento de respaldo en el archivo.
  • Utilizar el cifrado de OpenTok — Esto te permite crear archivos de OpenTok en los que los datos nunca permanecen almacenados sin cifrar. De entre los métodos disponibles para proteger tus archivos de OpenTok, este ofrece el mayor nivel de seguridad. Está disponible como un funcionalidad adicional. Para más información, consulte el Cifrado de OpenTok documentación.
  • Utilizar el cifrado del lado del servidor de Amazon S3 — Para el cifrado se utilizan claves de cifrado gestionadas por Amazon S3. Más información sobre el cifrado del lado del servidor de Amazon S3 aquí.

Aplicaciones de ejemplo

Las siguientes aplicaciones de ejemplo muestran cómo realizar archivados con OpenTok:

Más información

Consulta la documentación sobre los métodos relacionados con el archivado en el API REST de OpenTok y en las referencias de la API para el SDK de servidor de OpenTok. Además, cada uno de los SDK de servidor incluye una aplicación de archivo de ejemplo.