VENDITE: 1-800-867-1389

Inserimento di asset con l'API REST di Media Services

Aggiornamento: agosto 2014

L'inserimento di asset in Servizi multimediali di Microsoft Azure mediante l'API REST prevede più passaggi. Per alcune azioni, tra cui la crittografia di un asset, è necessario eseguire diversi passaggi prima di interagire con Servizi multimediali. La maggior parte delle azioni, ad esempio la stessa creazione di un'entità Asset, è tuttavia molto 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 di asset è suddiviso nelle seguenti sezioni:

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

noteNota
Media Services utilizza il valore della proprietà IAssetFile.Name durante la compilazione di URL per la riproduzione in flusso di contenuti, ad esempio http://{AccountWAMS}.origin.mediaservices.windows.net/{GUID}/{IAssetFile.Name}/streamingParameters. Per tale motivo, la codifica percentuale non è consentita. Il valore della proprietà Name non può contenere alcuno dei seguenti caratteri riservati per la codifica percentuale: !*'();:@&=+$,/?%#[]". L'estensione del nome di file, inoltre, può essere preceduta da un solo '.' (punto).

ImportantImportante
Quando si usa l'API REST di Servizi multimediali, tenere conto delle seguenti considerazioni:

Un asset è un contenitore per più tipi o insiemi di oggetti in Servizi multimediali, inclusi elementi video, audio, immagini, raccolte di anteprime, tracce di testo e file di sottotitoli codificati. Nell'API REST la creazione di un asset richiede l'invio di una richiesta POST a Servizi multimediali e l'inserimento delle informazioni delle proprietà relative all'asset nel corpo della richiesta.

Nel seguente esempio viene illustrato come creare un asset con il nome descrittivo impostato su "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'esito è positivo, viene restituita la seguente risposta:

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 ulteriori informazioni sulle proprietà e sulle operazioni relative all'entità Asset, vedere Asset.

Nonostante la crittografia degli asset sia un passaggio facoltativo, si consiglia di eseguirlo. In Servizi multimediali è possibile utilizzare: la crittografia di archiviazione dei file dell'asset o la crittografia comune per la gestione dei file protetti tramite DRM, ad esempio, PlayReady. È inoltre possibile utilizzare la crittografia di configurazione per per crittografare i dati di configurazione della codifica che possono contenere informazioni preimpostate riservate. Ogni tipo di crittografia richiede una chiave simmetrica AES, un certificato X.509 utilizzato per crittografare tale chiave e l'impostazione delle proprietà corrispondenti per le entità Asset, ContentKey e File. Le lunghezze delle chiavi simmetriche variano in base al 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 riportati i passaggi generali per crittografare i file da caricare nel contenitore Archiviazione BLOB:

  1. Generare in modo casuale una chiave AES a 256 bit (32 byte). Questa sarà la chiave simmetrica per l'asset, pertanto tutti i file associati a tale asset dovranno utilizzare la stessa chiave simmetrica durante la decrittografia.

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

  3. Creare un'entità Asset con la proprietà Options impostata su "1" se si desidera che i file degli asset vengano crittografati dopo il caricamento (inserimento). Se si utilizza la crittografia comune, impostare la proprietà Options su "2".

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

  4. Chiamare i metodi GetProtectionKeyId e GetProtectionKey per ottenere il certificato X.509 corretto da utilizzare per crittografare la chiave simmetrica.

  5. Crittografare la chiave simmetrica con la chiave pubblica del certificato X.509. Creare inoltre un valore di checksum MD5 basato sulla chiave simmetrica crittografata.

  6. Creare un'entità ContentKey e impostare le proprietà EncryptedContentKey (convertita in una stringa con codifica base64), ProtectionKeyId, ProtectionKeyType, ContentKeyType e Checksum con i valori ricevuti nei passaggi precedenti.

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

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

ImportantImportante
In questo argomento sono stati omessi esempi di definizione delle chiavi di crittografia. Vengono forniti solo gli esempi in cui viene illustrato come interagire con Media Services.

Nel seguente esempio viene illustrato come recuperare la proprietà ProtectionKeyId, ovvero un'identificazione personale, per il certificato da utilizzare durante 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'esito è positivo, viene restituita la seguente risposta:

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 illustrato come recuperare il certificato X.509 utilizzando la proprietà ProtectionKeyId ricevuta 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'esito è positivo, viene restituita la seguente risposta:

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 è codificato base64 e deve essere decodificato prima dell'utilizzo.

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

Nel seguente esempio viene illustrato come creare un'entità ContentKey con una proprietà ContentKeyType impostata per la crittografia di archiviazione ("1") e la proprietà ProtectionKeyType impostata 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 di identificatore di contenuto nb:kid:UUID:GUID. Per ulteriori informazioni sugli schemi di identificatore di contenuto, vedere Identify Azure Media Services Entities. Per ulteriori informazioni sulle chiavi simmetriche, 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'esito è positivo, viene restituita la seguente risposta:

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 avere creato l'entità ContentKey, associarla all'asset utilizzando l'operazione $links, come illustrato 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'esito è positivo, viene restituito un codice di risposta 204 senza il corpo di un messaggio.

Per caricare un file nel contenitore Archiviazione BLOB, è necessario impostare le autorizzazioni di scrittura appropriate per l'asset, recuperare un URL in cui caricare il file e infine eseguire l'effettivo caricamento utilizzando le API REST dei servizi di archiviazione di Azure.

Prima di caricare qualsiasi file nel contenitore Archiviazione BLOB, impostare i diritti del criterio di accesso per la scrittura in un asset. A tale scopo, inviare una richiesta HTTP al set di entità AccessPolicy. Definire un valore DurationInMinutes al momento della creazione, altrimenti come risposta si riceverà un messaggio di errore del server interno 500. Per ulteriori informazioni sui criteri di accesso, vedere AccessPolicy.

Nell'esempio riportato di seguito viene illustrato come creare un'entità 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'esito è positivo, viene restituita la seguente risposta:

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

Ora che il criterio di accesso è stato creato, collegarlo a un'entità Locator che fornirà un percorso URL per caricare il file nel contenitore Archiviazione BLOB.

Per ricevere l'effettivo URL di caricamento, creare un'entità Locator, ovvero un localizzatore. I localizzatori definiscono la data e ora di inizio e il tipo di endpoint di connessione per i client che desiderano accedere ai file in un asset. È possibile creare più entità Locator per una determinata coppia AccessPolicy e Asset per gestire richieste ed esigenze diverse dei client. Ognuna di queste entità Locator utilizza il valore StartTime più il valore DurationInMinutes dell'entità AccessPolicy per determinare per quanto tempo può essere utilizzato un URL. Per ulteriori informazioni, vedere Locator.

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

TipSuggerimento
Se è necessario caricare i file immediatamente, impostare il valore StartTime su cinque minuti prima dell'ora corrente. Questo perché vi può essere una leggera differenza di orario tra il computer client e Servizi multimediali. Inoltre, il valore StartTime deve seguire il seguente formato di data e ora: 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'utilizzo. Questo problema si verifica sia per i localizzatori URL di firma di accesso condiviso che per i localizzatori di origine.

Nel seguente esempio viene illustrato come creare un localizzatore URL di firma di accesso condiviso, come definito dalla proprietà Type nel corpo della richiesta. Nella proprietà Path restituita è incluso l'URL da utilizzare 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'esito è positivo, viene restituita la seguente risposta:

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

Dopo che sono stati impostati il criterio di accesso e il localizzatore, il file effettivo viene caricato nel contenitore Archiviazione BLOB di Azure utilizzando le API REST del Servizio di archiviazione di Azure. È possibile effettuare il caricamento in BLOB di pagine o in blocchi. Per ulteriori informazioni sul caricamento di BLOB, vedere le informazioni di riferimento sull'API REST dei servizi di archiviazione di Azure.

Nel seguente esempio viene illustrato come caricare un BLOB in blocchi dagli esempi multimediali dell'SDK nel contenitore dell'asset.

noteNota
È necessario aggiungere il nome del file che si desidera caricare al valore del percorso localizzatore ricevuto nella sezione precedente. In questo esempio il nome del 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'esito è positivo, viene restituita la seguente risposta:

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 avere caricato il file, è consigliabile eliminare il localizzatore di caricamento per revocare l'accesso in scrittura al contenitore 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'esito è positivo, viene restituito un codice di risposta 204 senza il corpo di un messaggio.

Ora che il file è stato caricato, generare la relativa entità File. Tale entità include i metadati importanti 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'esito è positivo, viene restituito un codice di risposta 204 senza il corpo di un messaggio.

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

 

Proprietà Valore Tipo di crittografia

IsEncrypted

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

Archiviazione, comune

EncryptedKeyId

Id della chiave simmetrica crittografata.

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'esito è positivo, viene restituito un codice di risposta 204 senza il corpo di un messaggio.

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2014 Microsoft