我正在使用Windows Azure Media Services在上载后进行视频处理。我的基本工作流程包括将文件上传到WAMS资源,创建作业,创建两个任务-第一个任务从视频创建缩略图,第二个任务将其编码为HTML5。目前,一切都很好,但是我不得不为每个任务创建两个不同的输出资产容器。作业完成后,我将文件(缩略图)复制到视频资源中,并删除缩略图资源,以便所有生成的文件都在同一资源中。
这是有效的,但感觉很麻烦,并且会带来一些开销,即复制文件,然后删除不必要的资产。有没有一种方法可以告诉编码任务使用缩略图任务的输出资源?
发布于 2014-03-12 23:44:38
简短的回答是否定的。这是设计出来的,我很想知道为什么你的用例需要.jpg和你的视频在同一个容器里。
发布于 2014-03-13 05:52:46
请使用以下代码。
上面的ThumbnailEmbed="False">
Path.GetFileNameWithoutExtension(inputPresetFile);inputPresetFile = @“C:\TEMP\EncodeWithImage.xml”;string presetName = string IAsset Asset =?;//这是任务的输入资产IJob作业=_context.Jobs.Create(“为”+ asset.Name +“编码作业,使用”+presetName“编码);Console.WriteLine(”为“+ asset.Name +”编码作业,使用“+presetName”编码);//获取媒体处理器引用,并将用于特定任务的处理器的名称传递给它。IMediaProcessor processor = GetLatestMediaProcessorByName("Windows Azure Media Encoder");Console.WriteLine("Got“+ processor.Name + ",ID:”+ processor.Id + ",version:“+ processor.Version);//将配置数据读入字符串。string configuration = File.ReadAllText(inputPresetFile);//使用字符串预置创建包含编码明细的任务task = job.Tasks.AddNew("Encode Task for“+ asset.Name + ",Encode using”+ presetName,processor,configuration,Microsoft.WindowsAzure.MediaServices.Client.TaskOptions.None);//指定要编码的输入资产。task.InputAssets.Add( asset );//添加一个输出资产来包含作业的结果。Task.OutputAssets.AddNew(“用于编码的输出资源”+ asset.Name +“使用”+ presetName,AssetCreationOptions.None);//启动作业。job.Submit();
发布于 2014-03-11 13:27:03
如果我没理解错的话,你想链接两个任务,其中第二个任务的输入是第一个任务的输出。如果是,则从github存储库复制/粘贴相应的测试:https://github.com/WindowsAzure/azure-sdk-for-media-services/blob/dev/test/net/Scenario/JobTests.cs
[TestMethod]
[DeploymentItem(@"Media\Thumbnail.xml", "Media")]
[DeploymentItem(@"Media\SmallWmv.wmv", "Media")]
[Priority(0)]
[TestCategory("DailyBvtRun")]
public void ShouldSubmitAndFinishChainedTasks()
{
IAsset asset = AssetTests.CreateAsset(_mediaContext, _smallWmv, AssetCreationOptions.StorageEncrypted);
IJob job = _mediaContext.Jobs.Create("Test");
IMediaProcessor mediaProcessor = GetMediaProcessor(_mediaContext, WindowsAzureMediaServicesTestConfiguration.MpEncoderName);
ITask task = job.Tasks.AddNew("Task1", mediaProcessor, GetWamePreset(mediaProcessor), TaskOptions.None);
task.InputAssets.Add(asset);
IAsset asset2 = task.OutputAssets.AddNew("Another asset");
string xmlPreset = File.ReadAllText(WindowsAzureMediaServicesTestConfiguration.ThumbnailXml);
ITask task2 = job.Tasks.AddNew("Task2", mediaProcessor, xmlPreset, TaskOptions.None);
task2.InputAssets.Add(asset2);
task2.OutputAssets.AddNew("JobOutput", options: AssetCreationOptions.None);
job.Submit();
WaitForJob(job.Id, JobState.Finished, VerifyAllTasksFinished);
}https://stackoverflow.com/questions/22314267
复制相似问题