使用媒体服务 REST API 传送资产
Windows Azure Media Services提供了多种便于你向客户端传送内容的机制。你可以允许它们从 BLOB 存储帐户下载内容,或从Media Services传输内容。
注意 |
|---|
| 定位符从创建到可用可能会有 30-40 秒的延迟。SAS URL 和源定位符都会出现这个问题。 |
注意 |
|---|
| 一项给定的资产一次最多只能与五个唯一的定位符相关联。有关详细信息,请参阅Locator。 |
以下部分介绍如何向客户端传送内容:
重要提示 |
|---|
| 在成功连接到 https://media.windows.net/API 之后,您将接收到指定另一个 Media Services URI 的 301 重定向。您必须对这个新 URI 进行后续调用。 |
创建具有读取权限的 AccessPolicy
在下载或传输任何媒体内容之前,请首先定义一个具有读取权限的 AccessPolicy,然后创建相应的定位符实体,以便指定将要为客户端启用的传送机制类型。有关可用属性的详细信息,请参阅 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.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=1337067658&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=dithjGvlXR9HlyAf5DE99N5OCYkPAxsHIcsTSjm9%2fVE%3d
Host: media.windows.net
Content-Length: 74
Expect: 100-continue
{"Name": "DownloadPolicy", "DurationInMinutes" : "300", "Permissions" : 1}
如果成功,将返回描述你创建的 AccessPolicy 实体的 201 成功代码。然后,你需要使用 AccessPolicy ID 以及包含需传送文件的资产(如某个输出资产)的资产 ID 来创建定位符实体。
注意 |
|---|
| 这个基本的工作流与引入资产时上载文件的工作流相同。有关上载文件的详细信息,请参阅将文件上载到 BLOB 存储。此外,和上载文件一样,如果你(或你的客户端)需要立即访问文件,请将 StartTime 值设置为当前时间前五分钟。此操作是必需的,因为客户端与Media Services之间可能存在时钟偏差。 |
创建用于下载内容的 SAS URL
以下代码说明了如何下载以前创建和上载的媒体文件。AccessPolicy 已设置读取权限,并且定位符路径指向 SAS 下载 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.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=1337067658&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=dithjGvlXR9HlyAf5DE99N5OCYkPAxsHIcsTSjm9%2fVE%3d
Host: media.windows.net
Content-Length: 182
Expect: 100-continue
{"AccessPolicyId": "nb:pid:UUID:38c71dd0-44c5-4c5f-8418-08bb6fbf7bf8", "AssetId" : "nb:cid:UUID:eb5540a2-116e-4d36-b084-7e9958f7f3c3", "StartTime" : "5/14/2012 9:36:33 PM", "Type":1}
如果成功,将返回以下响应:
HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 1150
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8e5a821d-2194-4d00-8884-adf979856874')
Server: Microsoft-IIS/7.5
x-ms-request-id: 8cfd8556-3064-416a-97f2-67d9e35f0911
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 14 May 2012 21:41:32 GMT
{"d":{"__metadata":{"id":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8e5a821d-2194-4d00-8884-adf979856874')","uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8e5a821d-2194-4d00-8884-adf979856874')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.Locator"},"AccessPolicy":{"__deferred":{"uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8e5a821d-2194-4d00-8884-adf979856874')/AccessPolicy"}},"Asset":{"__deferred":{"uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A8e5a821d-2194-4d00-8884-adf979856874')/Asset"}},"Id":"nb:lid:UUID:8e5a821d-2194-4d00-8884-adf979856874","ExpirationDateTime":"\/Date(1337049393000)\/","Type":1,"Path":"https://yourstorageaccount.blob.core.windows.net/asset-3df042ec-a396-4c62-a217-16c7a2569640?st=2012-05-14T21%3A36%3A33Z&se=2012-05-15T02%3A36%3A33Z&sr=c&si=8e5a821d-2194-4d00-8884-adf979856874&sig=y75dViDpC5V8WutrXM%2B%2FGpR3uOtqmlISiNlHU1YUBOg%3D","AccessPolicyId":"nb:pid:UUID:38c71dd0-44c5-4c5f-8418-08bb6fbf7bf8","AssetId":"nb:cid:UUID:eb5540a2-116e-4d36-b084-7e9958f7f3c3","StartTime":"\/Date(1337031393000)\/"}}
路径属性引用你在请求中指定的资产 ID 的 SAS URL。若要下载文件,请于下载前在 SAS URL 中添加要下载内容的文件名。
以下示例说明了如何使用 Web 浏览器从 BLOB 存储中下载文件:
GET https://yourstorageaccount.blob.core.windows.net/asset-3df042ec-a396-4c62-a217-16c7a2569640/samplevid.wmv?st=2012-05-14T21%3A36%3A33Z&se=2012-05-15T02%3A36%3A33Z&sr=c&si=8e5a821d-2194-4d00-8884-adf979856874&sig=y75dViDpC5V8WutrXM%2B%2FGpR3uOtqmlISiNlHU1YUBOg%3D HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: en-US User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Accept-Encoding: gzip, deflate Host: yourstorageaccount.blob.core.windows.net Connection: Keep-Alive
如果成功,将返回以下响应:
HTTP/1.1 200 OK Content-Length: 4045744 Content-Type: application/octet-stream Last-Modified: Mon, 14 May 2012 21:41:26 GMT ETag: 0x8CF00317343F6D8 Server: Blob Service Version 1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: da01ef74-7bf6-4837-b36d-8a6c08a26c3f Date: Mon, 14 May 2012 22:02:45 GMT ??v?3?????>1?p????m.?v9?/??s?a?(C?D? wsh?1hfN??C?V??,?-?sd??:?j?dCfT?,?6????8?f?p??o??"?????6C??q?????KbP???w*????i [Remaining data truncated for readability.]
重要提示 |
|---|
| 如果下载存储加密的内容,则必须先手动进行解密,然后才能显示该内容;也可以在处理任务中使用 Storage Decryption MediaProcessor 将已处理的文件以明文形式输出到某个 OutputAsset,然后从该资产中进行下载。有关处理的详细信息,请参阅使用媒体服务 REST API 处理资产。此外,SAS URL 定位符在创建后即无法更新。例如,你不能将同一定位符重用于已更新的 StartTime 值。这是由于创建 SAS URL 的方式造成的。如果你希望在定位符过期后访问某个供下载的资产,则必须创建一个带新 StartTime 的新定位符。 |
创建用于传输内容的源 URL
创建源 URL 定位符与创建 SAS URL 定位符的唯一不同在于,“Type”值和你要传输的内容必须从 MP4 格式转换为平滑流格式 (.ism*)。后者可以通过在处理任务中使用将 MP4 转换为平滑流的 MediaProcessor 来完成。至于传输到 iOS 设备,你还需要添加一个处理任务,以便使用将平滑流转换为 HLS 的 MediaProcessor 创建一个包含必要文件的输出资产,然后才能完成到这些设备的传输。有关任务链的示例,请参阅创建作业。与 SAS URL 定位符不同,源定位符可以在创建之后使用新的 StartTime 值进行更新。有关定位符以及如何更新定位符的详细信息,请参阅Locator。
以下代码说明了如何创建源 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.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=1337067658&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=dithjGvlXR9HlyAf5DE99N5OCYkPAxsHIcsTSjm9%2fVE%3d
Host: media.windows.net
Content-Length: 182
Expect: 100-continue
{"AccessPolicyId": "nb:pid:UUID:38c71dd0-44c5-4c5f-8418-08bb6fbf7bf8", "AssetId" : "nb:cid:UUID:eb5540a2-116e-4d36-b084-7e9958f7f3c3", "StartTime" : "5/14/2012 9:36:35 PM", "Type":2}
如果成功,将返回以下响应:
HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 981
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A52034bf6-dfae-4d83-aad3-3bd87dcb1a5d')
Server: Microsoft-IIS/7.5
x-ms-request-id: 2eac4158-fc78-4fa2-81ee-c9f582dc385f
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 14 May 2012 21:41:39 GMT
{"d":{"__metadata":{"id":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A52034bf6-dfae-4d83-aad3-3bd87dcb1a5d')","uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A52034bf6-dfae-4d83-aad3-3bd87dcb1a5d')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.Locator"},"AccessPolicy":{"__deferred":{"uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A52034bf6-dfae-4d83-aad3-3bd87dcb1a5d')/AccessPolicy"}},"Asset":{"__deferred":{"uri":"https://media.windows.net/api/Locators('nb%3Alid%3AUUID%3A52034bf6-dfae-4d83-aad3-3bd87dcb1a5d')/Asset"}},"Id":"nb:lid:UUID:52034bf6-dfae-4d83-aad3-3bd87dcb1a5d","ExpirationDateTime":"\/Date(1337049395000)\/","Type":2,"Path":"http://media.windows.net/52034bf6-dfae-4d83-aad3-3bd87dcb1a5d/","AccessPolicyId":"nb:pid:UUID:38c71dd0-44c5-4c5f-8418-08bb6fbf7bf8","AssetId":"nb:cid:UUID:eb5540a2-116e-4d36-b084-7e9958f7f3c3","StartTime":"\/Date(1337031395000)\/"}}
若要在流媒体播放器中引用平滑流源 URL,必须在路径属性上附加平滑流清单文件的名称,后跟“/manifest”。例如,使用前一个示例中显示的源 URL,平滑流客户端使用的实际 URL 将为 http://media.windows.net/52034bf6-dfae-4d83-aad3-3bd87dcb1a5d/samplevid.ism/manifest。对于 HLS 客户端,此示例将为 http://media.windows.net/52034bf6-dfae-4d83-aad3-3bd87dcb1a5d/samplevid.isml/manifest(format=m3u8-aapl)。
注意 |
|---|
| 在本部分中,http://media.windows.net URI 在路径值中用作示例。实际值因你连接到的Media Services部署而异。 |
另请参见
生成日期:
注意
重要提示