Сайт dreamspark пишет что код истек :( |
Media Services
Реализация медиа-сценариев с 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.
Сценарий | Описание |
---|---|
Создание корпоративных решений | Создание корпоративных мультимедиа-приложений, находящихся в облаке. Для этой задачи 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 и ввести данные в соответствующие поля.
Создадим новый проект 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);
Код, который будет рассмотрен далее, делает следующее:
- Создает пустой ассет. При создании ассета возможно указать три различных опции для его шифрования:
AssetCreationOptions.None: без шифрования
AssetCreationOptions.CommonEncryptionProtected: для файлов Common Encryption Protected (CENC). Пример: набор файлов, которые уже зашифрованы PlayReady.
AssetCreationOptions.StorageEncrypted: шифрование хранилища. Зашифровывает файл перед его загрузкой в хранилище Azure.
- Создает экземпляр AssetFile, который ассоциируется с ассетом.
- Создает экземпляр AccessPolicy, определяющий набор разрешений на доступ к ассету и время их действия.
- Создает экземпляр Locator, который предоставляет доступ к ассету.
- Загружает файл в 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)