Error message

User warning: The following module is missing from the file system: fast_404. For information about how to fix this, see the documentation page. in _drupal_trigger_error_with_delayed_logging() (line 1143 of /mnt/www/html/ooyala/docroot/includes/bootstrap.inc).

Aplicación de límites de streams simultáneos para cada espectador

Su cuenta de proveedor de Ooyala Backlot se puede configurar para establecer un límite de streams simultáneos. Cada uno de sus espectadores (sus propias cuentas específicas) tiene el mismo límite global. El límite se aplica a todos los grupos de sindicación para su cuenta de proveedor. Usted mismo impone el límite manteniendo un latido programático con el servicio de Ooyala que indica que un espectador está reproduciendo un vídeo. Tras alcanzar el límite, no se podrá acceder a más vídeos hasta que el número de streams simultáneos disminuya.

Habilitar el límite

Si está interesado en esta función, póngase en contacto con su gestor de cuentas de Ooyala para habilitarla. Prepare el límite superior (el número máximo de streams simultáneos) que desee.

Puede habilitar este límite usted mismo en la interfaz de usuario de Backlot o con una llamada a la API de Backlot. Sin embargo, debe contactar a su gestor de cuentas para especificar el límite superior. Para evitar el cambio accidental de este límite, solo lo puede cambiar su gestor de cuentas.

En la interfaz de usuario de Backlot

  1. Inicie sesión en Interfaz de usuario de Backlot.
  2. Vaya a la pestaña PUBLICAR.
  3. Vaya a la subpestaña Controles de sindicación.
  4. A la izquierda, seleccione el grupo de sindicación apropiado o el grupo predeterminado.
  5. A la derecho, asegúrese de que la casilla de verificación de Se requiere el token del reproductor de Ooyala está marcada.
  6. En Se requiere el token del reproductor de Ooyala, marque Limitar streams simultáneos por usuario.
  7. Póngase en contacto con su gestor de cuentas para establecer el límite superior.

Con la API de Backlot

  1. Agregue la propiedad restrict_concurrent_streams con un valor true a las reglas de publicación apropiadas. En el ejemplo siguiente, esta propiedad se añade a una regla de publicación previamente creada a través de una llamada a https://api.ooyala.com:
    [PATCH] /v2/publishing_rules/9b70a34a67881c7a291d8b
    {
         “restrict_concurrent_streams” : “true”
    }
    
  2. Póngase en contacto con su gestor de cuentas para establecer el límite superior.

Cómo funciona

Los límites de streams simultáneos pueden aplicarse en reproductores HTML5, reproductores Flash, aplicaciones de Google Android y aplicaciones de Apple iOS.

El servicio de Ooyala mantiene un recuento de los streams activos para cada uno de sus espectadores (cuentas de cliente). Cuando un espectador intenta acceder a algunos contenidos, su programa de aplicación cliente llama a la API de autorización de Ooyala. El sistema devuelve:

  • Una indicación de que se requiere un latido: require_heartbeat
  • Un token de autorización: auth_token
  • Un intervalo de latidos en segundos: heartbeat_interval

Mientras el programa mantiene el latido, el número de streams simultáneos se mantiene. Cuando el espectador abandona la página o sale de la aplicación móvil, usted ya no envía el latido y el servicio disminuye el recuento.

La tabla siguiente muestra la secuencia de acciones, de izquierda a derecha y hacia abajo.
Espectador Su aplicación cliente Ooyala
Accede al contenido Primero, consulta GET para la API de autorización Incrementar en uno el recuento de streams simultáneos.
Devuelve:
  • require_heartbeat establecido en true
  • auth_token
  • heartbeat_interval en segundos
  Envía inmediatamente auth_token a Ooyala como latido  
Comienza y continúa la reproducción Envía auth_token como latido cada heartbeat_interval segundos Responde “OK”

Mantiene el recuento de streams simultáneos

Finaliza la reproducción Detiene el envío del latido Disminuye el recuento en uno

Tras salir de la correspondiente página web o aplicación cliente, si el servicio no ha recibido un latido en un determinado periodo de tiempo, el stream se detiene, el auth_token se invalida y el recuento de streams simultáneos se disminuye en uno.

Para aplicar la protección de contenidos, Ooyala no revela la longitud precisa de tiempo antes de la invalidación del token por razones de seguridad.

Sintaxis de consulta HTTP del latido y respuesta

La sintaxis de la consulta GET para mantener el latido es la siguiente:

[GET] /sas/player_api/v1/auth_heartbeat/pcode/pcode/auth_token/auth_token    
  

donde pcode es su código de proveedor y auth_token es el valor de la propiedad auth_token devuelta por el servicio de Ooyala.

Note: Para aplicar la protección de contenidos, cuando reciba la primera respuesta que incluye el auth_token, envíe inmediatamente un latido. No espere heartbeat_interval segundos antes de enviar el primer latido.

A continuación, realice consultas GET continuas con el latido a heartbeat_interval segundos hasta que se salga de la correspondiente página web o aplicación.

La respuesta a una solicitud de latido exitosa tiene el siguiente aspecto:

{"message"=>"OK",
 "timestamp"=>1360877041,
 "signature"=>"2sBWFegOi+hqvz4ektiHM/VzO3cUoQ2c+5/YOgyldtw="} 

Cualquier mensaje distinto de “OK” indica un fallo, en cuyo caso se debe detener la reproducción.

Ejemplo completo con todas las propiedades

El siguiente es un ejemplo de la primera consulta GET a la API de autorización, con la respuesta destacando las propiedades (casi al final) que necesita para aplicar el límite de streams simultáneos: require_heartbeat, auth_token, y heartbeat_interval. Tenga en cuenta que los valores reales devueltos son cadenas mucho más largas que las mostradas aquí para facilitar la lectura. A continuación se presenta la secuencia de consulta/respuesta para mantener el latido.

Primera consulta

[GET] http://player.ooyala.com/sas/player_api/v1/authorization/embed_code/FoeGbkH9m/VxMDhwFbICE7ojQ9jZM?
domain=gnarly.com&embedToken=http%3A%2F%2Fplayer.ooyala.com%2Fsas%2Fembed_token%FoeGbkH9%3Faccount_id%3DTest_Account%26
api_key%3xxx%26expires%3Dyyy%26signature%3zzz
Respuesta
{"authorization_data"=>
  {"VxMDhwNzoq2j8qfyiG6FbICE7ojQ9jZM"=>
    {"authorized"=>true,
     "code"=>"0",
     "message"=>"authorized",
     "request_timestamp"=>"1360878715",
     "retry"=>nil,
     "synd_rule_failures"=>nil,
     "require_heartbeat"=>true,
     "streams"=>
      [{"delivery_type"=>"hds",
        "url"=>
         {"format"=>"encoded",
          "data"=>
        "aHR0cDovLmY0bQ=="}}]}},
 "user_info"=>
  {"ip_address"=>"192.168.1.1",
   "domain"=>"gnarly.com",
   "request_timestamp"=>"1360878715",
   "account_id"=>"johnsmith",
   "country"=>"UNKNOWN",
   "timezone"=>-8.0,
   "continent"=>"NA"},
 "debug_data"=>
  {"server_latency"=>"58.778999999999996",
   "request_id"=>"4f397d7f6091ce8e7d43354c424095fe",
   "user_info"=>{"request_timestamp"=>"1360878715"}},
 "auth_token"=>
  "WGd5uZ29WTFBpeDlnPT0K",
 "heartbeat_data"=>{"heartbeat_interval"=>300},
 "signature"=>"b09xu7UxL/uFRJ9MOkmhISpRSF21zcOK+7iv1LfcNVA="}
 
Enviar latido inmediatamente
[GET] http://player.ooyala.com/sas/player_api/v1/auth_heartbeat/pcode/FoeGbkH9m/auth_token/WGd5uZ29WTFBpeDlnPT0K
Respuesta
 {"message"=>"OK",
 "timestamp"=>1360877041,
 "signature"=>"2sBWFegOi+hqvz4ektiHM/VzO3cUoQ2c+5/YOgyldtw="}
Cada 300 segundos
[GET] http://player.ooyala.com/sas/player_api/v1/auth_heartbeat/pcode/FoeGbkH9m/auth_token/WGd5uZ29WTFBpeDlnPT0K
Respuesta
{"message"=>"OK",
 "timestamp"=>1360877046,
 "signature"=>"2sBWFegOi+hqvz4ektiHM/VzO3cUoQ2c+5/YOgyldtw="}
 

Cuando se alcanza el límite

Cuando se alcanza el límite, la autorización del espectador falla. El cuerpo de la respuesta, en el mensaje del fallo authorized, incluye el code establecido en 18 y un mensaje explicativo.

.
.
.
{"authorized"=>false,
   "code"=>"18",
     "message"=>"Too many open videos. Close other videos on this account and try again in a few minutes.",
    "request_timestamp"=>"1361401545",
    "retry"=>nil,
    "synd_rule_failures"=>nil,
    "require_heartbeat"=>true}
.
.
.
Los reproductores HTML5 y Flash de Ooyala captan este mensaje de error y muestran un mensaje emergente al espectador.

Excepciones que se pueden producir en aplicaciones móviles

En aplicaciones cliente móviles (Google Android y Apple iOS), cuando la autorización falla o un latido falla, se producen las siguientes excepciones.
Google Android Apple iOS Cuándo se produce
ERROR_AUTHORIZATION_

FAILED

OOOoyalaErrorCodeAuthorizationFailed Se ha alcanzado el límite de streams simultáneos
ERROR_AUTHORIZATION_

HEARTBEAT_FAILED

OOOoyalaErrorCodeHeartbeatFail Fallo en la solicitud de latido

Cuando se producen estas excepciones, las aplicaciones cliente deben captarlas para mostrar un mensaje apropiado. Por ejemplo, en Android en Java, encierre sus consultas GET para la autorización y para los latidos en una estructura try/catch. Para el uso en iOS, cualquier mecanismo es estándar para que su empresa lleve a cabo la “gestión de excepciones.”

Otras recomendaciones sobre dispositivos móviles y de ordenadores de sobremesa

En cualquier aplicación, si el espectador hace una pausa en un vídeo, usted debe enviar todavía solicitudes de latidos.

Tanto en ordenadores de sobremesa como en dispositivos móviles, un espectador puede suspender una aplicación en segundo plano:

  • La aplicación móvil debe guardar una marca de hora antes de ejecutarse en segundo plano y luego dejar de enviar latidos. Cuando el espectador reanuda la aplicación, verifica la marca de hora guardada. Si el tiempo transcurrido es menor que heartbeat_interval, simplemente se reanuda la reproducción. De lo contrario, debe requerir la reautorización, obtener un nuevo auth_token y comenzar un nuevo latido.
  • Una aplicación de ordenador de sobremesa suspendida no puede seguir enviando latidos. Esto aumenta la probabilidad de que un auth_token expire antes de que se reanude la actividad.

Para detener completamente los latidos:

  • En un navegador de ordenador de sobremesa, el espectador tiene que salir de la página.
  • En una aplicación móvil, el espectador tiene que salir de la aplicación.

Sobre el cambio de canal

Para los espectadores que desean cambiar de canal, su programa puede pasar los auth_token anteriores para obtener autorización, con el fin de que el recuento no se incremente con el límite. En este caso, el espectador puede cambiar rápidamente los vídeos sin tener que elevar el número de streams simultáneos.