Exportar (0) Imprimir
Expandir todo
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Crear un trabajo de codificación con la API de REST de Media Services

Actualizado: marzo de 2014

Tras la ingesta de los recursos en Servicios multimedia de Windows Azure, los medios se pueden codificar, transmultiplexar, proveer de marcas de agua, etc., antes de que se entreguen a los clientes. Estas actividades se programan y ejecutan según varias instancias de roles en segundo plano para garantizar un alto rendimiento y una alta disponibilidad. Estas actividades se denominan trabajos, y cada trabajo está compuesto de tareas atómicas que realizan el trabajo real del archivo del recurso. Si tiene intención de usar el mismo conjunto de tareas en un amplio rango de recursos, Servicios multimedia admite JobTemplates y TaskTemplates que le ayudarán a cumplir este objetivo.

ImportantImportante
Después de conectarse correctamente a https://media.windows.net, recibirá una redirección 301 que especifica otro URI de Servicios multimedia. Debe realizar llamadas subsecuentes a la nueva URI.

Crear un trabajo

Cada trabajo tiene una o varias tareas, en función del tipo de procesamiento que desee llevar a cabo. A través de la API REST, puede crear trabajos y sus tareas relacionadas de una de estas dos formas: Las tareas se pueden definir en línea a través de la propiedad de navegación de tareas en entidades de trabajos, o a través del procesamiento por lotes OData. El SDK de Media Services usa el procesamiento por lotes; sin embargo, para la legibilidad de los ejemplos de códigos en este tema, las tareas se definen en línea. Para más información sobre el procesamiento por lotes, vea Open Data Protocol (OData) Batch Processing (Procesamiento por lotes de Open Data Protocol [oData]).

El siguiente ejemplo muestra cómo crear y publicar un trabajo con una tarea definida para codificar un vídeo a una resolución y calidad específicas. Los valores predefinidos de configuración de tareas válidos se especifican en Valores predefinidos del sistema Media Services Encoder.

POST https://media.windows.net/API/Jobs HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.2
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=1336802231&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=gR%2fNaIZgolFLxBOmfSECrp16Mp0Mti3KoePVjBUCzls%3d
Host: media.windows.net
Content-Length: 476

{"Name" : "NewTestJob", "InputMediaAssets" : [{"__metadata" : {"uri" : "https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3Aaab7f15b-3136-4ddf-9962-e9ecb28fb9d2')"}}],  "Tasks" : [{"Configuration" : "H264 Broadband 720p", "MediaProcessorId" : "nb:mpid:UUID:70bdc2c3-ebf4-42a9-8542-5afc1e55d217",  "TaskBody" : "<?xml version=\"1.0\" encoding=\"utf-8\"?><taskBody><inputAsset>JobInputAsset(0)</inputAsset><outputAsset>JobOutputAsset(0)</outputAsset></taskBody>"}]}

Si el proceso se completa correctamente, se devuelve la respuesta siguiente:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 1017
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A40dc7bef-6bd9-2247-9f3d-d80bc257d715')
Server: Microsoft-IIS/7.5
x-ms-request-id: d2052a71-95b1-4a52-9420-ccca1202a5fb
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 11 May 2012 21:32:40 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A40dc7bef-6bd9-2247-9f3d-d80bc257d715')","uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A40dc7bef-6bd9-2247-9f3d-d80bc257d715')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.Job"},"Tasks":{"__deferred":{"uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A40dc7bef-6bd9-2247-9f3d-d80bc257d715')/Tasks"}},"OutputMediaAssets":{"__deferred":{"uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A40dc7bef-6bd9-2247-9f3d-d80bc257d715')/OutputMediaAssets"}},"InputMediaAssets":{"__deferred":{"uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A40dc7bef-6bd9-2247-9f3d-d80bc257d715')/InputMediaAssets"}},"Id":"nb:jid:UUID:40dc7bef-6bd9-2247-9f3d-d80bc257d715","Name":"NewTestJob","Created":"\/Date(1336771959431)\/","LastModified":"\/Date(1336771959431)\/","EndTime":null,"Priority":0,"RunningDuration":0,"StartTime":null,"State":0,"TemplateId":null}}

Deben tenerse en cuenta algunos aspectos importantes en cualquier solicitud de trabajo:

  • Las propiedades TaskBody DEBEN usar XML literal para definir el número de recursos de entrada o salida que usará la tarea. El tema Task contiene la definición de esquema XML del XML.

  • En la definición TaskBody, cada valor interior de <inputAsset> y <outputAsset> debe definirse como JobInputAsset(valor) o JobOutputAsset(valor).

  • Una tarea puede tener varios recursos de salida. Un JobOutputAsset(x) solo se puede usar una vez como salida de una tarea en un trabajo.

  • Puede especificar JobInputAsset o JobOutputAsset como un recurso de entrada de una tarea.

  • Las tareas no deben formar un ciclo.

  • El parámetro valor que pasa a JobInputAsset o JobOutputAsset representa el valor de índice de un recurso. Los recursos reales se definen en las propiedades de navegación InputMediaAssets y OutputMediaAssets en la definición de entidad de trabajo.

  • noteNota
    Dado que Servicios multimedia se basa en OData v3, se hace referencia a los recursos individuales de las colecciones de navegación InputMediaAssets y OutputMediaAssets como un par de nombre y valor "__metadata : uri".

  • InputMediaAssets se asigna a uno o varios recursos que ha creado en Servicios multimedia. El sistema crea los OutputMediaAssets. No hacen referencia a un recurso existente.

  • Los OutputMediaAssets se pueden nombrar con el atributo assetName. Si este atributo no está presente, el nombre del OutputMediaAsset será el valor de texto interior del elemento <outputAsset> con un sufijo del valor de nombre de trabajo o del valor de identificador de trabajo (en caso de que la propiedad de nombre no se haya definido). Por ejemplo, si define un valor para assetName como "Sample", la propiedad de nombre OutputMediaAsset se definiría como "Sample". No obstante, si no ha establecido un valor para assetName, pero ha establecido el nombre del trabajo como "NewJob", el nombre OutputMediaAsset sería "JobOutputAsset(valor)_NewJob".

    El siguiente ejemplo muestra cómo definir el atributo assetName:

    "<?xml version=\"1.0\" encoding=\"utf-8\"?><taskBody><inputAsset>JobInputAsset(0)</inputAsset><outputAsset assetName=\"CustomOutputAssetName\">JobOutputAsset(0)</outputAsset></taskBody>"
    
  • Para habilitar el encadenamiento de tareas:

    • Un trabajo debe tener al menos 2 tareas.

    • Debe haber al menos una tarea cuya entrada sea salida de otra tarea en el trabajo.

Para más información sobre entidades de trabajos y tareas, vea Trabajo y Task, respectivamente.

Creación de JobTemplate

Tal y como se ha descrito en la introducción, al procesar varios recursos usando un conjunto común de tareas, las JobTemplates son útiles para especificar los valores predefinidos de tareas predeterminados, el orden de las tareas, etc.

El siguiente ejemplo muestra cómo crear una JobTemplate con una TaskTemplate definida en línea. La TaskTemplate usa Windows Azure Media Encoder como MediaProcessor para codificar el archivo del recurso; sin embargo, podrían usarse también otros MediaProcessors.

POST https://media.windows.net/API/JobTemplates HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.2
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=1336731433&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=w%2bpnT6CW6jSzyVgJLP2cN0QyLL0peOt8PJC6XnPhvZ4%3d
Host: media.windows.net
Content-Length: 574
Expect: 100-continue

{"Name" : "NewJobTemplate25", "JobTemplateBody" : "<?xml version=\"1.0\" encoding=\"utf-8\"?><jobTemplate><taskBody taskTemplateId=\"nb:ttid:UUID:071370A3-E63E-4E81-A099-AD66BCAC3789\"><inputAsset>JobInputAsset(0)</inputAsset><outputAsset>JobOutputAsset(0)</outputAsset></taskBody></jobTemplate>", "TaskTemplates" : [{"Id" : "nb:ttid:UUID:071370A3-E63E-4E81-A099-AD66BCAC3789", "Configuration" : "H264 Smooth Streaming 720p", "MediaProcessorId" : "nb:mpid:UUID:70bdc2c3-ebf4-42a9-8542-5afc1e55d217", "Name" : "SampleTaskTemplate2", "NumberofInputAssets" : 1, "NumberofOutputAssets" : 1}] }
ImportantImportante
A diferencia de otras entidades Servicios multimedia, debe definir un nuevo identificador GUID para cada TaskTemplate y colocarlo en taskTemplateId y la propiedad Id. en el cuerpo de su solicitud. El esquema de identificación de contenido debe seguir el esquema descrito en Identificación de las entidades de Windows Azure Media Services. Además, las JobTemplates no se pueden actualizar. En su lugar, debe crear una nueva con sus cambios actualizados.

Si el proceso se completa correctamente, se devuelve la respuesta siguiente:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 959
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/JobTemplates('nb%3Ajtid%3AUUID%3A42da394a-bed5-1749-a541-b0d5447f60d0')
Server: Microsoft-IIS/7.5
x-ms-request-id: b57dcc60-60d8-491c-a91c-8a65fa8aa5cb
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 11 May 2012 00:17:38 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/JobTemplates('nb%3Ajtid%3AUUID%3A42da394a-bed5-1749-a541-b0d5447f60d0')","uri":"https://media.windows.net/api/JobTemplates('nb%3Ajtid%3AUUID%3A42da394a-bed5-1749-a541-b0d5447f60d0')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.JobTemplate"},"TaskTemplates":{"__deferred":{"uri":"https://media.windows.net/api/JobTemplates('nb%3Ajtid%3AUUID%3A42da394a-bed5-1749-a541-b0d5447f60d0')/TaskTemplates"}},"Id":"nb:jtid:UUID:42da394a-bed5-1749-a541-b0d5447f60d0","Created":"\/Date(1336695459669)\/","JobTemplateBody":"<?xml version=\"1.0\" encoding=\"utf-8\"?><jobTemplate><taskBody taskTemplateId=\"nb:ttid:UUID:071370A3-E63E-4E81-A099-AD66BCAC3789\"><inputAsset>JobInputAsset(0)</inputAsset><outputAsset>JobOutputAsset(0)</outputAsset></taskBody></jobTemplate>","LastModified":"\/Date(1336695459669)\/","Name":"NewJobTemplate25","NumberofInputAssets":0,"TemplateType":1}}

Crear un trabajo usando una JobTemplate

El siguiente ejemplo muestra cómo crear un trabajo haciendo referencia a un identificador de JobTemplate:

POST https://media.windows.net/API/Jobs HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.2
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=1336908022&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=RYXOraO6Z%2f7l9whWZQN%2bypeijgHwIk8XyikA01Kx1%2bk%3d
Host: media.windows.net
Content-Length: 249

{"Name" : "NewTestJob", "InputMediaAssets" : [{"__metadata" : {"uri" : "https://media.windows.net/api/Assets('nb%3Acid%3AUUID%3A3f1fe4a2-68f5-4190-9557-cd45beccef92')"}}], "TemplateId" : "nb:jtid:UUID:15e6e5e6-ac85-084e-9dc2-db3645fbf0aa"}

Si el proceso se completa correctamente, se devuelve la respuesta siguiente:

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 1064
Content-Type: application/json;odata=verbose;charset=utf-8
Location: https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3Ab21b1baf-8cee-734e-9f1a-b0f12b06e2d5')
Server: Microsoft-IIS/7.5
x-ms-request-id: 82feb593-ee74-45db-85c5-24c0a7600f2d
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 13 May 2012 01:22:53 GMT

{"d":{"__metadata":{"id":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3Ab21b1baf-8cee-734e-9f1a-b0f12b06e2d5')","uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3Ab21b1baf-8cee-734e-9f1a-b0f12b06e2d5')","type":"Microsoft.Cloud.Media.Vod.Rest.Data.Models.Job"},"Tasks":{"__deferred":{"uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3Ab21b1baf-8cee-734e-9f1a-b0f12b06e2d5')/Tasks"}},"OutputMediaAssets":{"__deferred":{"uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3Ab21b1baf-8cee-734e-9f1a-b0f12b06e2d5')/OutputMediaAssets"}},"InputMediaAssets":{"__deferred":{"uri":"https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3Ab21b1baf-8cee-734e-9f1a-b0f12b06e2d5')/InputMediaAssets"}},"Id":"nb:jid:UUID:b21b1baf-8cee-734e-9f1a-b0f12b06e2d5","Name":"NewTestJob","Created":"\/Date(1336872171998)\/","LastModified":"\/Date(1336872171998)\/","EndTime":null,"Priority":0,"RunningDuration":0,"StartTime":null,"State":0,"TemplateId":"nb:jtid:UUID:15e6e5e6-ac85-084e-9dc2-db3645fbf0aa"}}
noteNota
Esta respuesta es la misma que la del ejemplo de creación de trabajo mostrado anteriormente, excepto que la propiedad TemplateId está establecida.

Supervisar el progreso del procesamiento

Puede recuperar el estado del trabajo usando la propiedad de estado, como se muestra en el siguiente ejemplo. Para obtener más información sobre la recuperación de valores de propiedades, vea Administración de recursos con la API de REST de Media Services. Para obtener más información sobre la propiedad de estado, vea Propiedades de la entidad Job.

GET https://media.windows.net/api/Jobs('nb%3Ajid%3AUUID%3A0f7d4b0e-ea6c-9748-ad34-09575bdfbd21')/State HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.2
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=1336908022&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=RYXOraO6Z%2f7l9whWZQN%2bypeijgHwIk8XyikA01Kx1%2bk%3d
Host: media.windows.net
Content-Length: 0

Si el proceso se completa correctamente, se devuelve la respuesta siguiente:

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 17
Content-Type: application/json;odata=verbose;charset=utf-8
Server: Microsoft-IIS/7.5
x-ms-request-id: 01324d81-18e2-4493-a3e5-c6186209f0c8
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 13 May 2012 05:16:53 GMT

{"d":{"State":2}}

Cancelar un trabajo

Servicios multimedia le permite cancelar trabajos en ejecución con la función CancelJob. Esta llamada devolverá un código de error 400 si intenta cancelar un trabajo cuando su estado sea cancelado, cancelando, error o finalizado.

El siguiente ejemplo muestra cómo llamar a CancelJob.

GET https://media.windows.net/API/CancelJob?jobid='nb%3ajid%3aUUID%3a9e9533ba-2b9b-fa4c-a33d-73eebd49039b' HTTP/1.1
Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.2
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=1336908753&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=kolAgnFfbQIeRv4lWxKSFa4USyjWXRm15Kd%2bNd5g8eA%3d
Host: media.windows.net

Si se realiza correctamente, se devuelve un código de respuesta 204 sin cuerpo de mensaje.

noteNota
Debe codificar con URL el identificador de trabajo (normalmente nb:jid:UUID: valor) al pasarlo como parámetro a CancelJob.

Vea también


Fecha de compilación:

2014-04-09
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.