我正在尝试使用Azure Media Service上的视频中的图像缩略图。 我无法理解是否自动制作缩略图如果是 - 那么它的URI是什么。
文档讨论了AssetFile中的“缩略图集合” - 但我找不到任何进一步的内容。
有什么想法吗?
谢谢
答案 0 :(得分:0)
以下是将缩略图任务添加到编码作业的示例代码
ITask task = job.Tasks.AddNew("My thumbnail task",
processor,
"Thumbnails",
TaskOptions.None);
您可以使用xml预设而不是名为pereset的系统来控制缩略图任务参数。我是从sdk github repo file Jobtests.cs
粘贴的 string presetXml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Thumbnail Size=""80,60"" Type=""Jpeg"" Filename=""{OriginalFilename}_{ThumbnailTime}.{DefaultExtension}"">
<Time Value=""0:0:0""/>
<Time Value=""0:0:3"" Step=""0:0:0.25"" Stop=""0:0:10""/>
</Thumbnail>";
IJob job = CreateAndSubmitOneTaskJob(_mediaContext, name, mediaProcessor, presetXml, asset, TaskOptions.None);
var task = job.Tasks.First();
var asset = task.OutputAssets.First();
var files = asset.AssetFiles.ToList();
使用缩略图预设运行测试ShouldFinishJobWithSuccessWhenPresetISUTF8(),您会发现该作业生成1个输出资产,该资产将包含大约30个文件。要下载这些文件,您只需调用Download或DownloadAsync。
files[0].Download()
如果您需要获取所选文件的URL,您可以执行以下代码:
var accessPolicy = mediaContext.AccessPolicies.Create("12HoursRead", TimeSpan.FromHours(12), AccessPermissions.Read);
//Creating read-only access url which will be available for 12 hours
var locator = mediaContext.Locators.CreateSasLocator(asset, accessPolicy);
//Getting url for first file in collection
UriBuilder uriBuilder = new UriBuilder(locator.BaseUri);
uriBuilder.Path += String.Concat("/", files[0].Name);
请注意,所有Azure媒体资产文件都存储在Azure存储中。 如果您拥有大量网站,最好从存储中下载缩略图并通过CDN发布它们。