Экспорт (0) Печать
Развернуть все

Использование ресурсов с API REST служб мультимедиа

Обновлено: Август 2014 г.

Использование ресурсов в Microsoft Azure Media Services с помощью API REST включает несколько шагов. Для некоторых действий, например шифрования ресурса, перед взаимодействием с Службы Media Services необходимо выполнить несколько шагов. Однако большинство действий, таких как создание самого ресурса, просты и требуют только основных знаний принципов REST, OData v3 и, в случае примеров с кодом, JSON.

Основной рабочий процесс использования ресурсов делится на следующие разделы.

Сведения о массовом использовании ресурсов см. в разделе Прием ресурсов с помощью интерфейса API REST.

noteПримечание
При создании URL-адресов для потоковой передачи содержимого (например, http://{WAMSAccount}.origin.mediaservices.windows.net/{GUID}/{IAssetFile.Name}/streamingParameters) службы мультимедиа используют значение свойства IAssetFile.Name. По этой причине кодирование в последовательность с процентом запрещено. Значение свойства имени не может содержать следующие символы, сохраненные для кодирования в последовательность с процентом: !*'();:@&=+$,/?%#[]". Также может быть только один символ "." для расширения имени файла.

ImportantВажно!
При работе с API REST служб мультимедиа следует руководствоваться следующими соображениями.

Ресурс — это контейнер для нескольких типов или наборов объектов в Службы Media Services, включающий видео, аудио, изображения, коллекции эскизов, текстовые дорожки и файлы со скрытыми титрами. Для создания ресурса в API REST необходимо отправить запрос POST в Службы Media Services и поместить все сведения о свойствах ресурса в текст запроса.

В следующем примере показано, как создать ресурс с понятным именем "NewJSONAsset".

POST https://media.windows.net/API/Assets HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1335602357&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=XQs5T%2fEfdO39%2f0Z9%2fBBkA12%2bbUUEY21YyefWXuRYZlY%3d
Host: media.windows.net
Content-Length: 27
Expect: 100-continue

{ "Name" : "NewJSONAsset" }

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 1353
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')
Server: Microsoft-IIS/7.5
x-ms-request-id: 7739638a-da3a-4a6e-ad51-ea0bf87f02ad
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 27 Apr 2012 22:39:18 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')","uri":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.Asset","actions":{"https://media.windows.net/api/$metadata#WindowsAzureMediaServices.Publish":[{"title":"Publish","target":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')/Publish"}]}},"Locators":{"__deferred":{"uri":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')/Locators"}},"ContentKeys":{"__deferred":{"uri":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')/ContentKeys"}},"Files":{"__deferred":{"uri":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')/Files"}},"ParentAssets":{"__deferred":{"uri":"https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaa5bfdd9-900a-431d-aea7-fffb0b24f36b')/ParentAssets"}},"Id":"nb:cid:UUID:aa5bfdd9-900a-431d-aea7-fffb0b24f36b","State":0,"Created":"\/Date(1335566358610)\/","LastModified":"\/Date(1335566358610)\/","AlternateId":null,"Name":"NewJSONAsset","Options":0}}

Дополнительные сведения о свойствах сущностей ресурсов и операциях см. в разделе Asset.

Шифрование ресурсов — это необязательный шаг. Однако рекомендуется шифровать свои активы. В Службы Media Services можно использовать следующее: шифрование хранилища файлов ресурсов или общее шифрование для управления файлами, защищенными DRM (например, PlayReady). Можно также использовать шифрование конфигурации для шифрования данных конфигурации кодирования, которые могут содержать конфиденциальные предварительно заданные сведения. Для каждого типа шифрования необходим ключ содержимого AES, сертификат X.509, использующийся для шифрования ключа содержимого, и соответствующие свойства в объектах Asset, ContentKey и File. Длина ключа содержимого зависит от типа ключа содержимого. Для шифрования хранилища и конфигурации необходимы 256-разрядные ключи, тогда как для обычного шифрования нужен 128-разрядный ключ.

Ниже описаны общие шаги для шифрования файлов, отправляемых в хранилище больших двоичных объектов.

  1. Создайте случайный 256-разрядный (32 байта) ключ AES. Он будет являться ключом содержимого для ресурса, что означает, что все файлы, связанные с этим ресурсом, должны будут использовать один ключ содержимого во время расшифровки.

  2. Создайте случайное значение 64-разрядного вектора инициализации для каждого файла (значение вектора инициализации должно быть уникальным для каждого файла в ресурсе).

  3. Создайте сущность ресурса, задав свойство параметров "1", если хотите, чтобы файлы ресурсов шифровались после отправки (использование). Задайте значение параметров "2", если вы используете обычное шифрование.

    noteПримечание
    Этот шаг можно выполнить до или после выполнения шагов 1 и 2.

  4. Вызовите методы GetProtectionKeyId и GetProtectionKey, чтобы получить правильный сертификат X.509, который должен использоваться для шифрования ключа содержимого.

  5. Зашифруйте ключ содержимого с помощью открытого ключа сертификата X.509.

    Также создайте значение контрольной суммы (на основе алгоритма контрольной суммы ключа AES PlayReady), подсчитанный с помощью идентификатора ключа и ключа содержимого. Дополнительные сведения см. в разделе “Алгоритм контрольной суммы ключа AES PlayReady” документа Объект заголовка PlayReady, расположенного здесь.

    В следующем примере .NET контрольная сумма подсчитывается с помощью идентификатора части ключа GUID и незащищенного ключа содержимого.

    public static string CalculateChecksum(byte[] contentKey, Guid keyId)
    {
        byte[] array = null;
        using (AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider())
        {
            aesCryptoServiceProvider.Mode = CipherMode.ECB;
            aesCryptoServiceProvider.Key = contentKey;
            aesCryptoServiceProvider.Padding = PaddingMode.None;
            ICryptoTransform cryptoTransform = aesCryptoServiceProvider.CreateEncryptor();
            array = new byte[16];
            cryptoTransform.TransformBlock(keyId.ToByteArray(), 0, 16, array, 0);
        }
        byte[] array2 = new byte[8];
        Array.Copy(array, array2, 8);
        return Convert.ToBase64String(array2);
    }
    
  6. Создайте сущность ContentKey и задайте свойствам EncryptedContentKey (преобразованным в строку в зашифрованном формате base64), ProtectionKeyId, ProtectionKeyType, ContentKeyType и контрольной суммы значения, полученные в предыдущих шагах.

  7. Свяжите сущность ContentKey с сущностью ресурса с помощью операции $links.

  8. После отправки файла (описанного в следующем разделе) вызовите метод CreateFileInfos и обновите свойства шифрования в сущности файла, используя значения, созданные в предыдущих шагах.

ImportantВажно!
Примеры, определяющие ключи шифрования, не указываются в этом разделе. Предоставляются только примеры, в которых показано, как взаимодействовать со службами мультимедиа.

В следующем примере показано, как вернуть ProtectionKeyId, то есть отпечаток сертификата, для сертификата, который необходимо использовать при шифровании ключа содержимого. Выполните это действие, чтобы убедиться, что на вашем компьютере уже есть соответствующий сертификат.

GET https://media.windows.net/API/GetProtectionKeyId?contentKeyType=1 HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1335862109&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=ErOpftkPKjzX3bdYcEUZTK9yAwKIDc20y0kxEBZLvCk%3d
Host: media.windows.net

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 71
Content-Type: application/json;odata=verbose;charset=utf-8
Server: Microsoft-IIS/7.5
x-ms-request-id: 7940b777-4c95-4c68-9817-cd14d51ae2c4
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 30 Apr 2012 22:48:30 GMT

{"d":{"GetProtectionKeyId":"B2FE17BEF56FFCB9A3FC4267D0F2AFE25CD2DE22"}}

В следующем примере показано, как вернуть сертификат X.509 с помощью значения ProtectionKeyId, полученного в предыдущем шаге.

GET https://media.windows.net/API/GetProtectionKey?ProtectionKeyId='B2FE17BEF56FFCB9A3FC4267D0F2AFE25CD2DE22' HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1335935139&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=s2dI0Ulkutx%2b5pTL0QGRnPQEv1Ogwz%2ff2SHRWK8bmyw%3d
Host: media.windows.net

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 1061
Content-Type: application/json;odata=verbose;charset=utf-8
Server: Microsoft-IIS/7.5
x-ms-request-id: 1a84817d-9967-4adc-92d9-5980b2cd5d45
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 01 May 2012 19:05:44 GMT

{"d":{"GetProtectionKey":"MIIDAjCCAe6gAwIBAgIQVq/2JBMjhoNDGQ93Rh6lhDAJBgUrDgMCHQUAMBkxFzAVBgNVBAMTDm5pbWJ1c2RldmNlcnQxMB4XDTExMDUwNDE4NDczOVoXDTM5MTIzMTIzNTk1OVowGTEXMBUGA1UEAxMObmltYnVzZGV2Y2VydDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCd/070wkNh/UuXZNVIkc8uflSMm+Qy6RDoAwdnl3fispkbe28YbB6AMuENKq9UrfUigGf51+MKnLaojxwwpwS+kdrRh+qQ7LBM0tjQ4bK1Iq80Q8dyQLpqqo6v16NzAFVeE4jW5205Z93h8m3EatQyyCGFN38BF9iIICeiPEjEEq4utDzeHgQT82enAdkqZ5mxRtOY3u3yT9O9HbS+Ghkobgg+kdbHpWlhSwSEKh94ASLeJvazL154OvIqfgZ7DaKQ11uAFqx237rNdX+w7JYHUQ4AZK2ed5xXTcXMcerUtjJZ4jiky83WaP6wCMcaA4R+76x3q8B91Rs3LS9yyqmRAgMBAAGjTjBMMEoGA1UdAQRDMEGAEIZT7vc/79JcQWslkhGbOCahGzAZMRcwFQYDVQQDEw5uaW1idXNkZXZjZXJ0MYIQVq/2JBMjhoNDGQ93Rh6lhDAJBgUrDgMCHQUAA4IBAQAcMOz4ScCP8F0VRkPjWPWDrLwD1rj5lwOTXvEL8tR23nrifkWgFQgONzMndp+FIgtoMLfb+6Cs0ZkslL/8cJ3zYWx+e1pSZydV3Ke9oSOVLWbWBtQgniBdb/b+/ur53NEkNxWzkTcM9UCg/pcLs9sKja2Kz8R12FUaf+2fOUBf2m0oRM9cyvoeBiI2AHX6Uo2WXpJixa8ofydB94oAbt/04lDMAHryrD1BAJR76z3gB6PLb4L12LDqeXjAIc6hgtrNsYBJMQAv4KDHcmHW1601QGuQsy+V4I35Y7bOQUNyTZRlUpLu0E/RRVKjyyMBDTE0xXABt4w23nNyczpH/4U3"}}
noteПримечание
Сертификат в тексте сообщения указан в формате base64 и должен быть расшифрован перед использованием.

После возвращения сертификата X.509 и использования открытого ключа для шифрования ключа содержимого создайте сущность ContentKey и задайте соответствующие значения свойств.

В следующем примере показано, как создать ContentKey с ContentKeyType для шифрования хранилища ("1") и ProtectionKeyType "0", чтобы указать, что идентификатор ключа защиты является отпечатком сертификата X.509. Также необходимо определить идентификатор или идентификатор ключа сущности ContentKey. Значение должно быть значением GUID и следовать схеме идентификаторов содержимого nb:kid:UUID:GUID. Дополнительные сведения о схемах идентификаторов содержимого см. в разделе Identify Azure Media Services Entities, а дополнительные сведения о параметрах ContentKey см. в разделе Сущность ContentKey.

POST https://media.windows.net/API/ContentKeys HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1336404839&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=JtpNaFsZWEq9WHl3zMcPbvxBg3HyfTRo%2fy7WEqNDFpw%3d
Host: media.windows.net
Content-Length: 223
Expect: 100-continue

{"Id" : "nb:kid:UUID:C02BB13C-94C3-426B-9DE3-1E331584EF7A", "ContentKeyType" : 1, "EncryptedContentKey" : "encrypted key value",  "ProtectionKeyId" : "B2FE17BEF56FFCB9A3FC4267D0F2AFE25CD2DE22", "ProtectionKeyType" : 0, "Checksum" : "checksum value"}

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 614
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/ContentKeys('nb%3Akid%3AUUID%3Ac02bb13c-94c3-426b-9de3-1e331584ef7a')
Server: Microsoft-IIS/7.5
x-ms-request-id: 1d990cfc-acf1-4838-9f6e-c9308e51279e
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 07 May 2012 05:34:01 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/ContentKeys('nb%3Akid%3AUUID%3Ac02bb13c-94c3-426b-9de3-1e331584ef7a')","uri":"https://media.windows.net/api/ContentKeys('nb%3Akid%3AUUID%3Ac02bb13c-94c3-426b-9de3-1e331584ef7a')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.ContentKey"},"Id":"nb:kid:UUID:c02bb13c-94c3-426b-9de3-1e331584ef7a","Created":"\/Date(1336368841597)\/","LastModified":"\/Date(1336368841597)\/","ContentKeyType":1,"EncryptedContentKey":"encrypted key value","Name":null,"ProtectionKeyId":"B2FE17BEF56FFCB9A3FC4267D0F2AFE25CD2DE22","ProtectionKeyType":0,"Checksum":"checksum value"}}

После создания ContentKey свяжите его с ресурсом, используя операцию $links, как показано в следующем примере:

POST https://media.windows.net/API/Assets('nb:cid:UUID:2973c0de-404e-4f21-83a3-efd6910a532b')/$links/ContentKeys HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fmediaservices.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1336404839&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=JtpNaFsZWEq9WHl3zMcPbvxBg3HyfTRo%2fy7WEqNDFpw%3d
Host: media.windows.net
Content-Length: 120

{"uri":"https://media.windows.net/api/ContentKeys('nb%3Akid%3AUUID%3Ac02bb13c-94c3-426b-9de3-1e331584ef7a')" }

При успешном выполнении возвращается код ответа 204 без текста сообщения.

Для отправки файлов в хранилище больших двоичных объектов необходимо задать соответствующие разрешения на запись в ресурсе, получить URL-адрес, на который отправляется файл, и выполнить непосредственную отправку с помощью API REST хранилища Azure.

Перед отправкой файлов в хранилище больших двоичных объектов задайте ресурсу права политики для записи. Для этого опубликуйте HTTP-запрос в набор сущностей AccessPolicies. После создания определите значение DurationInMinutes, иначе вернется сообщение о внутренней ошибке сервера (500). Дополнительные сведения об AccessPolicies см. в разделе AccessPolicy.

В следующем примере показано, как создать AccessPolicy:

POST https://media.windows.net/API/AccessPolicies HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1335956356&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=1B1ysfYRcpI%2fQY9SSNIBBVBpgc67j4R2yXD7BCxs8D8%3d
Host: media.windows.net
Content-Length: 76
Expect: 100-continue

{"Name": "NewUploadPolicy", "DurationInMinutes" : "300", "Permissions" : 2 }

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 526
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/AccessPolicies('nb%3Apid%3AUUID%3A94763883-537a-41c0-a097-4e3f755bbeab')
Server: Microsoft-IIS/7.5
x-ms-request-id: 0a262141-e539-4fa6-b5d6-80cdf26d3ff6
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 02 May 2012 00:59:30 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/AccessPolicies('nb%3Apid%3AUUID%3A94763883-537a-41c0-a097-4e3f755bbeab')","uri":"https://media.windows.net/api/AccessPolicies('nb%3Apid%3AUUID%3A94763883-537a-41c0-a097-4e3f755bbeab')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.AccessPolicy"},"Id":"nb:pid:UUID:94763883-537a-41c0-a097-4e3f755bbeab","Created":"\/Date(1335920371136)\/","LastModified":"\/Date(1335920371136)\/","Name":"NewUploadPolicy","DurationInMinutes":300,"Permissions":2}}

После создания параметра AccessPolicy свяжите его с сущностью указателя, который предоставит URL-адрес для отправки файла в хранилище больших двоичных объектов.

Чтобы получить непосредственный URL-адрес отправки, создайте сущность указателя. Указатели определяют время начала и тип конечной точки подключения для клиентов, которые хотят получить доступ к файлам в ресурсе. Можно создать несколько объектов указателя для заданного параметра AccessPolicy и пары ресурсов, чтобы обрабатывать разные запросы и требования клиентов. Каждый из этих указателей использует значения StartTime и DurationInMinutes параметра AccessPolicy, чтобы определить количество времени, в течение которого может использоваться URL-адрес. Дополнительные сведения см. в Locator.

noteПримечание
С заданным ресурсом не может быть связано больше пяти уникальных указателей одновременно. Дополнительные сведения см. в Locator.

TipСовет
Если необходимо передать файлы немедленно, установите значение StartTime на пять минут до текущего времени. Это необходимо потому, что между компьютером клиента и Службы Media Services может существовать рассинхронизация часов. Также значение StartTime должно быть указано в следующем формате DateTime: YYYY-MM-DDTHH:mm:ssZ (например, "2014-05-23T17:53:50Z").

noteПримечание
До возможности использования после создания локатора может возникнуть задержка на 30-40 секунд. Эта проблема применима к URL-адресу SAS и исходным указателям.

В следующем примере показано, как создать указатель URL-адреса SAS, как определено в свойстве Type в тексте запроса. В возвращенном свойстве Path содержится URL-адрес, который необходимо использовать для отправки файла.

POST https://media.windows.net/API/Locators HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1335956356&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=1B1ysfYRcpI%2fQY9SSNIBBVBpgc67j4R2yXD7BCxs8D8%3d
Host: media.windows.net
Content-Length: 183
Expect: 100-continue

{"AccessPolicyId": "nb:pid:UUID:94763883-537a-41c0-a097-4e3f755bbeab", "AssetId" : "nb:cid:UUID:cab358e0-deaa-4c4f-9a9f-35687b54b0aa", "StartTime" : "2014-05-17T16:45:53", "Type" : 1 }

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 1148
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8002bf3c-a215-4602-b4a4-2aac367f709e')
Server: Microsoft-IIS/7.5
x-ms-request-id: 6937fd51-70ad-4d3d-8138-991863906b43
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 02 May 2012 00:59:30 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8002bf3c-a215-4602-b4a4-2aac367f709e')","uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8002bf3c-a215-4602-b4a4-2aac367f709e')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.Locator"},"AccessPolicy":{"__deferred":{"uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8002bf3c-a215-4602-b4a4-2aac367f709e')/AccessPolicy"}},"Asset":{"__deferred":{"uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8002bf3c-a215-4602-b4a4-2aac367f709e')/Asset"}},"Id":"nb:lid:UUID:8002bf3c-a215-4602-b4a4-2aac367f709e","ExpirationDateTime":"\/Date(1335938672000)\/","Type":1,"Path":"https://yourstorageaccount.blob.core.windows.net/asset-0a5ed405-ac50-45c7-a3bf-04d20eca17ad?st=2012-05-02T01%3A04%3A32Z&se=2012-05-02T06%3A04%3A32Z&sr=c&si=8002bf3c-a215-4602-b4a4-2aac367f709e&sig=r9IVlPDi4TfaCnG8fqpZUwr%2F3pMPsdFyVVYkwe6GKg0%3D","AccessPolicyId":"nb:pid:UUID:94763883-537a-41c0-a097-4e3f755bbeab","AssetId":"nb:cid:UUID:cab358e0-deaa-4c4f-9a9f-35687b54b0aa","StartTime":"\/Date(1335920672000)\/"}}

После указания параметров AccessPolicy и указателя в контейнер хранилища больших двоичных объектов Azure отправляется действительный файл с помощью API REST хранилища Azure. Выполнить отправку можно страницами или в больших двоичных объектах блоков. Дополнительные сведения об отправке больших двоичных объектов см. в разделе Справочник API REST служб хранилища Azure.

В следующем примере показано, как отправить большой двоичный объект блока из примеров мультимедиа SDK в контейнер ресурсов.

noteПримечание
Необходимо добавить имя файла для файла, который требуется отправить в значение пути указателя, полученное в предыдущем разделе. В этом примере имя файла — samplevid.wmv.

PUT https://yourstorageaccount.blob.core.windows.net/asset-9cd47271-9798-446f-b91d-22b0d228cc17/samplevid.wmv?st=2012-05-08T19%3A32%3A01Z&se=2012-05-09T00%3A32%3A01Z&sr=c&si=3e21040c-95d8-48b0-aee5-171d9621105d&sig=%2FSS6c%2FOELEtDfqi5TT7hFLYut38IKrV6iiQEhV2t52s%3D HTTP/1.1
Content-Type: application/octet-stream
x-ms-version: 2011-08-18
x-ms-date: 2011-01-17
x-ms-blob-type: BlockBlob
Host: yourstorageaccount.blob.core.windows.net
Content-Length: 4045744
Expect: 100-continue

wsh?1hfN??C?V??,?-?sd??:?j?dCfT?,?6????8?f?p??o??"?????6C??q?????KbP???w*????i
[Rest of binary data truncated for readability]

При успешном выполнении возвращается следующий ответ:

HTTP/1.1 201 Created
Transfer-Encoding: chunked
Content-MD5: 2Lzhghji5MH0CZ+EUidXyA==
Last-Modified: Tue, 08 May 2012 19:37:16 GMT
ETag: "0x8CEFB691BBEDD64"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 4902799b-568f-49a8-893c-77fbee74ce18
x-ms-version: 2011-08-18
Date: Tue, 08 May 2012 19:37:15 GMT

0

После отправки файла необходимо удалить указатель отправки, чтобы отозвать права на запись в контейнер хранилища больших двоичных объектов ресурса.

DELETE https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A81e5bd32-46ad-4d66-b7b8-50008ee4aec5') HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1336547485&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=ISzXspEIbgWifYYXqiPK1vo3%2bDHnTsX85umNxRjD3kQ%3d
Host: media.windows.net
Content-Length: 0

При успешном выполнении возвращается код ответа 204 без текста сообщения.

После отправки файла создайте для него сущность файла. В этой сущности содержатся важные метаданные о вашем файле, и ее можно создать, вызвав метод CreateFileInfos, как показано в следующем примере.

GET https://media.windows.net/api/CreateFileInfos?assetid='nb%3Acid%3AUUID%3Ac80d312d-7cb1-44aa-bb23-2c35d10c44bd' HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.5
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1336547485&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=ISzXspEIbgWifYYXqiPK1vo3%2bDHnTsX85umNxRjD3kQ%3d
Host: media.windows.net
Content-Length: 0

При успешном выполнении возвращается код ответа 204 без текста сообщения.

Если вы шифровали какие-либо файлы, необходимо обновить свойства в сущности файла в соответствии с таблицей ниже. Пример обновления сущности см. в разделе Управление ресурсами с помощью API REST служб мультимедиа. Дополнительные сведения о свойствах сущности файла см. в разделе AssetFile.

 

Свойство Значение Тип шифрования

IsEncrypted

Для шифрования хранилища и обычного шифрования необходимо задать значение "true".

Шифрование хранилища, обычное шифрование

EncryptionKeyId

Зашифрованный идентификатор ContentKey.

Хранилище

EncryptionScheme

Для шифрования хранилища необходимо задать значение "StorageEncryption". Для обычного шифрования необходимо задать значение "CommonEncryption".

Шифрование хранилища, обычное шифрование

EncryptionVersion

Должно быть установлено значение "1.0".

Шифрование хранилища, обычное шифрование

InitializationVector

Значение вектора инициализации было определено ранее.

Хранилище

При успешном выполнении возвращается код ответа 204 без текста сообщения.

См. также

Показ:
© 2014 Microsoft