Tutorial
Tutorial para sequência de chamadas para geração de um asset e preparação do HLS.
Para enviar o conteúdo e assistir ao vídeo deve ser seguida a sequência.
Fluxo
Passo 1 - Criação do Asset
POST https://api.elasticencoder.videolib.live/dev/asset?option=createasset
{
"name":"assetName"
}
no campo name usar um código para identificação no sistema de origem. Não pode se repetir, o processo de exibição usará esse código para exibição do conteúdo processado.
Exemplo de como retorno do comando será gerado o JSON abaixo:
{
"guid": "asset-uniqueidAsset",
"application": "videolib-ecine-dev",
"name": "assetName",
"type": "M",
"creationTime": "2024-01-13T22:28:03.7749442Z",
"fileName": null,
"base64": null,
"publicUrl": null,
"blobSasUri": null,
"publishSasUri": null,
"files": null,
"md5": null,
"cod_erro": null,
"status_ret": null,
"erro": null
}
Passo 2 - Envio do Conteúdo Original
POST https://api.elasticencoder.videolib.live/dev/asset?option=createassetfromcopyurl
{
"guid":"asset-uniqueidAsset",
"name":"assetName",
"fileName":"Original fileName.mp4",
"publicUrl":"https://portalplayerglobointegra.blob.core.windows.net/containervideosprod/1679138.mp4"
}
onde publicUrl é o URL para acesso do conteúdo original (URL para cópia do arquivo).
Passo 3 - Transcodificação
POST https://api.elasticencoder.videolib.live/dev/job
{
"assetIdMezanine":"asset-uniqueidAsset",
"jobName":"nome do job (controle externo)",
"presetId":"código do preset (*)"
}
Passo 4 - Acompanhamento do Processo
Verificação dos Jobs.
GET https://api.elasticencoder.videolib.live/dev/job
Exemplo de como retorno do comando será gerado o JSON abaixo:
{
"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
Passo 5 - Exibição do Conteúdo
POST https://api.elasticencoder.videolib.live/dev/auth
{
"app":"aplicação", // código da aplicação (enviado para ativação)
"key":"chave",// chave de autenticação (enviado para ativação)
"userName":"id Usuario", // id do usuário do sistema de origem - identificação de audiência
"name":"Nome Usuario", // nome do usuário do sistema de origem - identificação de audiência
"group":"100", // (ocional) código do grupo do sistema de origem - identificação de audiência
"email":"usuario@email.com.br", // (opcional) email do usuário do sistema de origem - identificação de audiência
"documentId":"num documento - ex: cpf", // (opcional) documento do usuário do sistema de origem
"department":"nome departamento", // (opcional) departamento do usuário do sistema de origem
"timeoutMinutes":"20" // tempo de duração do token
}
Como retorno do comando será gerado o JSON abaixo:
{
"token":"eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyTmFtZSI6ImlkVXN1YXJvIiwibmFtZSI6Ik5vbWUgVXN1YXJpbyIsImRhdGFUb2tlbiI6IjIwMjQtMDEtMjdUMjI6MjI6MjcuOTI0NzU1LTAzOjAwIiwiZ3JvdXAiOiIxMDAiLCJlbWFpbCI6InV1c3VhcmlvQGVtYWlsLmNvbS5iciIsImRvY3VtZW50SWQiOiJudW0gZG9jdW1lbnRvIC0gZXg6IGNwZiIsImRlcGFydG1lbnQiOiJub21lIGRlcGFydGFtZW50byIsIm1hdGNoIjoiODAyYmVjOGZkNTMxODE5MmIwYTc1IiwiaWRVc2VyUXVldWUiOiIwRTQ5RDM2ODMxNEM0NUJBMjJBQzYxRDY3MzA0MDYwREU1RDhFODE1OENBRjlFRDM4RDIyMjY1NzMwOTBDRDA4Iiwicm9sZXMiOiJHZXN0b3IifQ.yChC56edU1zmCua7sodHGVCD-rrMp5SCeIerkeK2llI",
"dataToken":"2024-01-27T22:22:27.924755-03:00",
"userName":"id Usuario",
"name":"Nome Usuario"
,"tokenType":"jwt",
"idUserQueue":"0E49D368314C45BA22AC61D67304060DE5D8E8158CAF9ED38D2226573090CD08",
"group":"100",
"roles":"",
"email":"usuario@email.com.br",
"documentId":"num documento - ex: cpf",
"department":"nome departamento",
"status_ret":null,
"erro":null
}
Abrindo o Player:
https://player.elasticencoder.videolib.live/player?token=mezanino-1&jwt=eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyTmFtZSI6ImlkVXN1YXJvIiwibmFtZSI6Ik5vbWUgVXN1YXJpbyIsImRhdGFUb2tlbiI6IjIwMjQtMDEtMjdUMjI6MjI6MjcuOTI0NzU1LTAzOjAwIiwiZ3JvdXAiOiIxMDAiLCJlbWFpbCI6InV1c3VhcmlvQGVtYWlsLmNvbS5iciIsImRvY3VtZW50SWQiOiJudW0gZG9jdW1lbnRvIC0gZXg6IGNwZiIsImRlcGFydG1lbnQiOiJub21lIGRlcGFydGFtZW50byIsIm1hdGNoIjoiODAyYmVjOGZkNTMxODE5MmIwYTc1IiwiaWRVc2VyUXVldWUiOiIwRTQ5RDM2ODMxNEM0NUJBMjJBQzYxRDY3MzA0MDYwREU1RDhFODE1OENBRjlFRDM4RDIyMjY1NzMwOTBDRDA4Iiwicm9sZXMiOiJHZXN0b3IifQ.yChC56edU1zmCua7sodHGVCD-rrMp5SCeIerkeK2llI
onde:
Url do player:
https://player.elasticencoder.videolib.live/player
Parâmetros:
token: nome dado ao asset do arquivo original
jwt: chave gerada na chamada da API auth (explicada no início da sessão)