Esporta (0) Stampa
Espandi tutto

Inserimento di asset con l'API REST di Servizi multimediali

Aggiornamento: agosto 2014

L'inserimento degli asset in Servizi multimediali di Microsoft Azure con l'API REST prevede diversi passaggi. Per alcune azioni, ad esempio la crittografia di un asset, sono necessari diversi passaggi prima di poter interagire con Servizi multimediali. Tuttavia la maggior parte delle azioni, come la creazione dello stesso asset, è semplice e richiede solo una conoscenza di base dei principi REST, di OData v3 e, nel caso degli esempi di codice, di JSON.

Il flusso di lavoro di base per l'inserimento degli asset si divide nelle seguenti sezioni:

Per informazioni sull'inserimento degli asset in blocco, vedere Inserimento di asset in blocco con l'API REST.

noteNota
Servizi multimediali usa il valore della proprietà IAssetFile.Name quando compila gli URL per i contenuti in streaming (ad esempio, http://{WAMSAccount}.origin.mediaservices.windows.net/{GUID}/{IAssetFile.Name}/streamingParameters). Per questo motivo, la codifica percentuale non è consentita. Il valore della proprietà relativa al nome non può contenere i seguenti caratteri riservati alla codifica percentuale: !*'();:@&=+$,/?%#[]". Inoltre, l'estensione del nome file può contenere solo un ‘.’.

ImportantImportante
Quando si usa l'API REST di Servizi multimediali, tenere presente quanto segue:

Un asset è un contenitore per diversi tipi di set di oggetti in Servizi multimediali, inclusi video, audio, immagini, raccolte di anteprime, tracce di testo e file di didascalia chiusi. Nell'API REST, la creazione di un asset richiede l'invio di una richiesta POST a Servizi multimediali e l'inserimento di tutte le informazioni sulle proprietà relative all'asset nel corpo della richiesta.

Nel seguente esempio viene spiegato come creare un asset con il nome descrittivo "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" }

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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

Per altre informazioni sulle operazioni e sulle proprietà dell'entità Asset, vedere Asset.

La crittografia degli asset è un passaggio facoltativo, ma consigliato. In Servizi multimediali, è possibile usare: la crittografia di archiviazione dei file dell'asset o la crittografia comune per la gestione dei file protetti con DRM (ad esempio, PlayReady). È anche possibile usare la crittografia di configurazione per crittografare i dati di configurazione della codifica che possono contenere informazioni sensibili relative al set di impostazioni. Ogni tipo di crittografia richiede una chiave simmetrica AES, un certificato X.509 usato per crittografare la chiave simmetrica e le proprietà corrispondenti da impostare nelle entità Asset, ContentKey e File. Le lunghezze delle chiavi simmetriche dipendono dal tipo di chiave. La crittografia di archiviazione e di configurazione richiede chiavi a 256 bit, mentre la crittografia comune richiede una chiave a 128 bit.

Di seguito sono descritti i passaggi generali per la crittografia dei file caricati nell'archiviazione BLOB:

  1. Generare in modo casuale una chiave AES a 256 bit (32 byte). Questa sarà la chiave simmetrica dell'asset: tutti i file associati all'asset dovranno usare la stessa chiave simmetrica durante la decrittografia.

  2. Generare in modo casuale un valore IV (vettore di inizializzazione) a 64 bit per ciascun file, assicurandosi che il valore IV sia univoco per ogni file nell'asset.

  3. Creare un'entità Asset con la proprietà relativa alle opzioni impostata su "1" per eseguire la crittografia dei file dell'asset dopo il caricamento (inserimento). Impostare su "2" le opzioni se si usa la crittografia comune.

    noteNota
    Questo passaggio può essere eseguito prima o dopo i passaggi 1 e 2.

  4. Chiamare i metodi GetProtectionKeyId e GetProtectionKey per ottenere il certificato X.509 corretto da usare per la crittografia della chiave simmetrica.

  5. Crittografare la chiave simmetrica con la chiave pubblica del certificato X.509.

    Creare anche un valore checksum (basato sull'algoritmo checksum della chiave AES PlayReady) calcolato usando l'identificatore chiave e la chiave simmetrica. Per altre informazioni, vedere la sezione sull'algoritmo checksum della chiave AES PlayReady nel documento relativo all'oggetto intestazione di PlayReady disponibile qui.

    Nel seguente esempio .NET viene calcolato il checksum usando la parte GUID dell'identificatore chiave e la chiave simmetrica non crittografata.

    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. Creare un entità ContentKey e impostare le proprietà EncryptedContentKey (convertita in una stringa con codifica Base 64), ProtectionKeyId, ProtectionKeyType, ContentKeyType e Checksum con i valori ricevuti nei passaggi precedenti.

  7. Associare l'entità ContentKey all'entità Asset con l'operazione $links.

  8. Dopo aver caricato il file (descritto nella sezione successiva), chiamare CreateFileInfos e aggiornare le proprietà di crittografia nell'entità File con i valori creati nei passaggi precedenti.

ImportantImportante
Gli esempi di definizione delle chiavi di crittografia sono stati omessi in questo argomento. Vengono forniti solo gli esempi che spiegano come interagire con Servizi multimediali.

Nel seguente esempio viene spiegato come recuperare ProtectionKeyId, un'identificazione personale del certificato da usare per la crittografia della chiave simmetrica. Eseguire questo passaggio per verificare di disporre già del certificato appropriato nel computer.

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

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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

Nel seguente esempio viene spiegato come recuperare il certificato X.509 usando ProtectionKeyId ricevuto nel passaggio precedente.

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

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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"}}
noteNota
Il certificato nel corpo del messaggio ha la codifica Base 64 e deve essere decodificato prima dell'uso.

Dopo aver recuperato il certificato X.509 e usato la chiave pubblica per crittografare la chiave simmetrica, creare un'entità ContentKey e impostare i valori delle proprietà di conseguenza.

Nel seguente esempio viene spiegato come creare ContentKey con ContentKeyType impostato per la crittografia di archiviazione ("1") e ProtectionKeyType impostato su "0" per indicare che l'ID della chiave di protezione è l'identificazione personale del certificato X.509. Inoltre, è necessario definire l'ID o l'ID chiave dell'entità ContentKey. Questo valore deve essere un valore GUID e seguire lo schema degli identificatori contenuto nb:kid:UUID:GUID. Per altre informazioni sugli schemi degli identificatori contenuto, vedere Identify Azure Media Services Entities, mentre per altre informazioni su ContentKeys, vedere 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"}

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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

Dopo aver creato ContentKey, associarlo all'asset usando l'operazione $links, come mostrato nel seguente esempio:

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')" }

Se l'operazione viene completata correttamente, viene restituito un codice di risposta 204 senza corpo del messaggio.

Il caricamento di un file nell'archiviazione BLOB richiede l'impostazione delle autorizzazioni di scrittura appropriate nell'asset, il recupero di un URL in cui caricare il file e, infine, l'esecuzione del caricamento effettivo usando le API REST dell'archiviazione di Azure.

Prima di caricare i file nell'archiviazione BLOB, impostare i diritti dei criteri di accesso per la scrittura in un asset. A questo scopo, inviare una richiesta HTTP al set di entità AccessPolicies. Definire un valore DurationInMinutes durante la creazione. In caso contrario, si riceverà un messaggio di errore interno del server 500 in risposta. Per altre informazioni su AccessPolicies, vedere AccessPolicy.

Nel seguente esempio viene spiegato come creare 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 }

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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

Una volta creato AccessPolicy, collegarlo a un'entità Locator per ricevere un percorso URL con cui caricare il file nell'archiviazione BLOB.

Per ricevere l'URL di caricamento effettivo, creare un'entità Locator. I localizzatori definiscono l'ora di inizio e il tipo di endpoint della connessione per i client che richiedono l'accesso ai file in un asset. È possibile creare più entità Locator per una specifica coppia AccessPolicy e Asset in modo da gestire le diverse richieste ed esigenze dei client. Ogni localizzatore usa i valori StartTime e DurationInMinutes di AccessPolicy per determinare la durata di uso di un URL. Per altre informazioni, vedere Locator.

noteNota
Non è possibile avere più di cinque localizzatori univoci associati a un determinato asset contemporaneamente. Per altre informazioni, vedere Locator.

TipSuggerimento
Se è necessario caricare i file immediatamente, impostare il valore StartTime su cinque minuti prima dell'ora corrente. Potrebbe infatti essere presente una leggera differenza di orario tra il computer client e Servizi multimediali. Inoltre, il formato DateTime del valore StartTime deve essere il seguente: YYYY-MM-DDTHH:mm:ssZ (ad esempio, "2014-05-23T17:53:50Z").

noteNota
Può verificarsi un ritardo di 30-40 secondi tra la creazione di un localizzatore e la relativa disponibilità per l'uso. Questo problema riguarda sia i localizzatori URL SAS che di origine.

Nel seguente esempio viene spiegato come creare un localizzatore URL SAS, come definito dalla proprietà del tipo nel corpo della richiesta. La proprietà del percorso restituita contiene l'URL da usare per caricare il file.

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 }

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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)\/"}}

Una volta impostati AccessPolicy e Locator, il file effettivo viene caricato nel contenitore di archiviazione BLOB di Azure usando le API REST dell'archiviazione di Azure. Il caricamento può essere eseguito in BLOB di pagine o in BLOB in blocchi. Per altre informazioni sul caricamento di BLOB, vedere Informazioni di riferimento sulle API REST dei servizi di archiviazione.

Nel seguente esempio viene spiegato come caricare un BLOB in blocchi dagli esempi multimediali dell'SDK al contenitore di asset.

noteNota
È necessario aggiungere il nome file del file da caricare nel valore del percorso del localizzatore ricevuto nella sezione precedente. In questo esempio, il nome file è 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]

Se l'operazione viene completata correttamente, viene restituita la risposta seguente:

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

Dopo aver caricato il file, eliminare il localizzatore di caricamento per revocare l'accesso in scrittura per il contenitore di archiviazione BLOB dell'asset.

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

Se l'operazione viene completata correttamente, viene restituito un codice di risposta 204 senza corpo del messaggio.

Una volta caricato il file, generare l'entità File corrispondente. Questa entità contiene metadati importati relativi al file e può essere creata chiamando CreateFileInfos, come mostrato nel seguente esempio.

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

Se l'operazione viene completata correttamente, viene restituito un codice di risposta 204 senza corpo del messaggio.

Se sono stati crittografati dei file, è necessario aggiornare le proprietà nell'entità File in base alla tabella seguente. Per un esempio di come aggiornare un'entità, vedere Gestione di asset con l'API REST di Servizi multimediali. Per altre informazioni sulle proprietà dell'entità File, vedere AssetFile.

 

Proprietà Valore Tipo di crittografia

IsEncrypted

Per la crittografia comune e di archiviazione, il valore deve essere impostato su "true".

Archiviazione, comune

EncryptionKeyId

L'ID ContentKey crittografato.

Archiviazione

EncryptionScheme

Per la crittografia di archiviazione, il valore deve essere impostato su "StorageEncryption". Per la crittografia comune, il valore deve essere impostato su "CommonEncryption".

Archiviazione, comune

EncryptionVersion

Il valore deve essere impostato su "1.0."

Archiviazione, comune

InitializationVector

Valore del vettore di inizializzazione definito in precedenza.

Archiviazione

Se l'operazione viene completata correttamente, viene restituito un codice di risposta 204 senza corpo del messaggio.

Vedere anche

Mostra:
© 2014 Microsoft