Esporta (0) Stampa
Espandi tutto

Creazione di un processo di codifica con l'API REST di Servizi multimediali

Aggiornamento: luglio 2014

Dopo l'inserimento di asset in Servizi multimediali di Microsoft Azure, gli elementi multimediali possono essere codificati, sottoposti a transmux e all'applicazione di filigrana e così via prima di essere distribuiti ai client. Queste attività sono pianificate ed eseguite con più istanze di ruoli in background per garantire prestazioni ottimali e disponibilità elevata. Queste attività sono denominate processi e ogni processo è costituito da attività atomiche che eseguono le operazioni effettive sul file di asset. Se si prevede di eseguire lo stesso insieme di attività su una vasta gamma di asset, in Servizi multimediali sono supportate le entità JobTemplate e TaskTemplate a tale scopo.

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

Ogni processo può includere una o più attività in base al tipo di elaborazione che si desidera eseguire. Usando l'API REST è possibile creare i processi e le attività correlate procedendo in due modi diversi: le attività possono essere definite inline mediante la proprietà di navigazione delle attività in entità Job oppure mediante l'elaborazione batch OData. In Media Services SDK viene usata l'elaborazione batch. Per semplificare tuttavia la leggibilità degli esempi di codice inclusi in questo argomento le attività sono state definite inline. Per informazioni, vedere l'articolo relativo all'elaborazione batch OData.

Il seguente esempio illustra come creare e pubblicare un processo con un'attività impostata per codificare un video con una risoluzione e una qualità specifiche. Set di impostazioni di configurazione di attività valide sono specificati in Aggiornamento del tipo di unità riservata e aumento delle unità riservate di codifica.

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

Se l'esito è positivo, viene restituita la seguente risposta:

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

È necessario tenere conto di alcuni aspetti importanti in una richiesta di processo:

  • Le proprietà TaskBody DEVONO usare codice XML letterale per definire il numero di asset di input o di output che verranno usati dall'attività. Nell'argomento Attività è contenuta la definizione dello schema XML per il codice XML.

  • Nella definizione TaskBody ogni valore interno per <inputAsset> e <outputAsset> deve essere impostato come JobInputAsset(valore) o JobOutputAsset(valore).

  • Un'attività può disporre di diversi asset di output. Un oggetto JobOutputAsset(x) può essere usato solo una volta come output di un'attività in un processo.

  • È possibile specificare JobInputAsset o JobOutputAsset come asset di input di un'attività.

  • Le attività non devono formare un ciclo.

  • Il parametro valore passato a JobInputAsset o JobOutputAsset rappresenta il valore di indice di un asset. Gli asset effettivi vengono definiti nelle proprietà di navigazione InputMediaAssets e OutputMediaAssets nella definizione dell'entità Job.

  • noteNota
    Poiché Servizi multimediali si basa su OData versione 3, i riferimenti ai singoli asset nelle raccolte delle proprietà di navigazione InputMediaAssets e OutputMediaAssets vengono effettuati mediante una coppia nome-valore "__metadata: uri".

  • La proprietà InputMediaAssets è mappata a uno o più asset creati in Servizi multimediali. Le proprietà OutputMediaAssets vengono create dal sistema. Non fanno riferimento a un asset esistente.

  • Per denominare OutputMediaAssets è possibile usare l'attributo assetName. Se questo attributo non è presente, il nome della proprietà OutputMediaAssets corrisponderà al valore del testo interno dell'elemento <outputAsset> preceduto dal nome o dall'ID del processo (qualora la proprietà Name non sia definita). Se ad esempio si imposta un valore per assetName su "Sample", la proprietà Name di OutputMediaAssets sarà impostata su "Sample". Se tuttavia non si imposta un valore per assetName ma è stato impostato il nome del processo su "NewJob", il nome di OutputMediaAssets sarà "JobOutputAsset(valore)_NewJob".

    Il seguente esempio illustra come impostare l'attributo assetName:

    "<?xml version=\"1.0\" encoding=\"utf-8\"?><taskBody><inputAsset>JobInputAsset(0)</inputAsset><outputAsset assetName=\"CustomOutputAssetName\">JobOutputAsset(0)</outputAsset></taskBody>"
    
  • Per abilitare la catena di attività:

    • Un processo deve includere almeno due attività

    • Deve essere presente almeno un'attività il cui input venga usato come output di un'altra attività nel processo

Per altre informazioni sulle entità Job e Task, vedere rispettivamente Job eAttività.

Come descritto nell'introduzione, quando si elaborano più asset usando un insieme comune di attività, le entità JobTemplate si rivelano utili per specificare i set di impostazioni di attività predefiniti, l'ordine delle attività e così via.

Il seguente esempio illustra come creare un'entità JobTemplate con un'entità TaskTemplate definita inline. L'entità TaskTemplate usa Azure Media Encoder come entità MediaProcessor per codificare il file di asset. Possono essere usate tuttavia anche altre entità MediaProcessor.

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
Diversamente da altre entità di Servizi multimediali, è necessario definire un nuovo identificatore GUID per ogni entità TaskTemplate e posizionarlo nelle proprietà taskTemplateId e Id nel corpo della richiesta. Lo schema di identificazione del contenuto deve seguire lo schema descritto in Identificare le entità di Servizi multimediali di Azure. L'entità JobTemplate inoltre non può essere aggiornata. È necessario invece crearne una nuova con gli aggiornamenti.

Se l'esito è positivo, viene restituita la seguente risposta:

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

Il seguente esempio illustra come creare un processo facendo riferimento all'ID di un'entità 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"}

Se l'esito è positivo, viene restituita la seguente risposta:

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
Questa è la stessa risposta ottenuta nell'esempio di creazione di un processo riportato precedentemente, con la differenza che è impostata la proprietà TemplateId.

È possibile recuperare lo stato di un processo usando la proprietà State, come illustrato nel seguente esempio. Per altre informazioni sul recupero dei valori delle proprietà, vedere Gestione di asset con l'API REST di Servizi multimediali. Per altre informazioni sulla proprietà State, vedere Proprietà dell'entità 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

Se l'esito è positivo, viene restituita la seguente risposta:

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

Servizi multimediali consente di annullare i processi in esecuzione mediante la funzione CancelJob. Questa chiamata restituirà un codice di errore 400 se si tenta di annullare un processo il cui stato è annullato, in fase di annullamento, con errore o terminato.

Il seguente esempio illustra come chiamare la funzione 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

Se l'esito è positivo, viene restituito un codice di risposta 204 senza il corpo di un messaggio.

noteNota
È necessario codificare in URL l'ID del processo (in genere nb:jid:UUID: valore) quando viene passato come parametro a CancelJob.

Vedere anche

Mostra:
© 2015 Microsoft