En 2017, Brightcove lanzó Dynamic Delivery y comenzó a generar nuestros manifiestos y vídeos "justo a tiempo" en el momento en que un reproductor los solicita, lo que nos permite reempaquetar contenidos en múltiples formatos diferentes y admitir la mayor variedad de dispositivos posible.
Desde entonces, cada vez más clientes nos dicen que quieren aprovechar esta flexibilidad y controlar con precisión la CDN a través de la que se entregan sus contenidos, la calidad de las variantes de representación de vídeo disponibles e incluso el orden en que deben presentarse las distintas variantes de representación dentro del manifiesto de vídeo. Esto llevó a la creación de nuestra función de reglas de entrega, que ahora está disponible de forma general como parte de nuestra API.
En este post, veremos cómo utilizar esta API para resolver uno de los casos de uso más comunes que vemos: limitar la calidad máxima del vídeo que se sirve a determinados dispositivos.
PUESTA EN MARCHA
Para empezar, primero necesitamos un vídeo de prueba, que hemos ingestado normalmente a través de Video Cloud.
Si echamos un vistazo al manifiesto HLS que se envía a ese reproductor, veremos que contiene varias líneas, que representan manifiestos de variantes de representación de distintas resoluciones, en este caso 480×270, 640×360, 960×540 y 1280×720 (abajo):
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=2205500,CODECS="mp4a.40.2,avc1.4d001f",RESOLUTION=1280x720,AUDIO="audio-2",CLOSED-CAPTIONS=NONE
https://manifest.prod.boltdns.net/manifest/v1/hls/v4/aes128/5270290572001/aa7059e5-586b-4caa-ae6f-5533f223a569/a557b391-f20e-4727-9185-459411a63029/10s/rendition.m3u8
Si 960×540 es la resolución máxima que queremos ofrecer a nuestro hipotético dispositivo, entonces deberíamos ver desaparecer la representación de 1280×720 una vez aplicada nuestra regla.
CREAR NUESTRA NORMA
Las reglas de entrega se componen de condiciones (cuándo debe invocarse una regla) y acciones (cómo debe afectar la regla al contenido).
Como sabemos que queremos que la regla limite la calidad máxima de reproducción del vídeo, vamos a crear primero la Acción con la siguiente petición HTTP:
POST /accounts/{accountID}/actions
Content-Type: application/json
Authorization: Bearer {access_token}
y el cuerpo de la solicitud establecido en:
{
"properties": {
"max_video_resolution": "960x540"
}
}
Esto creará la nueva Acción y nos devolverá algo parecido a:
{
"id": "88b13752-3469-4e46-b4aa-49cd4f1685a6",
"properties": {
"max_video_resolution": "960x540"
}
}
INVOCAR ACCIONES MANUALMENTE
Antes de sumergirnos en la aplicación condicional de nuestra Acción, podemos invocarla manualmente y comprobar que hace lo que queremos añadiendo su ID como parámetro a nuestra petición de la Playback API:
https://edge.api.brightcove.com/playback/v1/accounts/5270290572001/videos/6230434222001?config_id=88b13752-3469-4e46-b4aa-49cd4f1685a6
Esto nos devolverá el mismo manifiesto HLS que antes, pero sin la variante de representación de 1280×720.
Además de ser útil para las pruebas, la invocación manual de reglas de este modo es una potente técnica para los clientes que aprovechan los SDK de Brightcove para crear sus propias aplicaciones, ya que les permite invocar reglas diferentes por dispositivo, por aplicación o incluso por usuario, simplemente introduciendo diferentes Id. de acción.
Un uso común que vemos es que nuestros clientes aplican una Acción para servir un tipo básico de contenido a usuarios anónimos, mientras que a cualquiera que se registre se le aplica una Acción manual para servirle un contenido más rico (vídeo y audio de mayor calidad, códecs modernos como HEVC, proveedor CDN premium).
ACCIONES DE INVOCACIÓN CONDICIONAL
Para los clientes que no desean o no necesitan la granularidad de invocar manualmente Acciones, proporcionamos un conjunto de Condiciones predefinidas para controlar en qué circunstancias los servicios de generación de manifiestos de Brightcove deben aplicar reglas. Éstas se aplicarán a todas las solicitudes, por lo que constituyen una excelente forma de dirigirse a determinados grupos de usuarios, independientemente del tipo de dispositivo en el que visualicen sus vídeos.
El conjunto completo de condiciones ofrecidas puede consultarse en la referencia de la API aquí.
Para este tutorial, imaginemos que sabemos que los usuarios del Reino Unido han tenido problemas con el almacenamiento en búfer de las resoluciones altas debido a problemas de capacidad de la red en todo el país, por lo que queremos eliminar la variante de representación de mayor resolución hasta que se resuelvan.
PUT /accounts/{accountID}/conditions
Content-Type: application/json
Authorization: Bearer {access_token}
Esta llamada a la API toma un array de Condiciones pero por ahora sólo vamos a crear una, incluyendo el siguiente cuerpo con nuestra petición:
[
{
"name": "Cut off high-quality renditions for the UK",
"if": {
"request_country": [
"GB"
]
},
"then": [
"88b13752-3469-4e46-b4aa-49cd4f1685a6"
]
}
]
Ahora, si realizamos nuestra solicitud estándar a la API de reproducción desde el Reino Unido (observa que esta vez no se adjunta el parámetro config_id), veremos que se elimina la variante de representación de alta calidad.
¿QUÉ SIGUE?
Esperamos que esto le haya dado una idea del poder y la flexibilidad de las Reglas de Entrega. La lista completa de Condiciones y Acciones soportadas se puede encontrar aquí y si hay alguna otra que le gustaría que añadiéramos en el futuro, por favor póngase en contacto con Atención al Cliente o con su representante de cuenta y háganoslo saber.
Si desea obtener más información sobre cómo utilizan nuestros clientes las reglas de entrega, consulte cómo Seven West Media optimiza la entrega de contenidos de vídeo con las reglas de entrega de Brightcove.