2017-04-04 61 views
0

我想知道是否可以使用AssetFile添加到任務中?我有這個流程:在任務中使用IAssetFile的Azure媒體服務

  1. 將視頻編碼爲幾種分辨率。
  2. 以360p分辨率視頻進行彙總。

我知道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(); 

謝謝

回答