porta microsoft management azure content-type jwplayer

azure - microsoft - Establecer el tipo de contenido de los archivos multimedia almacenados en Blob



porta azure (3)

Este es un ejemplo de trabajo para cargar video en Azure Blob Storage con Content-Type correcto:

public static String uploadFile( CloudBlobContainer container,String blobname, String fpath) { CloudBlockBlob blob; try { blob = container.getBlockBlobReference(blobname); File source = new File(fpath); if (blobname.endsWith(".mp4")) { System.out.println("Set content-type: video/mp4"); blob.getProperties().setContentType("video/mp4"); } blob.upload(new FileInputStream(source), source.length()); return blob.getUri().toString(); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (StorageException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }

Tenemos un sitio web alojado en Azure. Está basado en medios, y estamos utilizando JWPlayer para reproducir medios con pseudostreaming HTTP. Los archivos multimedia se almacenan en blob en 3 formatos: mp4, ogg, webm.

El problema es que el tipo de contenido de los archivos multimedia se establece como application / octet-stream para todos los tipos. Debido a esto, hay algunos problemas en la reproducción de medios y la barra de progreso.

¿Cómo puedo establecer el tipo de contenido apropiado de los archivos almacenados en blob (como - video / mp4, video / ogg, video / webm)?

No quiero hacerlo manualmente para cada archivo yendo en la interfaz blob. Debe haber alguna otra forma de hacerlo de la que no tengo conocimiento. Tal vez un archivo de configuración, archivo de configuración, etc. ordena. O tal vez un bloque de código para configurar el tipo de contenido para todos los archivos almacenados en una carpeta.

¿Alguna sugerencia? Gracias


Esto debería funcionar:

var storageAccount = CloudStorageAccount.Parse("YOURCONNECTIONSTRING"); var blobClient = storageAccount.CreateCloudBlobClient(); var blobs = blobClient .GetContainerReference("thecontainer") .ListBlobs(useFlatBlobListing: true) .OfType<CloudBlockBlob>(); foreach (var blob in blobs) { if (Path.GetExtension(blob.Uri.AbsoluteUri) == ".mp4") { blob.Properties.ContentType = "video/mp4"; } // repeat ad nauseam blob.SetProperties(); }

O configura un diccionario para que no tengas que escribir muchas instrucciones if.


Usando php, uno puede cargar el video configurando el tipo de contenido de la siguiente manera

$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString); //upload $blob_name = "video.mp4"; $content = fopen("video.mp4", "r"); $options = new CreateBlobOptions(); $options->setBlobContentType("video/mp4"); try { //Upload blob $blobRestProxy->createBlockBlob("containername", $blob_name, $content, $options); echo "success"; } catch(ServiceException $e){ $code = $e->getCode(); $error_message = $e->getMessage(); echo $code.": ".$error_message."<br />"; }