Azure - 为Smooth Streaming准备内容

时间:2012-12-06 10:15:54

标签: azure smooth-streaming azure-media-services

在我的编码Azure任务完成后,我将一堆ISMV / ISMA文件存储在Azure blob上。现在我希望它们可用于Smooth Streaming。 我怎么能这样做?

我在互联网上找到的文章说明了如何使用Adaptive Streaming Azure实用程序将ISMV文件从本地PC上传到Azure。 但我的文件已经存在于Azure存储中,我不想下载它们并再次上传。

有人可以建议吗?

2 个答案:

答案 0 :(得分:3)

非常详细且技术上准确的How to: Deliver Streaming Content将让您清楚地了解如何为您的用户提供Smooth Streams。

除此之外,您还可以浏览WaMediaWeb项目中的ReadmeCode

    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定位器将导致类似:

  

http://wamsamsreg001orig-hs.cloudapp.net/7f98142c-b513-40be-8d3c-5bf73fe442bb/2012-10-12-320.ism/manifest

您必须将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