我定义了两个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
如何为资产创建新定位器时指定要使用的流端点?
答案 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找到了我需要的信息。