从Azure Media Service上的视频捕获缩略图

时间:2015-06-26 15:56:58

标签: azure mpeg azure-media-services video-thumbnails

我正在尝试使用Azure Media Service上的视频中的图像缩略图。 我无法理解是否自动制作缩略图如果是 - 那么它的URI是什么。

文档讨论了AssetFile中的“缩略图集合” - 但我找不到任何进一步的内容。

有什么想法吗?

谢谢

1 个答案:

答案 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发布它们。

MSDN docs related to thumbnail preset