Pular para o conteúdo
charmotion

Figurinhas de vídeo do Telegram a partir de uma animação de personagem

Por equipe Charmotion · Atualizado em

Ilustração de capa do guia de figurinhas e emojis: figurinhas de vídeo do Telegram a partir de uma animação de personagem, com personagens de demonstração do Charmotion

Para fazer uma figurinha em vídeo do Telegram, exporte um .WEBM codificado em VP9, com um lado de exatamente 512 px e o outro de 512 px ou menos, com até 3 segundos, até 30 fps, no máximo 256 KB e sem áudio. Converta uma animação de personagem com fundo transparente com ffmpeg e depois envie o conjunto pelo bot @Stickers.

Principais pontos

  • Figurinhas em vídeo são WEBM com VP9: um lado com exatamente 512 px, no máximo 3 s, até 30 fps, no máximo 256 KB, sem stream de áudio.
  • Coloque -c:v libvpx-vp9 antes de -i, ou o decodificador nativo do ffmpeg descarta a transparência do WebM.
  • Codifique com -pix_fmt yuva420p e aumente o -crf até o arquivo ficar abaixo de 256 KB.
  • Emoji personalizados seguem as mesmas regras de vídeo, com exatamente 100×100 px; qualquer pessoa pode criá-los, mas adicionar e usar conjuntos de emoji personalizados é um recurso do Telegram Premium.
  • Figurinhas animadas .TGS são um formato vetorial separado: 512×512, 60 fps, 3 s, 64 KB.

Já tem um personagem ou logo? Veja seu personagem em telas reais de app: telas de splash, onboarding, carregamento e estado vazio. É grátis, roda no navegador e não envia nada.

Quais são os requisitos exatos do Telegram para figurinhas em vídeo?

O Telegram publica as regras na página de figurinhas. Figurinhas em vídeo exigem o Telegram 8.5 ou superior, e cada arquivo precisa atender a todos estes requisitos ao mesmo tempo:

RequisitoFigurinha em vídeoEmoji em vídeo
Contêiner e codec.WEBM, VP9.WEBM, VP9
DimensõesUm lado com exatamente 512 px e o outro com 512 px ou menosExatamente 100×100 px
DuraçãoNo máximo 3 segundosNo máximo 3 segundos
Taxa de framesAté 30 fpsAté 30 fps
Tamanho do arquivoNo máximo 256 KBNo máximo 256 KB
ÁudioSem faixa de áudioSem faixa de áudio
LoopDeve rodar em loopDeve rodar em loop

Nas palavras do Telegram: "A duração do vídeo não deve passar de 3 segundos. A taxa de quadros pode ser de até 30 FPS. O vídeo deve estar em loop para uma melhor experiência do usuário. O tamanho do vídeo não deve passar de 256 KB." A página de figurinhas também diz que o vídeo "não deve ter faixa de áudio", o que é mais rígido do que uma faixa sem som. Remova o áudio por completo com -an.

Um personagem quadrado é o caso fácil: redimensione para 512×512 e as duas regras de dimensão são atendidas. O guia de codificação VP9 do próprio Telegram cobre as configurações do Adobe Media Encoder e observa que "programas como Handbrake ou ffmpeg oferecem suporte nativo à codificação .WEBM com VP9", mas não traz nenhum comando ffmpeg. O comando abaixo preenche essa lacuna.

Como exportar um WEBM com fundo transparente que o Telegram aceite?

Comece com um arquivo mestre com fundo transparente. A melhor origem é um WebM VP9 com canal alfa, porque já usa o codec que o Telegram exige e o ffmpeg lê o alfa sem problemas quando você escolhe o decodificador certo. Este comando foi executado no ffmpeg 7.1.1 com um WebM transparente de 1080×1080 e gerou um arquivo de 512×512, 3,000 segundos e 27 KB, com o alfa preservado:

ffmpeg -c:v libvpx-vp9 -i character.webm -t 3 -vf "fps=30,scale=512:512:force_original_aspect_ratio=decrease" -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 40 -deadline good -an sticker.webm

O que cada parte faz:

  • -c:v libvpx-vp9 antes de -i força o decodificador libvpx, que lê o plano alfa.
  • -t 3 corta a saída em 3 segundos.
  • fps=30 limita a taxa de quadros; scale=512:512:force_original_aspect_ratio=decrease ajusta o lado maior para 512 px.
  • -pix_fmt yuva420p mantém o canal alfa na saída.
  • -b:v 0 -crf 40 é o modo de qualidade constante; um CRF mais alto gera um arquivo menor.
  • -an remove qualquer faixa de áudio.

Se a origem for um GIF, tire o -c:v libvpx-vp9 do início; o GIF só tem transparência do tipo liga/desliga, então espere bordas duras. Se for um .mov com alfa em HEVC, o suporte do ffmpeg para decodificar esse alfa não foi verificado nestes testes, por isso o WebM transparente é o arquivo mestre mais seguro.

Evite cortar às cegas um loop de 4 segundos em 3 segundos: o salto do último frame de volta ao primeiro vai aparecer. Prefira uma reação única que já caiba no limite ou um loop criado para 3 segundos.

Por que minha figurinha perdeu o fundo transparente?

Quase sempre porque o ffmpeg decodificou a entrada com o decodificador VP9 nativo, que ignora o canal alfa armazenado no WebM. Os frames chegam opacos, geralmente sobre preto, e tudo o que vem depois é codificado sem transparência. Forçar o libvpx como decodificador de entrada resolve: no teste local, decodificar com -c:v libvpx-vp9 retornou frames RGBA em que 75% dos pixels eram transparentes.

A segunda causa é o formato de pixel da saída. Sem -pix_fmt yuva420p, o libvpx-vp9 codifica em yuv420p simples e descarta o alfa, mesmo que a entrada tivesse.

Comparação ampliada entre uma borda suave com canal alfa e uma borda serrilhada de GIF de 1 bit sobre um gradiente

Conferir o resultado confunde, porque o ffprobe muitas vezes informa pix_fmt=yuv420p para um WebM que de fato tem alfa. Procure a tag ALPHA_MODE=1:

ffprobe -v error -show_streams sticker.webm | grep -i alpha

Se a tag não aparecer, o arquivo não tem plano alfa. Refaça a conversão com o decodificador antes de -i e o formato de pixel yuva depois dele.

Como ficar abaixo de 256 KB sem estragar a qualidade?

256 KB são 262.144 bytes. Confira o número exato de bytes antes de enviar:

ls -l sticker.webm  # must be <=262144 bytes for Telegram; lower -crf → bigger file, raise crf (e.g. 45-50) or fps 24 to shrink

Depois siga esta sequência, conferindo de novo após cada passo:

  1. Aumente o CRF. Passe de 40 para 45 e depois para 50. Um CRF mais alto significa menos bits por frame.
  2. Reduza a taxa de quadros. Troque fps=30 por fps=24. Movimentos suaves de personagem costumam aguentar bem essa mudança.
  3. Encurte o clipe. Dois segundos de uma reação clara muitas vezes funcionam melhor do que três segundos de movimento sem rumo.
  4. Corte o espaço vazio. Margens transparentes também gastam bits; recorte bem justo e depois redimensione para que o lado maior tenha 512 px.

O tamanho final depende do conteúdo. Um personagem que só pisca comprime muito melhor do que um que dá um pulo de corpo inteiro, então teste cada figurinha em vez de supor que uma única configuração serve para o pacote todo.

Como enviar o pacote (com @Stickers ou pela Bot API)?

O caminho mais comum é o bot @Stickers do Telegram. Crie um novo conjunto de figurinhas em vídeo (o comando do bot é /newvideo), envie cada arquivo .WEBM, associe um ou mais emojis a ele e publique o conjunto com um nome curto.

Para automatizar, use o método createNewStickerSet da Bot API. As regras que mais causam erros:

  • Cada InputSticker tem um format: "static" para .WEBP ou .PNG, "animated" para .TGS, "video" para .WEBM.
  • O nome do conjunto deve terminar em _by_<bot_username> e ter de 1 a 64 caracteres.
  • Você pode enviar de 1 a 50 figurinhas iniciais, cada uma com 1 a 20 emojis em emoji_list.
  • "Figurinhas animadas e em vídeo não podem ser enviadas por URL HTTP", então envie o próprio arquivo.
  • sticker_type é "regular", "mask" ou "custom_emoji".

A miniatura do conjunto (setStickerSetThumbnail) deve ter o mesmo formato do conjunto. Uma miniatura .WEBM pode ter até 32 KB; uma miniatura .WEBP ou .PNG deve ter exatamente 100×100 px e até 128 KB; uma miniatura .TGS, até 32 KB.

Figurinha em vídeo ou figurinha animada .TGS: qual usar?

As figurinhas animadas .TGS são animações vetoriais, um subconjunto do Lottie exportado do After Effects com o plugin Bodymovin-TG do Telegram. Os limites são outros: um canvas de 512×512 do qual os objetos não podem sair, no máximo 3 segundos, sempre em loop, exatamente 60 fps e no máximo 64 KB "após a renderização no Bodymovin".

Muitos recursos do After Effects são proibidos no .TGS, entre eles expressions, máscaras, efeitos de camada, imagens, solids, textos, camadas 3D, merge paths, gradient strokes, repeaters e time remapping. Um personagem renderizado em 3D ou pintado em pixels não pode virar .TGS de jeito nenhum, porque imagens não são permitidas.

Vídeo (.WEBM)Animada (.TGS)
OrigemQualquer vídeo renderizado com alfaFormas vetoriais do After Effects
Taxa de framesAté 30 fps60 fps
Tamanho máx.256 KB64 KB
Duração máx.3 s3 s

Use figurinhas em vídeo quando você já tem um personagem renderizado ou gerado com IA. Use .TGS apenas se o personagem foi criado com formas vetoriais planas no After Effects.

Como criar um emoji personalizado de 100x100 a partir da mesma animação?

A regra do Telegram é curta: "Para emojis, o vídeo deve ter exatamente 100x100 pixels." Todo o resto é igual às figurinhas em vídeo:

Especificação do emoji personalizadoValor
Emoji em vídeo.WEBM, VP9, exatamente 100×100 px, até 3 s, até 30 fps, no máximo 256 KB, sem faixa de áudio
Emoji estáticoExatamente 100×100 px (mesmas regras de imagem das figurinhas estáticas)
Quem pode usar"Qualquer pessoa pode criar novos emojis personalizados", mas adicionar e usar conjuntos personalizados é um recurso do Telegram Premium
Cor adaptativaEnvie /adaptive ao criar o conjunto para ter emojis de uma só cor que acompanham o tema

A regra do Premium importa no planejamento: a página de figurinhas do Telegram diz que adicionar e usar conjuntos personalizados é "atualmente um recurso exclusivo" do Premium. Se a maior parte do seu público não usa Premium, um conjunto comum de figurinhas em vídeo, que qualquer pessoa pode usar, alcança mais gente. A partir de um arquivo mestre quadrado com fundo transparente:

ffmpeg -c:v libvpx-vp9 -i character.webm -t 3 -vf "fps=30,scale=100:100" -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 40 -an emoji.webm

Em 100 px, os detalhes somem. Escolha uma animação em que a silhueta inteira muda, como um aceno de cabeça, um pulo ou um tchau, em vez de uma expressão facial sutil. Recorte para que o personagem ocupe todo o frame.

Crie o conjunto com sticker_type definido como "custom_emoji" na Bot API ou pelo @Stickers. Para emojis de uma só cor que devem acompanhar o tema e a cor do texto do usuário, o Telegram permite enviar /adaptive ao criar o conjunto de emojis; isso combina mais com o símbolo de um logo do que com um personagem colorido.

Como começar a partir de uma animação de personagem do Charmotion?

O Charmotion transforma um personagem, mascote ou logo enviado em 17 animações como um único arquivo .riv em poucos minutos. WebM transparente (VP9 com alfa) e MOV (HEVC com alfa) em 1080×1080, MP4 e um GIF de 480 px são exportados sob demanda, em cerca de um minuto. Ele não exporta pacotes de figurinhas prontos. Use o WebM transparente (planos pagos, a partir de US$ 20/mês) como character.webm nos comandos acima: reações únicas como success, yes e no são figurinhas naturais, e a opção -t 3 corta o que for mais longo para o limite de 3 segundos do Telegram.

A origem de 1080×1080 deixa bastante folga: o filtro de escala reduz para 512×512 nas figurinhas e 100×100 nos emojis, sem nenhuma ampliação. Os humores em loop são criados como loops perfeitos com duração própria, então, se algum passar de 3 segundos, confira o ponto de corte antes de enviar, ou use-o só onde uma duração maior é permitida, como no Discord ou no WhatsApp.

Seis reações únicas: success, error, yes, no, enter e exit
As reações únicas são disparadas com triggers e voltam ao humor atual quando terminam.

Como criar uma figurinha em vídeo para o Telegram a partir de uma animação com fundo transparente

  1. Escolha o clipe. Escolha uma reação curta ou um loop que fique claro em até 3 segundos.
  2. Converta com o ffmpeg. Execute o comando testado com -c:v libvpx-vp9 antes de -i, -t 3, fps=30, escala de 512 px, -pix_fmt yuva420p e -an.
  3. Confira o alfa. Execute o ffprobe e confirme que a tag ALPHA_MODE=1 está presente.
  4. Confira o tamanho. Confirme que o arquivo tem 262.144 bytes ou menos; se não tiver, aumente o CRF ou reduza o fps.
  5. Envie. Crie um conjunto de vídeo no @Stickers, envie cada WEBM e atribua um emoji, ou chame createNewStickerSet com format "video".
  6. Adicione uma miniatura. Defina uma miniatura em WEBM de até 32 KB para que ela siga o formato do conjunto.

Perguntas frequentes

Uma figurinha em vídeo do Telegram pode ter mais de 3 segundos?

Não. A página de figurinhas do Telegram diz que a duração do vídeo não pode passar de 3 segundos, tanto para figurinhas quanto para emojis em vídeo. Corte com a opção -t 3 do ffmpeg ou, melhor ainda, escolha uma animação que termine em até 3 segundos, assim o ponto de loop fica limpo em vez de pular no meio do movimento.

Uma figurinha em vídeo do Telegram precisa ser quadrada?

Não. Um dos lados precisa ter exatamente 512 pixels e o outro pode ter 512 pixels ou menos, então 512×384 é válido. Os emojis em vídeo são a exceção e precisam ter exatamente 100×100 pixels. Um personagem quadrado redimensionado para 512×512 atende à regra das figurinhas sem nenhuma margem extra ou corte.

Posso converter um MP4 em figurinha em vídeo do Telegram?

Você pode convertê-lo para WEBM VP9, mas um MP4 H.264 padrão não tem canal alfa, então a figurinha terá um fundo sólido. Para um personagem que flutua sobre a conversa, comece de uma fonte com transparência, como um WebM VP9 com alfa ou um arquivo mestre em ProRes 4444.

Por que minha figurinha tem cantos pretos?

O canal alfa se perdeu na conversão. Coloque -c:v libvpx-vp9 antes de -i para que o ffmpeg decodifique o alfa do WebM, e codifique com -pix_fmt yuva420p. Depois, confirme a tag ALPHA_MODE=1 com o ffprobe antes de enviar o arquivo de novo ao @Stickers. Uma fonte em GIF também pode causar cantos duros e serrilhados.

Respostas rápidas deste guia

Fontes

Guias relacionados