Как указать другую конечную точку потоковой передачи при создании локатора потоковой передачи по запросу

У меня определены две конечные точки потоковой передачи мультимедиа Azure: конечная точка по умолчанию, созданная до 11 сентября 2014 г. и не поддерживающая https, и новая конечная точка потоковой передачи, созданная после 11 сентября 2014 г. и поддерживающая https.

Я удалил все единицы потоковой передачи из конечной точки потоковой передачи по умолчанию и отключил конечную точку потоковой передачи по умолчанию. Новая конечная точка потоковой передачи включена и имеет одну единицу потоковой передачи.

Когда я создаю локатор для своего ресурса, мне нужно, чтобы локатор возвращал базовый 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

Как указать, какую конечную точку потоковой передачи использовать при создании нового локатора для моего объекта?


person Teppic    schedule 07.05.2015    source источник


Ответы (2)


Локатор (GUID) действителен для всех ваших конечных точек потоковой передачи в вашей учетной записи Azure Media Services. Чтобы использовать «новую» конечную точку потоковой передачи, возьмите URL-адрес локатора и измените его, чтобы использовать «новое» имя хоста. Я сделал это в AMS Explorer (см. Информация об активах/Локаторы). http://aka.ms/amse

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

Оказывается, я использовал более старую версию клиентского SDK Azure Media Services (v3.0.0.5). В более новых версиях класс MediaContext имеет коллекцию конечных точек потоковой передачи, которые упрощают поиск нужной конечной точки. В итоге я решил это следующим образом:

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();
}

Я нашел нужную мне информацию в этой записи в блоге.

person Teppic    schedule 13.05.2015