Conheça o Transloadify: acesse a Transloadit pela linha de comando
Em 14 de fevereiro de 2017, anunciamos a versão beta do Transloadify, uma ferramenta de linha de comando para acessar a plataforma de codificação da Transloadit. Com ela, era possível automatizar o processamento de mídia sem antes escrever uma integração com um SDK. Este passo a passo, escrito por Adrian, foi publicado originalmente em transloadify.io.
O Transloadify foi descontinuado desde então. Sua CLI passou
para o SDK de Node.js, hoje publicado como @transloadit/node. Os exemplos abaixo usam a versão 4.12.0
desse pacote. A motivação original e o fluxo de trabalho de marca-d’água em vídeos continuam válidos;
os antigos comandos de registro da versão beta e as instruções de instalação do pacote, não.
Introdução
Imagine um Raspberry Pi que grava vídeos para um projeto de Internet das Coisas. Você quer aplicar uma marca-d’água em cada vídeo antes de publicá-lo no YouTube, deixando a CPU do dispositivo livre para as outras tarefas dele. Ao fazer o upload da gravação finalizada para a Transloadit, você pode realizar essa codificação remotamente.
A mesma abordagem pode ajudar com uma grande biblioteca de mídia em uma máquina mais potente. As predefinições e os Robots de processamento da Transloadit permitem que você descreva a saída de que precisa, enquanto um script de CLI cuida dos arquivos locais. Os tempos de upload e de processamento continuam dependendo dos seus arquivos, da sua conexão e das suas Instructions.
Primeiro vamos processar um vídeo, depois monitorar um diretório e, por fim, exportar o resultado diretamente para o YouTube. Os comandos que criam Assemblies usam a sua conta e podem gerar cobranças de processamento.
Instalação
Instale o Node.js 24 ou mais recente para este passo a passo. Execute a CLI na versão fixada, sem instalação global:
npx -y @transloadit/node@4.12.0 --help
npx -y @transloadit/node@4.12.0 assemblies create --help
Outras fontes
O anúncio original mencionava um pacote AUR do Arch Linux e uma imagem Docker planejada. Essas eram notas históricas de distribuição, não pré-requisitos para este passo a passo atualizado. Use o SDK oficial de Node.js para o contrato de CLI mostrado aqui.
Registro e autenticação
Crie uma conta pelo site da Transloadit e obtenha uma Auth Key e um Auth
Secret na sua conta. Faça com que o seu gerenciador de segredos forneça TRANSLOADIT_KEY e TRANSLOADIT_SECRET
ao processo da CLI. Não coloque os valores deles no histórico do shell, no controle de versão nem em
um app cliente.
A CLI também lê um arquivo .env no diretório atual e ~/.transloadit/credentials no formato
dotenv; as variáveis de ambiente do shell têm precedência. Mantenha os arquivos de credenciais
privados. Os nomes originais transloadify register, transloadify authenticate, o arquivo .transloadify e
as variáveis TRANSLOADIT_AUTH_* não correspondem à configuração usada por estes comandos.
Execute a CLI somente em uma máquina à qual você possa confiar o seu Auth Secret. Os Templates mantêm as credenciais de armazenamento na Transloadit, mas não tornam seguro distribuir um Auth Secret para dispositivos não confiáveis. Integrações em navegadores e apps móveis devem obter Instructions assinadas de curta duração a partir de um servidor autenticado.
Especificação das Assembly Instructions
Salve este objeto de Steps como steps.json. Antes de processar um vídeo, substitua a URL da
marca-d’água por uma imagem HTTPS publicamente acessível que você controle:
{
"video_encode": {
"robot": "/video/encode",
"use": ":original",
"preset": "webm",
"watermark_url": "https://example.org/watermark.png",
"result": true
}
}
--steps aceita este objeto. A predefinição WebM explícita corresponde ao nome do arquivo de saída
abaixo. Consulte a documentação de /video/encode para ver o
posicionamento da marca-d’água e outras configurações de saída, e as
Assembly Instructions para saber como compor Steps.
Processamento de um vídeo
Crie o diretório de saída e processe uma gravação finalizada:
mkdir -p watermarked
npx -y @transloadit/node@4.12.0 assemblies create \
--steps steps.json -i originals/recording.webm -o watermarked/recording.webm
O comando faz o upload da entrada, aguarda a Assembly e baixa o resultado selecionado. Verifique o status de encerramento do processo e qualquer mensagem de diagnóstico; a ausência de mensagens não é o contrato de sucesso. Este Template produz um resultado por entrada, então um único nome de arquivo de saída é adequado. Para vários arquivos de resultado, use um diretório de saída e consulte as opções de saída da CLI.
Automação
A integração mais previsível é invocar o comando depois que o seu gravador fechar o arquivo de saída. Como alternativa, monitore um diretório existente:
mkdir -p originals watermarked
npx -y @transloadit/node@4.12.0 assemblies create \
--watch --steps steps.json -i originals/ -o watermarked/
O monitoramento inclui as entradas existentes e as alterações posteriores. Grave fora do diretório monitorado e depois mova a gravação concluída para dentro dele, no mesmo sistema de arquivos. Um evento do sistema de arquivos, por si só, não prova que uma gravação terminou. Mantenha as saídas fora do diretório de entrada para evitar processar seus próprios resultados e encerre o monitoramento com Ctrl+C ao terminar.
Isso também pode se encaixar em um fluxo de trabalho com pasta compartilhada, como o Dropbox: uma pessoa contribui com gravações concluídas, enquanto uma máquina confiável as processa em uma pasta de saída separada. Antes de ativar o monitoramento, leve em conta como o cliente de sincronização lida com arquivos parciais. Um monitor de arquivos não é uma fila de tarefas durável; reinicializações ou alterações de arquivos podem gerar outra Assembly. Para novas tentativas confiáveis e auditoria, registre as tarefas e os Assembly IDs na sua aplicação. Os SDKs de Ruby e Go são alternativas quando você precisa de uma integração mais estreita.
Templates
Um arquivo de Steps local é prático para uma máquina. Um Template permite que vários workers confiáveis compartilhem Instructions gerenciadas de forma centralizada. Crie um na interface web ou com:
npx -y @transloadit/node@4.12.0 templates create watermarker steps.json
O comando imprime o Template ID do novo Template. Defina TEMPLATE_ID com esse ID no seu shell; o nome
do Template é um rótulo legível por humanos, não o identificador dele. Em seguida, substitua --steps
por --template:
npx -y @transloadit/node@4.12.0 assemblies create \
--watch --template "$TEMPLATE_ID" -i originals/ -o watermarked/
Os Templates podem referenciar Credenciais de Template para que os segredos de armazenamento fiquem na sua conta da Transloadit. Mantenha também privadas as credenciais de conta da própria CLI.
Como aproveitar ao máximo a Transloadit
Se o destino final for o YouTube, a Transloadit pode exportar o vídeo com marca-d’água diretamente. Isso evita baixá-lo para o Raspberry Pi e fazer o upload dele novamente. Isso não elimina o upload original nem garante uma velocidade de transferência específica.
Autorize o YouTube pela interface de Credenciais de Template e
depois referencie o nome dessa Credencial no seu Template. Consulte /youtube/store
para ver os requisitos de conta e as opções de exportação. Substitua steps.json por:
{
"video_encode": {
"robot": "/video/encode",
"use": ":original",
"preset": "webm",
"watermark_url": "https://example.org/watermark.png"
},
"youtube": {
"robot": "/youtube/store",
"use": "video_encode",
"credentials": "my_youtube_credentials",
"title": "Watermarked Raspberry Pi recording",
"description": "A recording processed with Transloadit.",
"category": "science & technology",
"keywords": "raspberry pi, transloadit",
"visibility": "private"
}
}
O exemplo exporta de forma privada para que você possa inspecionar o resultado antes de publicá-lo. Personalize o título, a descrição, a categoria, as palavras-chave e a visibilidade para o seu fluxo de trabalho. Atualize o Template pelo ID, mantendo explicitamente o nome dele:
npx -y @transloadit/node@4.12.0 templates modify "$TEMPLATE_ID" steps.json --name watermarker
Em seguida, omita -o para evitar baixar os resultados localmente:
npx -y @transloadit/node@4.12.0 assemblies create \
--watch --template "$TEMPLATE_ID" -i originals/
Agora você tem o fluxo de trabalho que o anúncio original do Transloadify se propôs a demonstrar: gravação local, aplicação remota de marca-d’água e publicação direta, coordenadas pela linha de comando. Revise o status da Assembly resultante e a saída no YouTube antes de deixar uma automação rodando sem supervisão.
O passo a passo original foi publicado primeiro em transloadify.io. Os comandos acima foram atualizados para a CLI do SDK de Node.js.
