azure media services - The request body is too large and exceeds the maximum permissible limit

621 Views Asked by At

I am using the java SDK and followed the example on: https://learn.microsoft.com/en-us/azure/media-services/media-services-java-how-to-use However, using this example, for files larget than ~65MB I got the following error: RequestBodyTooLargeThe request body is too large and exceeds the maximum permissible limit. Any idea? Thanks,

1

There are 1 best solutions below

0
On BEST ANSWER

The current version of the Media Services Java SDK has a limitation on the size of the file to upload when using the provided createBlockBlob method.

To workaround this, you can leverage the file upload through the Azure Storage Java SDK if you need to upload files larger than 64MB. To do this, update the example as follows:

1) For example, if you are using Gradle build tool, add this line to the build.gradle file under the dependencies section: (package)

dependencies { 
  // ...
  compile group: 'com.microsoft.azure', name: 'azure-storage', version: '4.0.0'
}

2) Add the following import directives to your code:

import com.microsoft.azure.storage.blob.CloudBlobContainer;
import com.microsoft.azure.storage.blob.CloudBlockBlob;

3) Replace the following block of code of the uploadFileAndCreateAsset method

// Create the Blob Writer using the Locator
uploader = mediaService.createBlobWriter(uploadLocator);

File file = new File("BigBuckBunny.mp4"); 

// The local file that will be uploaded to your Media Services account
InputStream input = new FileInputStream(file);

System.out.println("Uploading " + fileName);

// Upload the local file to the asset
uploader.createBlockBlob(fileName, input);

With the following block of code:

try {
    CloudBlobContainer container = new CloudBlobContainer(URI.create(uploadLocator.getPath()));

    // The blob reference of the asset file
    CloudBlockBlob blob = container.getBlockBlobReference("BigBuckBunny.mp4");

    // The local file that will be uploaded to your Media Services account
    File sourceFile = new File("BigBuckBunny.mp4");

    // Upload the local file to the asset
    blob.upload(new FileInputStream(sourceFile), sourceFile.length());

} catch (Exception e) {
    // Track the exception
    e.printStackTrace();
}