如何在创建OnDemand流定位器时指定不同的流端点

时间:2015-05-07 02:58:51

标签: azure azure-media-services

我定义了两个Azure Media Streaming Endpoints:2014年9月11日之前创建的默认端点,不支持https,以及2014年9月11日之后创建并支持https的新流端点。

我已从默认流式传输端点中删除了所有流式传输设备,并关闭了默认流式传输端点。新的流端点已启用,并具有单个流式传输单元。

当我为我的资产创建一个Locator时,我需要定位器返回新流端点的基本uri,但是它返回默认流端点的基本uri。例如:

var locator = mediaContext.Locators.CreateLocator(LocatorType.OnDemandOrigin, asset, policy, DateTime.UtcNow.AddMinutes(-5));

// locator.BaseUri == http://example.origin.mediaservices.windows.net
// This uri points to the default streaming endpoint

如何为资产创建新定位器时指定要使用的流端点?

2 个答案:

答案 0 :(得分:1)

定位器(GUID)对Azure Media Services帐户中的所有流终端有效。使用你的" new"流端点,获取定位器URL并将其更改为使用" new"主机名。 这就是我在AMS Explorer中所做的工作(参见资产信息/定位器)。 http://aka.ms/amse

string hostname = myNewSE.HostName;
UriBuilder urib = new UriBuilder()
{
     Host = hostname,
     Path = locator.AbsolutePath,
};
return urib.Uri;

答案 1 :(得分:1)

事实证明我使用的是旧版Azure Media Services Client SDK(v3.0.0.5)。在较新的版本中,MediaContext类具有一组Streaming Endpoints,这使得查找您所关注的端点变得微不足道。我最终解决这个问题的方法如下:

public void Example(CloudMediaContext mediaContext, IAsset asset)
{
    var policy = mediaContext.AccessPolicies.Create("Streaming policy", MaxMediaAccessPeriod, AccessPermissions.Read);
    var locator = mediaContext.Locators.CreateLocator(LocatorType.OnDemandOrigin, asset, policy, DateTime.UtcNow.AddMinutes(-5));
    var template = new UriTemplate("{contentAccessComponent}/");
    var result = mediaContext.StreamingEndpoints
                             .AsEnumerable()
                             .Where(x => x.State == StreamingEndpointState.Running)
                             .Select(x => template.BindByPosition(new Uri("https://" + x.HostName), locator.ContentAccessComponent))
                             .First();
}

我在this blog post找到了我需要的信息。