30. Azure Mobile Services
Juan David Gómez
Microsoft Student Partner
.net Developer at Globant
@judavi | www.judavi.com
Notas del editor
PresentaciónStudentPartnerQuienes están escritos en MVA? El curso de Webmatrix
Según informes de CISCO para el año 2013 ya se transportaban por medio de internet 200.00 minutos de video por segundo. Eso es algo así como 138 días en video cada segundo. El video se ha vuelto una parte fundamental de nuestro uso de internet, ya sea cuando utilizamos YouTube, vemos una película en línea en sitio como Netflix o tenemos una video conferencia con nuestro equipo o con mamá. Esto además apoyado gracias a conexiones de banda ancha mas potentes. Historia de bajar un video por Kazaa. Explicar como ahora es natural ver una repetición, perder en el tiempo en youtube o hacer videos.
Lo mas interesante es que ahora no solo tenemos un dispositivoCelulares, pequeñas, pantallas
Codificar el contenido es el proceso de tomar un video y comprimirlo en un formato que pueda ser consumido por nuestros clientes. Estos clientes pueden tener un diverso número y tipo de dispositivos como PC’s, Mac’s, Smartphones, Tabletas, Xbox, televisores inteligentes. Cada uno de estos dispositivos tiene unas necesidades de codificación diferentes. Los Smartphone tiene pantallas pequeñas y poco almacenamiento, tabletas tienen pantallas mas grandes pero menor almacenamiento comparado con un pc y así. Por eso al momento de generar contenido debemos tener muy en cuenta el tipo de dispositivos que van a utilizar nuestros clientes. Así en la mayoría de los casos debemos considerar multiples codificaciones para abarcar la mayor cantidad de dispositivos y brindar la mejor experiencia.
Desafíos de tecnologíaCosto de infraestructuraGestión de contenido (CMS)CodificaciónDistribución a partir de múltiples dispositivosBuena experiencia de usuario (no lags)Filtrado por ipEscalabilidad del servicio (caso de la UTP)El sabor de la computación en la nubeMonetizaciónBasado es suscripciónBasado en anunciosProtección de derechosPlayReadyAdobe Access
Colección de componentes de tecnologías Microsoft y algunas de terceros sobre Azure para soluciones que pueden ir desde punto-a-punto de contenido multimedia. Cuando hablamos de soluciones hablamos de alojamiento, subir, codificar, empacar y distribuir contenido multimedia a iOS, Android, Flash, Windows e incluso otros dispositivos como Xbox o televisores inteligentes
Algunas de las empresas que en este momento están usando Media Services
En Londres 2012 fueron las primeras pruebas de Smooth Live Streaming, como resultado de ese trabajo nace como tal un producto que podía ser comercializado
Los juegos olímpicos son quizás son uno de los eventos mas interesantes para probar las tecnologías de streaming gracias a la combinación de volumen y frecuencias. Mientras algunos de los eventos deportivos transcurren en un par de días frente a un número modesto de personas los juegos olímpicos pueden llegar a tener entre 30 y 40 transmisiones simultaneas con millones de personas viendo el evento en vivo durante dos semanas. Por eso es perfecto escenario para cosas relacionadas con Computación en la nube, la elasticidad y escalabilidad son dos factores importantes en esta clase de eventos.Este fue el primer evento que fue completamente procesado en la nube (Adquisición, codificación, empaquetado y entrega)
Como fue este proceso?iStreamPlanet :Obtenía el video IP de los canales de NBC/OBSCodificaban el video multibitrate y lo entregaba a Azure Media ServicesiStream entrega a Azure un punto de publicación SmoothStreaming y Azure usaba empaquetamiento dinámicos para Apple HLS y Adobe HDS. Este contenido luego era puesto a través de las CDN de Akamai entregando el contenido multimedia a Windows, MacOs, iOS, Android y Windows Phonehttp://alexzambelli.com/blog/The Smooth/HLS/HDS live streams are compressed using H.264 and AAC codecs for video and audio, respectively. Audio is encoded as 56 kbps stereo HE-AAC v1, whereas video is delivered as H.264 in multiple bitrates/resolutions:Bit Rate (kbps)Resolution3450 1280×7202200 960×5401400 960×540900 512×288600 512×288400 340×192200 340×192
Media Services flexibilidad, escalabilidad y disponibilidad de la plataforma en la nube para poder llegar con una buena experiencia multimedia a audiencias globales. De hecho si nos fijamos Media Services en esencia nos provee una versión en la nube de tecnologías Microsoft ya existentes para la distribución de contenido multimedia (IIS Media Services). Por lo que podemos valernos del flujo entero o usar componentes específicos
Carga de contenidoDos puntos clave: Seguridad y VelocidadSeguridad: Todas las conexiones de subida van por HTTP, opcionalmente se puede encriptar usando AES 256Velocidad: Carga de contenido usando UDP con proveedores como AsperaEn orden para poder hacer cualquier operación con nuestro video primero es necesario cargarlo en algún lugar. Media Services utiliza Azure Storage (precio http://www.windowsazure.com/en-us/pricing/details/storage/). Este contenido se puede cargar usando un API REST o el cliente SDK que provee Azure. Respecto al API esta permite subir uno o varios archivos al mismo tiempo.
Comprimir en diferentes formatos. Algo así como el ExpressionEncoder pero en la nube Video CodecsH.264 (Baseline, Main, and High Profiles)MPEG-1MPEG-2 (Simple and MainProfile)MPEG-4 v2 (Simple Visual Profile and Advanced Simple Profile)VC-1 (Simple, Main, and AdvancedProfiles)Windows Media Video (Simple, Main, and AdvancedProfiles)DV (DVC, DVHD, DVSD, DVSL)
Profundizar en que es el bitrateDefiniradaptativebitrateEntonces esta forma de codificar partirá el archivo de video en miles de fragmentos?No, no en disco. Encoders que soporten este formato van a producir un archivo MP4 continuo (eso si 1 archivo por cada bitrate) que tiene la extensión *.ismv o *.ismva y dos manifiesto XML. Así que el número minimo de archivos que tendremos es 3. Ahora bien, cuando el cliente nos solicita un recurso, automáticamente el servidor toma el archivo Mp4 y VIRTUALMENTE lo divide en fragmentos y lo envía como archivos individuales. Esto además permite que las solicitudes del cliente sean mantenidas en “cache” y que podamos escalar esto a CDN dándo escalabilidad y eficiencia.
Quiere decir que HLS o Smooth puedo entregar video HD a todos los dispositivos?No, SmoothStreaming no puede hacer milagros, esto es simplemente en método de transporte HTTP. La entrega de contenido HD de forma eficiente todavía es responsabilidad del códec que se utilice: VC-1, H264 etc. Por ejemplo la mayoría recomienda que para un video 720p/24 frames no puede ser enviado a menos que tengamos por lo menos de 2 megas de ancho de banda para poder ser enviado en tiempo real. Sin embargo si se fijan, esta tecnología nos permite enviar un contenido que esta preparado para 2 megabits en tiempo real en uno solo.Lo que en esencia nos permite el SmoothStreaming es para los proveedores que puedan entregar contenido HD a sus clientes estos lo puedan hacer (mientras tengan el ancho de banda y el poder de procesamiento suficiente) sin sacrificar la calidad del video. Así no tienen que adivinar las capacidades de la audiencia, simplemente preparan el contenido en diferentes bitrate y permiten que sea el cliente el que automáticamente se ajuste a sus capacidades.
Codificación VS FormatoImaginemos el video en bruto (raw) como chocolate, el proceso de codificación son sabores de chocolate (con leche, oscuro, con arroz, con trufas) en el caso de video sería H264, VC-1, MPEG-1. Finalmente el formato es como empacamos el chocolate para su distribución (en barra, cuadritos, monedas) en el video sería SmoothStreaming o Apple HLS. Ambos basados en H264 pero empacados diferentes Apple HLS: DefinirSmoothStreaming : DefinirProgressiveDownload: Definir
Demo Codificación de video usando el portal de Azure
Proteger el contenido multimedia puede hacerse de diferentes maneras. Puedes subir el contenido usando –storageprotection-. Esto protege el contenido desde que se esta subiendo hasta que esta almacenado. Una vez allí hay formas de desencriptar el contenido en cualquier parte del proceso (codificación, empaquetamiento, entrega) entregando las llaves especificas como parte del proceso.El objetivo de DRM es el de restringir el acceso a datos y contenidos multimedia (básicamente audio y video)PlayReady: El sistema PlayReady protege los archivos mediante cifrado de datos. De esta forma no hay ninguna necesidad de utilizar unos canales de transmisión de alta seguridad o haciendo los archivos inaccesibles. Como los archivos están cifrados, los datos están protegidas, y por lo tanto se pueden copiar, transmitir y compartir libremente. PlayReady funciona con un sistema de dominios y licencias. Estas licencias definen cómo se podrá utilizar un archivo y bajo qué condiciones.AES: Encriptación asimétrica de 128 bit
Una vez que el video ha sido codificado puede ser puesto en diferentes contenedores. A este proceso se le llama empaquetamiento. Por ejemplo podemos tomar un MP4 y convertirlo para SmoothStreaming o para HLS. IMPORTANTE: Como HLS y Smooth son transmitidos como pequeños paquetes HTTP es fácil poder utilizar un CDN y no necesariamente debe ser el CDN de Azure hablamos que pueden incluirse proveedores como Akamai, limeligth
Para el empaquetamiento tendríamos dos opciones: Estático y dinámico En el empaquetamiento estático convertiríamos el contenido a Smooth o a HLS. Pero en este tipo de empaquetamiento debemos crear una copia del contenido por cada formato que requiera nuestro cliente.Por otro lado esta el empaquetamiento dinámico, que nos permite de forma dinámica convertir el video en tiempo real al formato que solicita el cliente. Es importante notar que el empaquetamiento dinámico requiere “comprar” unidades de streaming por demanda (Rus). Estas unidades proveen capacidad de procesamiento en incrementos de 200 megabits por segundo. Cuando se usa la forma dinámico el video usualmente esta codificado en un solo formato, generalmente MP4. Cuando el reproductor solicita el recurso, el dice específicamente cual es el formato que requiere. Así el servidor convierte este MP4 (Que es adaptativebirtrate) en el formato que necesita el cliente. Esto nos permite: Tener un solo video reduciendo los costos de almacenamiento.
MediaServices también nos permite la inserción de publicidad.En este punto es importante notar que el cliente debe tener un reproductor compatible con publicidad. Los diferentes clientes con esta opción están disponibles y pueden ser descargados para utilizarlo.Los tipos de avisos soportados son:Linear: De pantalla completa y que pausa el videoNo lineal: Se pone sobre el video y es mostrado mientras el video es reproducido, usualmente es una imagen o un logoCompañía: Avisos que son mostrados alrededor del reproductor.
4 de cada 5 personas (80%) no compraría un producto por haber visto un anuncio en Facebook.El término "banner blindness" fue acuñado por Benway y Lane1 como resultado de pruebas de usabilidad web donde la mayoría de los sujetos de la prueba, ya sea consciente o inconscientemente ignoraron la información que se les presentó en banner.Cuando los usuarios buscan información especifica en una página web, se enfocan solamente en las partes de la página donde ellos asumen que puede estar la información relevante
Con lo que vimos nos podemos imaginar algunos escenarios donde podemos usar esta tecnología.Y van desde la subida de video directamente cuando se ha obtenido hasta entregar al usuario final el contenido como en el caso de los juegos olímpicos de Sochi.
Que son servicios on-premise (instaladas en el usuario)Otro escenario donde hacemos la codificación y encriptamos el contenido antes de subirlo Azure, luego se hace el resto del proceso en la nube y finalmente el análisis del consumo del contenido se hace con otros proveedores.
PresentaciónStudentPartnerQuienes están escritos en MVA? El curso de Webmatrix