Опубликован: 28.01.2014 | Уровень: для всех | Доступ: платный
Лекция 9:

Media Services

Аннотация: Использование Media Services для кодирования видео в различные форматы, DRM, защита данных, smooth streaming, вывод видео клиенту на веб-страницу.

Реализация медиа-сценариев с Windows Azure Media Services

Сервис Windows Azure Media Services формирует расширяемую пользователем облачную подплатформу для обработки мультимедиа-контента и имеет в своей основе платформу Windows Azure (обработка и хранение контента) и IIS Media Services (доставка контента). Сервис позволяет построить пользовательское приложение, перенеся все рутинные задачи по оборудованию, конвертированию, стримингу и другим задачам, связанным с мультимедиа, на облачные ресурсы.

Функциональность Windows Azure Media Services

Сервис Windows Azure Media Services предоставляет следующий набор функциональности для разработки мультимедиа-приложений в облаке:

Поглощение. Операция поглощения загружает так называемые ассеты в систему, например, загружает и кодирует их перед помещением непосредственно в хранилище.

Кодирование. Операции кодирования включают кодировние, трансформацию и конвертирование ассетов. Задачи кодирования в облаке можно запустить, используя Media Encoder, интегрированный в Windows Azure Media Services. Опции кодирования включают в себя следующие пункты: использование Windows Azure Media Encoder и работу с широким набором стандартных кодеков и форматов, включающим IIS Smooth Streaming, MP4 и конвертирование в Apple HTTP Live Streaming; конвертирование целых библиотек или отдельных файлов с полным контролем над входов и выходом; большой набор поддерживаемых типов файлов, форматов и кодеков; поддерживаемые направления конвертирования – Windows Azure Media Services позволяет конвертировать ISO MP4 (.mp4) в Smooth Streaming File Format (PIFF 1.3) (.ismv, .isma), Smooth Streaming File Format (PIFF) в Apple HTTP Live Streaming (.msu8, .ts). Также разработчики могут работать с форматом MPEG-DASH для трансляции контента по запросу (Video on Demand).

MPEG-DASH доступен также через функцию динамической упаковки (формат трансляции задается по запросу и формируется динамически без прохождения предварительного конвертирования).

Защита. Операция защиты контента означает шифрование live streaming или доступного по требованию контента для обеспечения безопасной передачи, хранения и доставки. WAMS предоставляет DRM-решение для защиты контента, которое поддерживает следующие DRM-технологии: Microsoft PlayReady Protection и MPEG Common Encryption.

Стриминг. Операция стриминга контента включает в себя как живой стриминг, так и доставку контента по требованию из облака. Windows Azure Media Services предоставляет решение для стриминга контента, поддерживая Smooth Streaming, Apple HTTP Live Streaming и MP4. Примечание: вы можете доставлять подобный контент, используя CDN Windows Azure или стороннего вендора.

Сценарии разработки с Media Services

В таблицу ниже сведены несколько общих сценариев разработки с использованием Windows Azure Media Services.

Таблица 13.1. Сценарии разработки с Media Services
Сценарий Описание
Создание корпоративных решений Создание корпоративных мультимедиа-приложений, находящихся в облаке. Для этой задачи Windows Azure Media Services предлагает широкий спектр компонентов для реализации различных сценариев – от загрузки мультимедиа до доставки контента.
Создание гибридных решений Windows Azure Media Services может быть интегрирована с существующей локальной инфраструктурой: например, контент может кодироваться локально, после чего загружаться в Windows Azure Media Services для кодирования или конвертирования, после чего распространяться с использованием CDN. Windows Azure Media Services может быть вызван с помощью стандартных REST API для интеграции со внешними приложениями и сервисами.
Поддержка облака для мультимедиа-плееров Существуют средства разработки для iOS, Android и Windows-устройств.

Необходимо уточнить, что на данный момент Windows Azure Media Services поддерживает только ключевой сценарий VOD (Video-On-Demand), то есть сценарий загрузки контента, дальнейшего его конвертирования и доставки по точкам доставки. Например, контент может быть конвертирован в MP4/H.264 с использованием Smooth Streaming, Apple HTTP Live Streaming (HLS).

Термины Windows Azure Media Services

Asset

Ключевой термин, обозначающий сущность, содержащую информацию о контенте. Может состоять из одного или нескольких файлов, которые необходимо обработать – например, аудио, видео и т.д.

File

Файлы, хранящие контент для обработки, размещаются в хранилище блобов Windows Azure. Всегда ассоциируются с соответствующими ассетами.

Job

Работа – это сущность, которая отображает любую единицу работы, которая должна быть выполнена для обработки ассетов и файлов. Содержит набор задач (tasks).

Task

Операция, которую необходимо произвести над ассетом или файлом. Содержится в работе.

Locator

Запись, которая содержит URL. Используется для предоставления временного доступа к ассету. Работает в связке с политиками доступа.

Access Policies

Политики доступа используются для определения прав на ассет или файл (r/w/d/list/none) и временного промежутка, в пределах которого эти права работают.

Job Template

Шаблоны работ используются для сохранения периодически выполняемых работ.

Content Key

Ключи контента используются в процессе шифрования ассетов.

Task Template

Шаблоны задач используются для сохранения периодически выполняемых задач.

Ingestion

Процесс помещения ассетов в сервис Windows Azure Media Services – загрузка файлов в блобы, шифрование.

Использование Windows Azure Media Services

Регистрация Windows Azure Media Services, который используется для хранения, шифрования, управления и других задач управления контентом, происходит с помощью портала управления Windows Azure. Во время создания аккаунта Windows Azure Media Services происходит также создание аккаунта хранилища в том же регионе, где и аккаунт самого сервиса.

На портале управления Windows Azure необходимо нажать NEW | MEDIA SERVICES | QUICK CREATE и ввести данные в соответствующие поля.

Создание Windows Azure Media Services

Рис. 13.1. Создание Windows Azure Media Services

Создадим новый проект C# Console Application и добавим в него ссылку на сборку System.Configuration. Добавим также ссылки на сборки Windows Azure SDK for .NET.(Microsoft.WindowsAzure.StorageClient.dll), Windows Azure Media Services SDK for .NET(Microsoft.WindowsAzure.MediaServices.Client.dll) и WCF Data Services 5.0 for OData V3(Microsoft.Data.OData.dll), используя Nuget-пакет windowsazure.mediaservices: для этого выберем TOOLS -> Library Package Manager -> Package Manager Console. В консоли введем Install-Package [package name] и нажмем Enter (в данном случае: Install-Package windowsazure.mediaservices.)

Добавим в файл app.config секцию Settings, и укажем значения имени и ключа аккаунта Windows Azure Media Services, которые должны быть записаны во время настройки аккаунта. В Visual Studio 2012 файл App.config добавляется автоматически. В Visual Studio 2010 необходимо создать файл вручную.

<configuration>
  . . . 
  <appSettings>
    <add key="accountName" value="Add-Media-Services-Account-Name" />
    <add key="accountKey" value="Add-Media-Services-Account-Key" />
  </appSettings>
</configuration>

Создадим новую директорию supportFiles на локальном диске. В ней будут храниться файлы для обработки. Добавим следующий код. Значение _supportFilespath должно совпадать с путем созданной ранее папки.

private static readonly string _supportFiles =
            Path.GetFullPath(@"../..\supportFiles");
private static readonly string _singleInputFilePath =
    Path.GetFullPath(_supportFiles + @"\multifile\interview2.wmv");
private static readonly string _outputFilesFolder =
Path.GetFullPath(_supportFiles + @"\outputfiles");

Добавим код, получающий настройки из файла настроек App.config.

private static readonly string _accountKey = ConfigurationManager.AppSettings["accountKey"];
private static readonly string _accountName = ConfigurationManager.AppSettings["accountName"];

Добавим код, создающий статическую ссылку на контекст.

// Контекст сервиса.
private static CloudMediaContext _context = null;

Контекст Media Services является объектом, содержащим все основные объекты и коллекции, использующиеся для доступа к Media Services, включая ссылки на такие важные коллекции, как коллекции работ (jobs), ассетов (assets), файлов (files), политик доступа, локаторов (locators) и прочего. Для того, чтобы программно использовать Media Services, необходимо получить и использовать контекст.

Добавим в файл Program.cs в метод Main код, который будет использоваться для получения имени и ключа аккаунта из файла app.config для создания контекста.

_context = new CloudMediaContext(_accountName, _accountKey);

Код, который будет рассмотрен далее, делает следующее:

  1. Создает пустой ассет. При создании ассета возможно указать три различных опции для его шифрования:

    AssetCreationOptions.None: без шифрования

    AssetCreationOptions.CommonEncryptionProtected: для файлов Common Encryption Protected (CENC). Пример: набор файлов, которые уже зашифрованы PlayReady.

    AssetCreationOptions.StorageEncrypted: шифрование хранилища. Зашифровывает файл перед его загрузкой в хранилище Azure.

  2. Создает экземпляр AssetFile, который ассоциируется с ассетом.
  3. Создает экземпляр AccessPolicy, определяющий набор разрешений на доступ к ассету и время их действия.
  4. Создает экземпляр Locator, который предоставляет доступ к ассету.
  5. Загружает файл в Media Services. Процесс создания и загрузки называется "поглощением ассета" (ingesting asset).

Добавим в класс следующие методы.

static private IAsset CreateEmptyAsset(string assetName, AssetCreationOptions assetCreationOptions)
{
    var asset = _context.Assets.Create(assetName, assetCreationOptions);

    Console.WriteLine("Asset name: " + asset.Name);
    Console.WriteLine("Time created: " + asset.Created.Date.ToString());

    return asset;
}

static public IAsset CreateAssetAndUploadSingleFile(AssetCreationOptions assetCreationOptions, string singleFilePath)
{
    var assetName = "UploadSingleFile_" + DateTime.UtcNow.ToString();
    var asset = CreateEmptyAsset(assetName, assetCreationOptions);

    var fileName = Path.GetFileName(singleFilePath);

    var assetFile = asset.AssetFiles.Create(fileName);

    Console.WriteLine("Created assetFile {0}", assetFile.Name);

    var accessPolicy = _context.AccessPolicies.Create(assetName, TimeSpan.FromDays(3), 
AccessPermissions.Write | AccessPermissions.List);

    var locator = _context.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy);

    Console.WriteLine("Upload {0}", assetFile.Name);

    assetFile.Upload(singleFilePath);
    Console.WriteLine("Done uploading of {0} using Upload()", assetFile.Name);

    locator.Delete();
    accessPolicy.Delete();

    return asset;
}

Добавим в метод Main после context = new CloudMediaContext(accountName, _accountKey); следующий код:

IAsset asset = CreateAssetAndUploadSingleFile(AssetCreationOptions.None, _singleInputFilePath)
Руслан Муравьев
Руслан Муравьев

Сайт dreamspark пишет что код истек :(

Andriy Zymenko
Andriy Zymenko

Этот курс требует оновления https://portal.azure.com/#create/hub здесь нет пункта Web Site в разделе Compute. К тому же для создание трубуется подписка

Абакар Сотавов
Абакар Сотавов
Россия, Санкт-Петербург
Ivan Stefanov
Ivan Stefanov
Болгария