Azure — подготовка контента для Smooth Streaming

После того, как моя задача кодирования Azure выполнена, у меня есть набор файлов ISMV/ISMA, хранящихся в большом двоичном объекте Azure. Теперь я хочу, чтобы они были доступны для Smooth Streaming. Как я могу это сделать?

В статьях, которые я нашел в Интернете, рассказывается, как загружать файлы ISMV с локального ПК в Azure с помощью утилиты Adaptive Streaming Azure. Но мои файлы уже находятся в хранилище Azure, и я не хочу их скачивать и загружать снова.

Кто-нибудь может посоветовать?


person vyakhir    schedule 06.12.2012    source источник


Ответы (2)


Очень подробный и технически точный Как доставить потоковое содержимое даст вам кристально ясное представление о том, что нужно сделать, чтобы доставить Smooth Streams вашим пользователям.

Помимо этого, вы также можете ознакомиться с Readme и Код в проекте WaMediaWeb:

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

ОБНОВЛЕНИЕ

CDN не в настоящее время поддерживается в службах мультимедиа Azure. Раньше в предыдущем SDK/API был AzureCdnOriginlocator, но теперь он удален. Таким образом, с текущим состоянием общедоступной предварительной версии Azure Media Services вы не можете использовать CDN. Вы можете использовать локатор OnDemandOrigin только для бесперебойной потоковой передачи.

У вас также есть возможность получить локатор SAS. Однако вы не можете использовать SAS Locator для плавных потоков, потому что он просто предоставит вам доступ к манифесту, а не к остальным файлам (фрагментам с разным битрейтом) в учетной записи хранения.

ОБНОВЛЕНИЕ 2

Мой код на github обновлен последними (на сегодняшний день) API и SDK.

ОБНОВЛЕНИЕ 3

Я ошибся! Только что узнал кое-что о CDN. Итак, документация по Как to: Включить 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

Надеюсь, это немного ясно. Вы не можете использовать CDN автоматически через API и/или SDK, вы должны вручную манипулировать строками и знать свою конечную точку CDN.

Для меня это тоже что-то новое. Мне нужно обновить свой код — часть с предоставлением CDN.

Также обратите внимание, что локаторы не доступны сразу после их создания. Примерно через 30-40 секунд после создания локатор будет доступен.

person astaykov    schedule 06.12.2012
comment
Хотя, нет, это не совсем помогло. Он дал мне URL-адрес в домене медиасервисов, который нельзя поместить в cdn. - person vyakhir; 06.12.2012
comment
Спасибо за обновления. Похоже, мне нужен цикл загрузки/выгрузки для использования CDN... Кстати, не могли бы вы предоставить мне ссылку MS, в которой говорится, что CDN не поддерживается для лазурных носителей? - person vyakhir; 06.12.2012
comment
Нет такой ссылки. Я только что обнаружил, что он отсутствует в документах NEW SDK и API ... пока это не официальное заявление MS. Это единственная подсказка (то, что было раньше): Как: включить Azure CDN, который представляет собой ручной процесс включения CDN для вашей учетной записи служб мультимедиа. Но это больше не работает. И документация по API не включает параметр для Azure CDN ... - person astaykov; 06.12.2012
comment
Спасибо. Ценю твою помощь! - person vyakhir; 07.12.2012

Вы видели эту статью с практическими рекомендациями о Как использовать Windows Azure Media Services?

Службы мультимедиа обеспечивают поддержку источника потоковой передачи для форматов Smooth Streaming, Apple HTTP Live Streaming и MP4.

Таким образом, вы можете попробовать использовать эти услуги для достижения своей цели. Не могу сказать точно, но как по мне, эта часть может быть вам интересна:

Как: доставка потокового контента :

Например, вы можете создать прямой URL-адрес, называемый локатором, для потоковой передачи содержимого на исходном сервере служб мультимедиа. Клиентские приложения, такие как Microsoft Silverlight, могут напрямую воспроизводить потоковое содержимое, если вы предоставите локатор.

Службы Windows Azure Media в MSDN
Форумы Windows Azure Media Services

person VMAtm    schedule 06.12.2012
comment
Спасибо, но эта статья устарела. Эти примеры не работают, так как изменился API. И даже когда я адаптировал вызовы API к новым интерфейсам, он все еще не работает... - person vyakhir; 06.12.2012
comment
взгляните на мой ответ и код. Код обновлен с последним (на сегодняшний день) API/SDK. - person astaykov; 06.12.2012