Erfassen von Medienobjekten mit der Media Services REST-API
Das Erfassen von Medienobjekten in Windows Azure Media Services mithilfe der REST-API erfolgt in mehreren Schritten. Für bestimmte Aktionen (etwa das Verschlüsseln eines Medienobjekts) müssen Sie daher mehrere Schritte ausführen, bevor Sie mit Media Services interagieren können. Die meisten Aktionen (z. B. das Erstellen des Medienobjekts selbst) sind jedoch unkompliziert und erfordern nur Grundkenntnisse von REST-Prinzipien, OData v3 und im Fall der Codebeispiele von JSON.
Der grundlegende Workflow für die Erfassung von Medienobjekten wird in die folgenden Abschnitte unterteilt:
Weitere Informationen zur Sammelerfassung von Medienobjekten finden Sie unter Sammelerfassung von Medienobjekten mithilfe der REST-API.
Wichtig |
|---|
| Nach einer erfolgreichen Verbindungsherstellung mit https://media.windows.net werden Sie per "301 Redirect" auf einen anderen Mediendienste-URI weitergeleitet. Nachfolgende Aufrufe müssen diesen neuen URI verwenden. |
Erstellen des Medienobjekts
Ein Medienobjekt ist ein Container für mehrere Typen oder Sammlungen von Objekten in Media Services (z. B. Video, Audio, Bilder, Miniaturansichtsammlungen, Texttitel und geschlossene Untertiteldateien). In der REST-API muss für das Erstellen eines Medienobjekts eine POST-Anforderung an Media Services gesendet werden, und alle Eigenschafteninformationen zu Ihrem Medienobjekt müssen in den Anforderungstext eingefügt werden.
Das folgende Beispiel zeigt, wie ein Medienobjekt mit einem auf NewJSONAsset festgelegten Anzeigenamen erstellt wird.
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: 1.0
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" }
Bei Erfolg wird die folgende Antwort zurückgegeben:
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}}
Weitere Informationen zu Eigenschaften und Vorgängen von Medienobjektentitäten finden Sie unter Asset.
Verschlüsseln des Medienobjekts (optional)
Das Verschlüsseln von Medienobjekten ist ein optionaler Schritt, der in Media Services drei Aspekte berücksichtigt: Speicherverschlüsselung der Dateien des Medienobjekts, allgemeine Verschlüsselung zum Verwalten von durch DRM geschützten Dateien (z. B. PlayReady) und Konfigurationsverschlüsselung zum Verschlüsseln von Daten der Codierungskonfiguration, die ggf. vertrauliche vordefinierte Informationen enthalten. Jeder Verschlüsselungstyp erfordert einen AES-Inhaltsschlüssel, ein X.509-Zertifikat, das zum Verschlüsseln des Inhaltsschlüssels verwendet wird, und entsprechende Eigenschaften, die für die Entitäten Asset, ContentKey und File festgelegt werden. Die Länge der Inhaltsschlüssel hängt vom Typ des Inhaltsschlüssels ab. Für die Speicher- und Konfigurationsverschlüsselung sind 256-Bit-Schlüssel erforderlich, allgemeine Verschlüsselung erfordert einen 128-Bit-Schlüssel.
Im folgenden werden allgemeine Schritte zum Verschlüsseln von Dateien aufgeführt, die Sie in den Blob-Speicher hochladen:
-
Generieren eines zufälligen 256-Bit-AES-Schlüssels (32 Bytes). Dies ist der Inhaltsschlüssel für Ihr Medienobjekt. Dies bedeutet, dass alle diesem Medienobjekt zugeordneten Dateien während der Verschlüsselung den gleichen Inhaltsschlüssel verwenden müssen.
-
Generieren eines zufälligen 64-Bit-Initialisierungsvektorwerts (IV) pro Datei und Sicherstellen, dass der IV-Wert pro verschlüsseltem Block für jede Datei im Medienobjekt eindeutig ist.
-
Erstellen einer Medienobjektenentität, für die die Eigenschaft Options auf 1 festgelegt ist. Dieser Wert gibt an, dass die Medienobjektdateien nach dem Hochladen verschlüsselt sind (Erfassung). Wenn Sie allgemeine Verschlüsselung ausführen möchten, legen Sie den Wert der Eigenschaft Options auf 2 fest.
Hinweis Dieser Schritt kann vor oder nach dem Ausführen der Schritte 1 und 2 erfolgen. -
Aufrufen der Methoden GetProtectionKeyId und GetProtectionKey zum Abrufen des richtigen X.509-Zertifikats, das zum Verschlüsseln Ihres Inhaltsschlüssels verwendet werden muss.
-
Verschlüsseln Ihres Inhaltsschlüssels mit dem öffentlichen Schlüssel des X.509-Zertifikats. Außerdem Erstellen eines MD5-Prüfsummenwerts basierend auf dem verschlüsselten Inhaltsschlüssel.
-
Erstellen einer ContentKey-Entität und Festlegen der Eigenschaften EncryptedContentKey (konvertiert in eine base64-codierte Zeichenfolge), ProtectionKeyId, ProtectionKeyType, ContentKeyType und Checksum auf die in den vorherigen Schritten abgerufenen Werte.
-
Zuordnen der ContentKey-Entität zu Ihrer Asset-Entität über den Vorgang $links.
-
Nachdem Sie die Datei hochgeladen haben (eine Beschreibung dazu finden Sie im nächsten Abschnitt), rufen Sie CreateFileInfos auf und aktualisieren die Verschlüsselungseigenschaften für die File-Entität mit den Werten, die Sie in den vorherigen Schritten erstellt haben.
Wichtig |
|---|
| Beispiele für das Definieren von Verschlüsselungsschlüsseln werden in diesem Thema nicht zur Verfügung gestellt. Nur die Beispiele, die die Interaktion mit Media Services zeigen, werden bereitgestellt. |
Abrufen der "ProtectionKeyId"
Die folgenden Beispiele zeigen, wie die ProtectionKeyId (ein Zertifikatfingerabdruck) für das Zertifikat abgerufen wird, das beim Verschlüsseln Ihres Inhaltsschlüssels verwendet werden muss. Führen Sie diesen Schritt aus, um sicherzustellen, dass bereits das entsprechende Zertifikat auf Ihrem Computer vorhanden ist.
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: 1.0 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
Bei Erfolg wird die folgende Antwort zurückgegeben:
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"}}
Abrufen von "ProtectionKey"
Das folgende Beispiel zeigt, wie das X.509-Zertifikat mithilfe der ProtectionKeyId abgerufen wird, die Sie im vorherigen Schritt erhalten haben.
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: 1.0 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
Bei Erfolg wird die folgende Antwort zurückgegeben:
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"}}
Hinweis |
|---|
| Das Zertifikat im Nachrichtentext ist base64-codiert und muss vor der Verwendung decodiert werden. |
Erstellen von "ContentKey"
Nachdem Sie das X.509-Zertifikat abgerufen und seinen öffentlichen Schlüssel zum Verschlüsseln Ihres Inhaltsschlüssels verwendet haben, erstellen Sie eine ContentKey-Entität und legen deren Eigenschaftenwerte entsprechend fest.
Das folgende Beispiel zeigt das Erstellen eines ContentKey-Objekts, dessen ContentKeyType auf Speicherverschlüsselung (1) und dessen ProtectionKeyType auf 0 festgelegt ist, um anzugeben, dass die ID des Schutzschlüssels der Fingerabdruck des X.509-Zertifikats ist. Außerdem müssen Sie die ID oder Schlüssel-ID der ContentKey-Entität definieren. Dieser Wert muss ein GUID-Wert sein, der das Inhaltsbezeichnerschema nb:kid:UUID:GUID verwendet. Weitere Informationen zu Inhaltsbezeichnerschemas finden Sie unter Identifizieren von Windows Azure Media Services-Entitäten, weitere Informationen zu ContentKeys unter 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: 1.0
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"}
Bei Erfolg wird die folgende Antwort zurückgegeben:
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"}}
Nachdem Sie das ContentKey-Objekt erstellt haben, ordnen Sie es Ihrem Medienobjekt mithilfe des Vorgangs $links wie im folgenden Beispiel gezeigt zu:
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: 1.0
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')" }
Bei Erfolg wird ein Antwortcode 204 ohne Nachrichtentext zurückgegeben.
Hochladen einer Datei in den Blob-Speicher
Für das Hochladen einer Datei in den Blob-Speicher ist es erforderlich, die entsprechenden Schreibberechtigungen für das Medienobjekt festzulegen, eine URL abzurufen, an die die Datei hochgeladen wird, und schließlich den tatsächlichen Upload mithilfe der REST-APIs des Azure-Speichers auszuführen.
Festlegen von "AccessPolicy"
Bevor Sie Dateien in den Blob-Speicher hochladen, legen Sie die Zugriffsrichtlinienrechte zum Schreiben in ein Medienobjekt fest. Übermitteln Sie zu diesem Zweck mithilfe von POST eine HTTP-Anforderung an die AccessPolicies-Entitätssammlung. Definieren Sie bei der Erstellung einen DurationInMinutes-Wert. Andernfalls erhalten Sie die Meldung 500 Interner Serverfehler als Antwort. Weitere Informationen zu AccessPolicies finden Sie unter AccessPolicies.
Das folgende Beispiel zeigt, wie eine AccessPolicy erstellt wird:
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: 1.0
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 }
Bei Erfolg wird die folgende Antwort zurückgegeben:
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}}
Nachdem Sie nun Ihre AccessPolicy erstellt haben, verknüpfen Sie diese mit einer Locator-Entität, die Ihnen einen URL-Pfad zum Hochladen der Datei in den Blob-Speicher zur Verfügung stellt.
Abrufen der Upload-URL
Erstellen Sie eine Locator-Entität, um die Upload-URL zu empfangen. Locator definieren die Startzeit und den Typ des Verbindungsendpunkts für Clients, die auf Dateien in einem Medienobjekt zugreifen möchten. Sie können mehrere Locator-Entitäten für ein AccessPolicy-Asset-Paar definieren, um verschiedene Clientanforderungen und -erfordernisse zu verarbeiten. Jeder dieser Locator verwendet den StartTime-Wert sowie den DurationInMinutes-Wert des AccessPolicy-Objekts, um die Zeitspanne zu ermitteln, für die eine URL verwendet werden kann. Weitere Informationen finden Sie unter Locator.
Hinweis |
|---|
| Einem bestimmten Medienobjekt können gleichzeitig maximal fünf eindeutige Locator zugeordnet werden. Weitere Informationen finden Sie unter Locator. |
Tipp |
|---|
| Wenn Sie Ihre Dateien sofort hochladen müssen, sollten Sie den StartTime-Wert auf fünf Minuten vor der aktuellen Uhrzeit festlegen. Dies ist erforderlich, weil ggf. eine Uhrabweichung zwischen dem Clientcomputer und Media Services vorliegen kann. Außerdem muss der StartTime-Wert das US-amerikanische DateTime-Format Monat/Tag/JahrStunde:Minute:Sekunde AM/PM verwenden. |
Hinweis |
|---|
| Ggf. tritt eine Verzögerung von 30 bis 40 Sekunden zwischen dem Erstellen eines Locators und seiner Verfügbarkeit auf. Dies gilt für die SAS-URL sowie für Ursprungslocator. |
Das folgende Beispiel zeigt das Erstellen eines SAS-URL-Locators wie durch die Eigenschaft Type im Anforderungstext definiert. Die zurückgegebene Eigenschaft Path enthält die URL, die Sie zum Hochladen Ihrer Datei verwenden müssen.
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: 1.0
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" : "5/2/2012 1:04:32 AM", "Type" : 1 }
Bei Erfolg wird die folgende Antwort zurückgegeben:
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)\/"}}
Ausführen des Dateiuploads
Nachdem das AccessPolicy-Objekt und der Locator festgelegt wurden, wird die tatsächliche Datei in einen Azure-Blob-Speichercontainer mithilfe der REST-APIs des Windows Azure-Speichers hochgeladen. Der Upload kann in Seiten- oder Block-Blobs erfolgen. Weitere Informationen zum Upload von Blobs finden Sie unter REST API-Referenz zu den Windows Azure Storage Services).
Das folgende Beispiel zeigt, wie ein Block-Blob aus den SDK-Medienbeispielen in den Medienobjektcontainer hochgeladen wird.
Hinweis |
|---|
| Sie müssen den Dateinamen für die hochzuladende Datei dem Locatorpfadwert hinzufügen, den Sie im vorherigen Abschnitt erhalten haben. In diesem Beispiel lautet der Dateiname 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]
Bei Erfolg wird die folgende Antwort zurückgegeben:
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
Widerrufen der Upload-URL (optional)
Nachdem Sie Ihre Datei hochgeladen haben, sollten Sie den Uploadlocator mittels DELETE löschen, um den Schreibzugriff auf den Blob-Speichercontainer Ihres Medienobjekts zu widerrufen.
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: 1.0
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
Bei Erfolg wird ein Antwortcode 204 ohne Nachrichtentext zurückgegeben.
Generieren von Dateimetadaten
Nachdem die Datei nun hochgeladen wurde, generieren Sie eine File-Entität für sie. Diese Entität enthält wichtige Metadaten zu Ihrer Datei und kann durch einen Aufruf von CreateFileInfos wie im folgenden Beispiel gezeigt erstellt werden.
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: 1.0 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
Bei Erfolg wird ein Antwortcode 204 ohne Nachrichtentext zurückgegeben.
Wenn Sie Dateien verschlüsselt haben, müssen Sie die Eigenschaften für die File-Entität gemäß der Tabelle unten aktualisieren. Ein Beispiel für das Aktualisieren einer Entität finden Sie unter Verwalten von Medienobjekten mit der Media Services REST-API. Weitere Informationen zu den Eigenschaften der File-Entität finden Sie unter AssetFiles.
| Eigenschaft | Wert | Verschlüsselungstyp |
|---|---|---|
|
IsEncrypted |
Für Speicher- und allgemeine Verschlüsselung muss der Wert auf true festgelegt werden. |
Speicher, allgemein |
|
EncryptedKeyId |
Die verschlüsselte ContentKey-ID. |
Speicher |
|
EncryptionScheme |
Für Speicherverschlüsselung muss der Wert auf StorageEncryption festgelegt werden, für allgemeine Verschlüsselung auf CommonEncryption. |
Speicher, allgemein |
|
EncryptionVersion |
Für Speicher- und allgemeine Verschlüsselung muss der Wert auf 1.0 festgelegt werden. |
Speicher, allgemein |
|
InitializationVector |
Der zuvor definierte Initialisierungsvektorwert. |
Speicher |
Bei Erfolg wird ein Antwortcode 204 ohne Nachrichtentext zurückgegeben.
Siehe auch
Builddatum:
Wichtig
Tipp