我们使用azure媒体服务器进行编码和生成缩略图。 我们有以下代码用于编码和生成缩略图的组合任务
IJob job = _context.Jobs.Create(filename + " - Media Encoder Standard");
IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder Standard");
ITask task = job.Tasks.AddNew("Media Encoder Standard", processor, "H264 Single Bitrate 720p for Android", options);
// Specify the input asset to be encoded.
task.InputAssets.Add(asset);
task.OutputAssets.AddNew("Output asset",
AssetCreationOptions.None);
task = job.Tasks.AddNew("Media Encoder Standard", processor, configuration, options);
// Specify the input asset to be encoded.
task.InputAssets.Add(asset);
task.OutputAssets.AddNew("Output asset",
AssetCreationOptions.None);
// Submit the job and wait until it is completed.
job.Submit();
job = job.StartExecutionProgressTask(
j =>
{
},
CancellationToken.None).Result;
Console.WriteLine("Transcoding job finished.");
var outputAssets = job.OutputMediaAssets.ToList();
return outputAssets;
但是,如果缩略图任务失败并且视频编码通过。我们仍会为视频生成网址。
我们使用以下代码生成网址
public string PublishAssetGetURLs(IAsset asset, string fileExt = "")
{
// Publish the output asset by creating an Origin locator for adaptive streaming,
// and a SAS locator for progressive download.
_context.Locators.Create(
LocatorType.Sas,
asset,
AccessPermissions.Read,
TimeSpan.FromDays(365));
IEnumerable<IAssetFile> assetFiles = asset
.AssetFiles
.ToList()
.Where(af => af.Name.EndsWith(fileExt, StringComparison.OrdinalIgnoreCase));
// Get the URls for progressive download for each specified file that was generated as a result
// of encoding.
List<Uri> sasUris = assetFiles.Select(af => af.GetSasUri()).ToList();
var url = sasUris.FirstOrDefault();
if (url != null)
{
return url.ToString();
}
return string.Empty;
}
然而,当使用url时,我们得到以下xml
<Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:a6d14469-0001-0008-7bdb-1f3b8a000000
Time:2017-08-28T08:58:17.0773123Z</Message><AuthenticationErrorDetail>Signature fields not well formed.</AuthenticationErrorDetail></Error>
如果两个任务都成功,它就可以正常工作。我是否需要在资产上设置某些内容?
答案 0 :(得分:0)
我的假设显然是错的。只是有时我会打破。它是由sas定位器创建的url引起的。有时它会有一个+ char,这会导致错误。然而,如果它被编码,它就像一个魅力。我需要更多的咖啡
答案 1 :(得分:0)
很高兴您似乎自己修复了定位器创建错误。但是,您还提到有时在缩略图任务错误时,编码任务会成功。您是否尝试在输入视频中的特定时间戳/时间码处生成缩略图?这通常是我遇到的唯一一个编码成功且缩略图失败的情况。如果您可以共享您正在使用的缩略图预设,我们可以进一步查看。
最后,在override中,有一个示例显示您可以将编码和缩略图生成合并为一个任务。