将Azure Media Services缩略图任务预设与Java SDK一起使用 [英] Using the Azure Media Services Thumbnail Task Preset with the Java SDK

查看:163
本文介绍了将Azure Media Services缩略图任务预设与Java SDK一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Windows Azure文档提供了一个任务预设,用于在C#中创建缩略图和示例代码: https://msdn.microsoft.com/en-us/library/azure/hh973624.aspx

The Windows Azure documentation provides a task preset to create thumbnails and sample code in C#: https://msdn.microsoft.com/en-us/library/azure/hh973624.aspx

我试图这样做java SDK http://azure.microsoft.com/en-us/develop/java / 并从服务器收到错误400.

I am trying to do this using the java SDK http://azure.microsoft.com/en-us/develop/java/ and getting an error 400 from the server.

我的代码的相关摘录是:

The relevant excerpt from my code is:

JobInfo jobInfo = mediaService
            .create(Job
                    .create()
                    .setName(
                            "Encoding " + assetToEncode.getName() + " to "
                                    + encodingPreset
                                    + " and Packaging to HLS")
                    .addInputMediaAsset(assetToEncode.getId())
                    // Thumbnails see
                    // https://msdn.microsoft.com/en-us/library/azure/hh973624.aspx
                     .addTaskCreator(
                     Task.create(
                     mediaProcessor.getId(),
                     "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                     +
                     "<Thumbnail Size=\"100%,*\" Type=\"Jpeg\" Filename=\"{OriginalFilename}_{Size}_{ThumbnailTime}_{ThumbnailIndex}_{Date}_{Time}.{DefaultExtension}\">"
                     + "<Time Value=\"10%\" Step=\"10%\" Stop=\"95%\"/>" +
                     "</Thumbnail>").setConfiguration( "Thumbnails")
                     .setOptions(
                     TaskOption.ProtectedConfiguration).setName(
                     "Thumbnails"))

有没有人有一个使用此任务的工作示例java?

Does anyone have a working example using this task with java?

推荐答案

简答:



这个答案适用于azure-media maven包版本0.6.0至0.8.x

您应该使用创建的常用XML 方法并通过 setConfiguration 设置缩略图XML,如下例所示:

You should use the usual XML on create method and set the thumbnail XML via setConfiguration like this example:

// Create the Thumbnail task
String xmlThumbnail = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
       "<Thumbnail Size=\"" + size + "\" Type=\"Jpeg\" " + 
       "Filename=\"{OriginalFilename}_{Size}_{ThumbnailTime}_{ThumbnailIndex}_{Date}_{Time}.{DefaultExtension}\">" + 
       "<Time Value=\"" + time + "\"/></Thumbnail>";

Task.CreateBatchOperation task = Task
            .create(mediaProcessor.getId(), 
                    "<taskBody><inputAsset>JobInputAsset(0)</inputAsset><outputAsset>JobOutputAsset(0)</outputAsset></taskBody>")
            .setConfiguration(xmlThumbnail)
            .setName("MakeThumbnailTask");



完成示例:



用法

MakeThumbnail(mediaService, "50%,*", "10%"); 

代码

private void MakeThumbnail(MediaContract mediaService, String size, String time) throws ServiceException, InterruptedException, MalformedURLException {

        // Use the Azure Media Encoder, by specifying it by name.
        ListResult<MediaProcessorInfo> mediaProcessors = mediaService
                .list(MediaProcessor.list().set("$filter", "Name eq 'Azure Media Encoder'"));

        // Use the latest version of the media processor.
        MediaProcessorInfo mediaProcessor = null;
        for (MediaProcessorInfo info : mediaProcessors) {
            if (null == mediaProcessor || info.getVersion().compareTo(mediaProcessor.getVersion()) > 0) {
                mediaProcessor = info;
            }
        }

        // Create the Thumbnail task
        String xmlThumbnail = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
           "<Thumbnail Size=\"" + size + "\" Type=\"Jpeg\" " + 
           "Filename=\"{OriginalFilename}_{Size}_{ThumbnailTime}_{ThumbnailIndex}_{Date}_{Time}.{DefaultExtension}\">" + 
           "<Time Value=\"" + time + "\"/></Thumbnail>";

        Task.CreateBatchOperation task = Task
                .create(mediaProcessor.getId(), 
                        "<taskBody><inputAsset>JobInputAsset(0)</inputAsset><outputAsset>JobOutputAsset(0)</outputAsset></taskBody>")
                .setConfiguration(xmlThumbnail)
                .setName("MakeThumbnailTask");

        // Create a job creator that specifies the asset, priority and task for the job.
        Job.Creator jobCreator = Job.create().setName("MakeThumbnailTask").addInputMediaAsset("nb:cid:UUID:ec25435d-1500-80c3-dd89-f1e528b02207").setPriority(2)
                .addTaskCreator(task);

        JobInfo jobInfo = mediaService.create(jobCreator);
        String jobId = jobInfo.getId();

        // Check to see if the job has completed.
        CheckJobStatus(jobId);
        // Done with the job.

        // Retrieve the output asset.
        ListResult<AssetInfo> outputAssets = mediaService.list(Asset.list(jobInfo.getOutputAssetsLink()));
        AssetInfo thumbnailAsset = outputAssets.get(0);

        AccessPolicyInfo downloadAccessPolicy = null;
        double t100years = 100.0 * 365.0 * 24.0 * 60.0;
        downloadAccessPolicy = mediaService
                .create(AccessPolicy.create("Public Thumbnail Policy", t100years, EnumSet.of(AccessPolicyPermission.READ)));

        LocatorInfo downloadLocator = null;
        downloadLocator = mediaService
                .create(Locator.create(downloadAccessPolicy.getId(), thumbnailAsset.getId(), LocatorType.SAS));

        // Lookup the output asset file
        ListResult<AssetFileInfo> assetFiles = mediaService.list(AssetFile.list(thumbnailAsset.getAssetFilesLink()));
        AssetFileInfo jpegFile = null;
        for (AssetFileInfo outputAssetFile : assetFiles) {
            // check if primary output.
            if (outputAssetFile.getIsPrimary())  {
                jpegFile = outputAssetFile;
            }
        }

        // Adding the file name to the URL
        String imageUrl = downloadLocator.getPath().replaceAll("\\?", "/" + jpegFile.getName() + "?");

        System.out.println("Created Thumbnail JPEG URL: " + imageUrl);

 }

这篇关于将Azure Media Services缩略图任务预设与Java SDK一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆