AZURE BLOBS - ACEPTAR RANGOS O CONTENIDO PARCIAL PARA VISUALIZAR VÍDEOS

Usando Azure como almacenamiento, puede que tus usuarios estén teniendo la carencia de no poder avanzar/retroceder vídeos sin previamente haberse descargado por completo el vídeo

AZURE BLOBS - ACEPTAR RANGOS O CONTENIDO PARCIAL PARA VISUALIZAR VÍDEOS

Si estás usando Azure como almacenamiento, y a su vez tienes vídeos guardados en sus Blobs, puede que tus usuarios estén teniendo la carencia de no poder avanzar/retroceder ese vídeo sin previamente haberse descargado por completo el vídeo.

Para permitir esa funcionalidad se usa el código http 206, el cual indica que es un contenido parcial lo que se está recibiendo (más información). En Azure, cuando creas tu Blob, se le asigna una versión de API sobre la cual funciona por defecto. Puedes verificar la versión actual comprobando la cabecera x-ms-version de la respuesta que obtienes al solicitar el recurso en cuestión, es decir, al acceder al vídeo que te gustaría que permitiera las solicitudes de contenido parcial.

Aquí puedes informarte de los diferentes modos que permite Azure para trabajar con diferentes versiones de su API.

Para poder asignar la versión que mejor se ajusta a la funcionalidad que necesitas, aquí puedes echar un vistazo a su gestión de cambios. A partir de la versión 2011-08-18, en nuestro caso, podremos disfrutar de solicitar contenidos parciales de un vídeo. Según su documentación:

Get Blob returns an Accept-Ranges:bytes header in the response to indicate that the service supports range requests.

Una vez identificada la versión que necesitas, para asignar la versión por defecto, necesitarás gestionarlo por código. Aunque el trozo de código a continuación hace uso de un paquete deprecado, Windows.Azure.Storage, funciona perfectamente para nuestro objetivo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;

namespace ChangeAzureApiVersion
{
    class Program
    {
        static void Main(string[] args)
        {
            var credentials = new StorageCredentials("accountname", "accountkey");
            var account = new CloudStorageAccount(credentials, true);
            var client = account.CreateCloudBlobClient();
            var properties = client.GetServiceProperties();
            properties.DefaultServiceVersion = "2021-08-06";
            client.SetServiceProperties(properties);
            Console.WriteLine(properties.DefaultServiceVersion);
        }
    }
}

Share Tweet Send
0 Comentarios
Cargando...