任务

时间:2017-04-04 02:11:45

标签: c# .net azure azure-media-services

我想知道我是否可以使用AssetFile添加到任务中?我有这个流程:

  1. 将视频编码为多种分辨率。
  2. 使用360p分辨率视频进行总结。
  3. 我知道IAsset的Id并成功获得了360p分辨率视频的IAssetFile。但是,我不能使用它,因为任务需要IAsset而不是IAssetFile。

    以下是我的示例代码:

            IJob job = _MediaServicesContext.Jobs.Create("Video Thumbnail Job");
    
            string MediaProcessorName = "Azure Media Video Thumbnails";
    
            var processor = GetLatestMediaProcessorByName(MediaProcessorName);
    
            IAsset curretAsset = _MediaServicesContext.Assets.Where(a => a.Id == request.AssetId).FirstOrDefault();
    
            IAssetFile file360 = curretAsset.AssetFiles.Where(f => f.Name.EndsWith("360_500.mp4")).FirstOrDefault();
    
            String configuration = "{\"version\":\"1.0\",\"options\":{\"outputAudio\" : \"false\", \"maxMotionThumbnailDurationInSecs\": \"10\", \"fadeInFadeOut\" : \"false\" }}";
    
            // Create a task with the encoding details, using a string preset.
            ITask task = job.Tasks.AddNew("My Video Thumbnail Task",
                processor,
                configuration,
                TaskOptions.None);
    
            // Specify the input asset.
            task.InputAssets.Add(file360);
    
            // Specify the output asset.
    
            task.OutputAssets.AddNew(curretAsset.Id.ToString() + " Summarized", AssetCreationOptions.None);
    
            // Use the following event handler to check job progress.  
            job.StateChanged += new EventHandler<JobStateChangedEventArgs>(StateChanged);
    
            // Launch the job.
            job.Submit();
    
            // Check job execution and wait for job to finish.
            Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None);
    
            progressJobTask.Wait();
    

    谢谢