Legendas no After Effects: Técnica rápida, fácil e indolor
Imagine este cenário: na sala de edição 4 pessoas apenas. O marqueteiro político, editor, redatora e o finalizador. Todos correndo contra o tempo para fechar o programa e entregar na emissora, mas existe um gargalo nesse processo: gerar as legendas no After Effects de maneira super rápida! É isso o que eu vou ensinar como fazer ao longo do post.
O editor corta todas as cenas com maestria com sua katana digital (mais conhecida como Razor Tool no Premiere, precione “C” e confira). A redatora transcreve todas as falas do programa o mais rápido que consegue.
Eu sou o finalizador e tenho na minha mesa agora um programa com aproximadamente 12 minutos para eu gerar as legendas. Tempo disponível para essa tarefa: 10 minutos, menos que a duração do vídeo.
Todos suam frio neste momento. O resto da equipe, aproximadamente 30 profisisonais entre jornalistas, cinegrafistas, fotógrafos, entre outros, permanecem do lado de fora da sala sem saber o que está acontecendo. Após 6 minutos eu me levanto. A palpebra inferior esquerda do marqueteiro começa a tremer involuntáriamente. Eu digo que vou pegar um café. O editor deixa cair a caneta da wacom dentro da caneca dele. Então eu falo: Gente, já tá renderizando, em 2 minutos a legenda está pronta pra aplicar no vídeo! Ainda vai sobrar 2 minutos para um cafézinho.
Se você quer entender como isso é possível, baixe o script para After Effects gratuito no final do artigo. Mas continue lendo para aprender o workflow!
“Como criar legendas no After Effects rapidamente, sem ter que duplicar e alterar dezenas de layers?”
Assim foi a campanha política da qual participei. Durante o dia eu desenvolvia a parte gráfica, motion graphics, lower thirds. Mas no momento de fechar o programa eu tinha que gerar as legendas do vídeo (legendas mesmo, aplicadas diretamente sobre a imagem, não closed caption). Nesse contexto eu desenvolvi uma forma muito fácil de legendar no After Effects. Eu fui aprimorando esse projeto ao longo dos anos, deixando-o mais prático. Mas ambientei a história deste post como se eu já usasse esta versão final, para ser mais didático. Como funciona esse método? Expressões, não poderia deixar de ser.
Workflow
Durante o período de preparação da campanha, eu combinei junto ao editor que eu utilizaria o áudio final do programa para gerar as legendas em alpha channel no After Effects.
Dessa forma ele poderia aplicar a legenda do vídeo diretamente na timeline do programa político e fazer a saída em real-time para a fita (sim, nesta época remota os programas eram entregues nas emissoras com fitas DV. “Problema no upload” significava motoboy no chão).
Você vai poder usar a caixa de texto direto sobre o seu projeto, o pré-render facilitava nossa vida naquele contexto.
A redatora também recebia o áudio e utilizava ele para redigir todo o texto falado, já fazendo as quebras de linhas necessárias para fazer as legendas no After Effects. Sempre que houvesse um período sem legendas ela colocava uma linha em branco no documento.
Com o áudio e a transcrição em mãos, eu jogava o texto em um layer de texto e o áudio na mesma composição, dentro do After Effects e fazia um preview de áudio (“.” do teclado numérico). Eu ajustava o frame-rate do preview para o dobro da velocidade normal, dessa forma eu levava metade do tempo para ouvir o programa todo. Enquanto ouvia, ia gerando marcadores no layer de texto a cada quebra de linha (usando o “*” do teclado numérico). No final desse processo a legenda estava pronta para ser renderizada.
O trabalho de separar o texto e distribuír ele no tempo certo era feito pelas expressões. Mas no seu caso, você vai poder usar o meu script para facilitar esse processo!
Trabalhando com expressões
Não sou perito em expressões, mas com o tempo aprendi a lê-las e agora consigo entender boa parte do que significam. Aliando isso ao Google (que geralmente me leva a uma resposta do Dan Ebberts dada em um post do Creative Cow) eu consigo me virar bem. Acho muito importante dedicar um tempo a estudá-las, meus conhecimentos não são profundos mas já me ajudaram imensamente durante a criação de produtos como o Design and Motion Character Kit, o Simple Car Rig, entre outros produtos.
Pra criar essa solução de legendas eu usei as seguintes expressões:
split()
Esta expressão é fantástica e muito útil. Aprendi como usar nesse post do Zack Lovatt. Ela basicamente quebra qualquer texto em partes, utilizando um caracter a sua escolha para fazer isso.
No post do Zack ele usa para extrair do nome da composição do After Effects o título e subtítulo de um lower thirds. No meu caso, eu uso para quebrar a linha da legenda. A sintaxe é muito simples:
text.sourceText.split('/');
Traduzindo para o bom português, isso significa:
Pega o conteúdo desse texto (text.sourceText
), quebra em diferentes blocos toda vez que aparecer o caracter “/” (split("/")
). Favor me mostrar apenas o bloco 5 (substitua o i por qualquer número). Grato!
Mas como fazer com que o bloco certo apareça no momento exato, conforme o marcador?
Contando marcadores
Se eu conseguisse criar uma expressão que contasse a quantidade de marcadores que eu tenho em um layer conforme o tempo passa, eu mataria essa questão. Eu não consegui. Mas Walter Soyka conseguiu, e explicou como fez nesse post do Creative Cow. Pra ele, um placar digital de Hockey no gelo. Para mim, a solução dos meus problemas.
m = thisLayer.marker; i = m.nearestKey(time).index; if (m.nearestKey(time).time > time){ i--;} if (i < 1) { i = 1}; i--;
Essa expressão é bem mais difícil de ler, mas ela basicamente guarda num envelope chamado “i” o número de referência de cada marcador que passamos. Se o último marcador que passamos for o segundo, “i” será 2. Se for o quinto, “i” será 5.
Já deu pra entender como essas duas expressões funcionam juntas né? Toda vez que passarmos por um marcador, a expressão split vai dar uma olhadinha no envelope pra ver qual número está lá, e então nos mostra o bloco de texto correspondente na hora certa.
Mas e se o número de blocos contados forem menores que a quantidade de marcadores, vai dar erro na expressão, não vai?
try {code} catch(err) {code}
Foi aí que Thomas Euvrie me ajudou. Nesse post ele explica feliz que o After Effects CC 2015 (13.5) ignora problemas simples de expressão sem desabilitá-las. Apenas aparece o banner laranjado ao qual já estamos habituados hoje. Lembram que antes era um pop-up que saltava na tela tocando o som chord.wav no máximo volume?
Mas eu prefiro que não haja notificação alguma, neste caso é só usar a seginte expressão:
try {code1} catch(err) {code2}
Traduzindo: Tente o código 1, se não der certo, rode o código 2. Simples e fácil.
Código final
Juntando tudo isso, é só aplicar o seguinte código no Souce Text da sua caixa de texto:
m = thisLayer.marker; i = m.nearestKey(time).index; if (m.nearestKey(time).time > time){ i--;} if (i < 1) { i = 1}; i--; try {text.sourceText.split('/')[i]} catch(err) {''}
O Script
Se você tem aversão a expressões, eu criei um script que facilita esse processo. Com apenas um clique, você aplica a expressão acima ao seu layer de texto.
Baixe, instale, selecione o seu layer de texto e clique em ‘SUBTITLE’.
Clique para baixar o script de Legendas no After Effects
Siga o workflow explicado acima para trabalhar com suas legendas no After Effects. Use a formatação que quiser, mudando fontes, cores, sombras, sem limitações. Lembre-se de pensar no contraste para dar leitura em qualquer fundo, nesse caso eu costumo usar uma fonte amarela, com borda preta e drop-shadow, bem no estilo das legendas dos VHS.
Conclusão
Chega de sofrer duplicando layers para criar legendas no After Effects, ou usando o gerador de caracteres do Premiere. Deixe que as expressões resolvam esse problema para você, e vá tomar um cafézinho enquanto renderiza. Para usar esse workflow baixe o script para After Effects.
Costuma fazer legendas no After Effects, tem alguma técnica ou dica? Deixe sua experiência nos comentários abaixo.
E aí? Já legendou?