Pular para o conteúdo principal

Controle de Processamentos (Jobs)

A geração de asset de transmissão é realizado através de job de processamento. Os processos de jobs podem ser consultados, neles são indicados o novo asset gerado, se o processamento foi finalizado com sucesso ou não e o tempo de processamento. Os processamentos podem gerar arquivos em formatos específicos, como arquivos mp4 (H264 ou H265) o HLS (arquivos de streaming).

Interface de Programação (APIs)

Lista os Jobs

Você pode executar um comando API para listar os jobs. Os Jobs sempre serão listados do último a ser executado para o mais antigo. Na listagem pode ser identificadas várias informações sobre o job, como o status de processamento e o id do asset gerado.

Faça um comando autenticado de requisição GET em /api/job

GET https://api.elasticencoder.videolib.live/dev/job

Cabeçalhos para GET para /api/job.

Header                          Valor
Ocp-Apim-Subscription-Key chave de autorização do microserviço.
Content-Type application/json.

Como resultado, será retornada a lista de jobs.

{
"codMensagem": null,
"rows": 1,
"continuationToken": null,
"items": [
{
"guid": "job-2516970584269866335-f92daed3-a6ad-483e-9d11-e67aed51be73",
"application": "videolib-ecine-dev",
"assetIdMezanine": "asset-2516971159162250822-b3f503f5-241d-4c1b-876b-bcaf006e02e3",
"assetIdEncoded": null,
"presetId": "71",
"jobName": "job-001",
"startTime": null,
"finishTime": null,
"jobStatus": 0, -- indica o status do processamento.
"percent": null,
"duration": null,
"message": null,
"errorMessage": null,
"errorCode": null,
"listaMarcacoes": null,
"timestamp": null,
"cod_erro": null,
"status_ret": null,
"erro": null
}
],
"cod_erro": null,
"status_ret": null,
"erro": null
}

onde:

jobStatus - status do Job
0 - aguardando
1 - incluído na fila de processamento
2 - processando
3 - finalizado com sucesso
4 - finalizado com erro
startTime - início do processamento
finishTime - fim do processamento
percent - percentual de processamento
duration - duração do vídeo
message - log do encoder
errorMessage - caso haja erro no processamento.
assetIdEncoded - id do novo asset gerado

Exemplo de um Job em processamento:

{
"codMensagem": null,
"rows": 1,
"continuationToken": null,
"items": [
{
"guid": "job-2516970584269866335-f92daed3-a6ad-483e-9d11-e67aed51be73",
"application": "videolib-ecine-dev",
"assetIdMezanine": "asset-2516971159162250822-b3f503f5-241d-4c1b-876b-bcaf006e02e3",
"assetIdEncoded": "asset-2516970582014134791-a98c1ba0-1936-4cc4-abe6-53a07054e5a2",
"presetId": "71",
"jobName": "job-001",
"startTime": "2024-01-14T14:29:58.1623643Z",
"finishTime": null,
"jobStatus": 2,
"percent": 66,
"duration": 30,
"message": "E: frame= 362 fps= 10 q=38.0 q=1.6 q=56.0 q=44.0 q=38.0 size= 3584kB time=00:00:20.00 bitrate=1468.0kbits/s dup=0 drop=357 speed=0.573x ",
"errorMessage": null,
"errorCode": null,
"listaMarcacoes": null,
"timestamp": null,
"cod_erro": null,
"status_ret": null,
"erro": null
}
],
"cod_erro": null,
"status_ret": null,
"erro": null
}

Criação de Job

Faça um comando autenticado de requisição POST em /api/job

POST https://api.elasticencoder.videolib.live/dev/job

Cabeçalhos para POST para /api/job.

Header                          Valor
Ocp-Apim-Subscription-Key chave de autorização do microserviço.
Content-Type application/json.

No corpo da requisição envie o JSON abaixo:

{
"assetIdMezanine":"id do asset",
"jobName":"nome do job (controle externo)",
"presetId":"código do preset (*)"

}

onde:

assetIdMezanine - Id do asset do arquivo original
jobName - nome do job (descrição livre)
presetId - Código do preset

O Código do preset (presetId) determina quais os formatos serão transcodificados. Um arquivo original pode ser transcodificado em arquivos mp4 ou no formato HLS para transmissão, nas seguintes resoluções.

HLS
360 (428k), 720 (1498k) ou 1080 (2675k)
MP4
360 (428k), 720 (1498k) ou 1080 (2675k)

A codificação segue um modelo binário complementar de seleção, para em um formato é necessário passar os seguintes códigos.

Formato             Código
HLS 360 1
HLS 720 2
HLS 1080 4
HLS 4K 8

MP4 360 16
MP4 720 32
MP4 1080 64

Por exemplo para gerar um arquivo bitrate adaptativo, com os formatos 360, 720 e 1080 com um arquivo mp4 para download de 1080, deve ser passado ao job o presetId igual a 71. (64+1+2+4). Se for necessário gerar um arquivo HLS 4k é necessário passar o valor 79.

Quando um comando POST é executado, como retorno do comando será gerado o JSON abaixo:

{
"guid": "job-2516970584269866335-f92daed3-a6ad-483e-9d11-e67aed51be73", -- identificação do job
"application": "videolib-ecine-dev",
"assetIdMezanine": "asset-2516971159162250822-b3f503f5-241d-4c1b-876b-bcaf006e02e3",
"assetIdEncoded": null,
"presetId": "71",
"jobName": "job-001",
"startTime": null,
"finishTime": null,
"jobStatus": 0,
"percent": null,
"duration": null,
"message": null,
"errorMessage": null,
"errorCode": null,
"listaMarcacoes": null,
"timestamp": null,
"cod_erro": null,
"status_ret": null,
"erro": null
}