https://github.com/codeedu/microsservico-encoder
https://github.com/codeedu/microsservico-encoder
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/codeedu/microsservico-encoder
- Owner: codeedu
- Created: 2020-08-10T16:33:07.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-10-24T18:15:31.000Z (over 2 years ago)
- Last Synced: 2025-04-17T10:24:54.097Z (9 months ago)
- Language: Go
- Size: 31.3 KB
- Stars: 44
- Watchers: 8
- Forks: 35
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Microsserviço de encoder de vídeo
## Configurando ambiente
Para rodar em modo de desenvolvimento, siga os seguintes passos:
* Duplique o arquivo `.env.example` para `.env`
* Execute o docker-compose up -d
* Acesse a administração do rabbitmq e crie uma exchange do tipo `fannout`. Ela será uma `Dead Letter Exchange` para receber as mensagens que não forem processadas.
* Crie uma `Dead Letter Queue` e faça o binding da mesma na `Dead Letter Exchange` que acaba de ser criada. Não há necessidade de routing_key.
* No arquivo `.env` informe o nome da `Dead Letter Exchange` no parâmetro: `RABBITMQ_DLX`
* Crie uma conta de serviço no GCP que tenha permissão para gravar no google cloud storage. Baixe o arquivo json com as credenciais e salve-o na raiz do projeto exatamente com o nome: `bucket-credential.json`
## Executando
Para executar o encoder rode o comando `make server` diretamente no container. Exemplo:
```
docker exec encoder-new2_app_1 make server
```
Sendo que `microsservico-enconder_app_1` é o nome nome do container gerado pelo docker-compose.
## Padrão de envio de mensagem para o encoder
Para que uma mensagem possa ser parseada pelo sistema de encoder, ela deverá chegar no seguinte formato em json:
```
{
"resource_id": "my-resource-id-can-be-a-uuid-type",
"file_path": "convite.mp4"
}
```
* `resource_id`: Representa o ID do vídeo que você deseja converter. Ele é do tipo string.
* `file_path`: É o caminho completo do vídeo mp4 dentro do bucket.
## Padrão de retorno de mensagem pelo encoder
### Sucesso no processamento
Para cada vídeo processado, o encoder enviará para uma exchange (a ser configurada no .env) o resultado do processamento.
Caso o processamento tenha sido concluído com sucesso, o padrão de retorno em json será:
```
{
"id":"bbbdd123-ad05-4dc8-a74c-d63a0a2423d5",
"output_bucket_path":"codeeducationtest",
"status":"COMPLETED",
"video":{
"encoded_video_folder":"b3f2d41e-2c0a-4830-bd65-68227e97764f",
"resource_id":"aadc5ff9-0b0d-13ab-4a40-a11b2eaa148c",
"file_path":"convite.mp4"
},
"Error":"",
"created_at":"2020-05-27T19:43:34.850479-04:00",
"updated_at":"2020-05-27T19:43:38.081754-04:00"
}
```
Sendo que `encoded_video_folder` é a pasta que possui o vídeo convertido.
### Erro no processamento
Caso o processamento tenha encontrado algum erro, o padrão de retorno em json será:
```
{
"message": {
"resource_id": "aadc5ff9-010d-a3ab-4a40-a11b2eaa148c",
"file_path": "convite.mp4"
},
"error":"Motivo do erro"
}
```
Além disso, o encoder enviará para uma dead letter exchange a mensagem original que houve problema durante o processamento.
Basta configurar a DLX desejada no arquivo .env no parâmetro: `RABBITMQ_DLX`