在我的编码Azure任务完成后,我将一堆ISMV / ISMA文件存储在Azure blob上。现在我希望它们可用于Smooth Streaming。 我怎么能这样做?
我在互联网上找到的文章说明了如何使用Adaptive Streaming Azure实用程序将ISMV文件从本地PC上传到Azure。 但我的文件已经存在于Azure存储中,我不想下载它们并再次上传。
有人可以建议吗?
答案 0 :(得分:3)
非常详细且技术上准确的How to: Deliver Streaming Content将让您清楚地了解如何为您的用户提供Smooth Streams。
除此之外,您还可以浏览WaMediaWeb项目中的Readme和Code:
public string GetSmoothStreamingOriginLocator(Models.Asset assetToStream)
{
// Get a reference to the manifest file from the collection
// of streaming files in the asset.
var manifestFile = assetToStream.MediaAsset.AssetFiles.Where(x => x.Name.EndsWith(".ism")).FirstOrDefault();
// Cast the reference to a true IFileInfo type.
if (null == manifestFile)
{
return null;
}
// Create an 1-day readonly access policy.
IAccessPolicy streamingPolicy = this.MediaService.MediaContext.AccessPolicies.Create("Streaming policy",
TimeSpan.FromDays(1),
AccessPermissions.Read);
// Create the origin locator. Set the start time as 5 minutes
// before the present so that the locator can be accessed immediately
// if there is clock skew between the client and server.
ILocator originLocator =
(from l in this.MediaService.MediaContext.Locators
where l.AssetId.Equals(assetToStream.MediaAsset.Id)
select l).FirstOrDefault();
if (originLocator == null)
{
originLocator = this.MediaService.MediaContext
.Locators.CreateLocator(LocatorType.OnDemandOrigin, assetToStream.MediaAsset,
streamingPolicy,
DateTime.UtcNow.AddMinutes(-5));
}
// Create a full URL to the manifest file. Use this for playback
// in streaming media clients.
string urlForClientStreaming = originLocator.Path + manifestFile.Name + "/manifest";
// Display the full URL to the streaming manifest file.
Console.WriteLine("URL to manifest for client streaming: ");
Console.WriteLine(urlForClientStreaming);
return urlForClientStreaming;
}
<强>更新强>
Azure Media Services目前支持 。以前的SDK / API中曾经有过AzureCdnOriginlocator,但现在已经删除了。因此,使用Azure Media Services的当前公共预览状态,您无法使用CDN。您只能使用OnDemandOrigin Locator进行流畅播放。
您还可以选择获取SAS定位器。但是,您无法将SAS定位器用于平滑流,因为它只允许您访问清单,而不是存储帐户上的其余文件(不同比特率块)。
更新2
github上的我的代码是最新的(迄今为止)API和SDK。
更新3
我错了!刚刚发现了一些关于CDN的东西。因此,How to: Enable CDN上的文档是正确的,但有点不完整。
按照“操作方法”中描述的步骤操作。激活CDN的媒体服务帐户后,通过所述的手动过程,您将能够使用CDN端点。
话虽如此,OnDemandOrigin定位器将导致类似:
您必须将wamsamsreg001orig-hs.cloudapp.net
替换为您的Azure CDN端点,类似于az02930.vo.msecnd.net
并获取流式清单的新URL:
http://az02930.vo.msecnd.net/7f98142c-b513-40be-8d3c-5bf73fe442bb/2012-10-12-320.ism/manifest
希望它有点清楚。您不能通过API和/或SDK自动进行CDN,您必须进行手动字符串操作,并且您必须知道您的CDN端点。
这也是我的新事物。我必须更新我的代码 - 提供CDN的部分。
此外,请注意定位器在创建时不会立即可用。创建后大约30-40秒,定位器将可用。
答案 1 :(得分:0)
您是否看过关于How to Use Windows Azure Media Services的本方法文章?
媒体服务为Smooth Streaming,Apple HTTP Live Streaming和MP4格式提供流媒体源支持。
因此,您可以尝试使用此服务来实现您的目标。不能肯定地说,但对我来说,这部分对你来说很有意思:
How to: Deliver streaming content:
例如,您可以在Media Services源服务器上为流内容创建一个名为定位器的直接URL。如果您提供定位器,Microsoft Silverlight等客户端应用程序可以直接播放流内容。
Windows Azure Media Services on MSDN
Windows Azure Media Services Forums