Stickers de video para Telegram a partir de una animación de personaje
Por el equipo de Charmotion · Actualizado el

Para crear un sticker de video de Telegram, exporta un .WEBM codificado con VP9, con un lado de exactamente 512 px y el otro de 512 px o menos, de no más de 3 segundos, hasta 30 fps, 256 KB como máximo y sin audio. Convierte una animación de personaje con fondo transparente con ffmpeg y luego sube el set a través del bot @Stickers.
Puntos clave
- Los stickers de video son WEBM con VP9: un lado de exactamente 512 px, 3 s como máximo, hasta 30 fps, 256 KB como máximo y sin pista de audio.
- Pon
-c:v libvpx-vp9antes de-i; si no, el decodificador integrado de ffmpeg descarta la transparencia del WebM. - Codifica con
-pix_fmt yuva420py sube el-crfhasta que el archivo pese menos de 256 KB. - Los emoji personalizados siguen las mismas reglas de video, a exactamente 100×100 px; cualquiera puede crearlos, pero agregar y usar sets de emoji personalizados es una función de Telegram Premium.
- Los stickers animados .TGS son un formato vectorial aparte: 512×512, 60 fps, 3 s, 64 KB.
¿Ya tienes un personaje o logo? Mira tu personaje en pantallas reales de una app: pantallas de splash, onboarding, carga y estado vacío. Es gratis, funciona en tu navegador y no sube nada.
¿Cuáles son los requisitos exactos de Telegram para los stickers de video?
Telegram publica las reglas en su página de stickers. Los stickers de video requieren Telegram 8.5 o superior, y cada archivo debe cumplir todos estos requisitos a la vez:
| Requisito | Sticker de video | Emoji de video |
|---|---|---|
| Contenedor y códec | .WEBM, VP9 | .WEBM, VP9 |
| Dimensiones | Un lado de exactamente 512 px y el otro de 512 px o menos | Exactamente 100×100 px |
| Duración | 3 segundos como máximo | 3 segundos como máximo |
| Cuadros por segundo | Hasta 30 fps | Hasta 30 fps |
| Peso del archivo | 256 KB como máximo | 256 KB como máximo |
| Audio | Sin flujo de audio | Sin flujo de audio |
| Loop | Debe estar en loop | Debe estar en loop |
En palabras de Telegram: "La duración del video no debe superar los 3 segundos. La velocidad de fotogramas puede ser de hasta 30 FPS. El video debería estar en loop para una experiencia de usuario óptima. El tamaño del video no debe superar los 256 KB." La página de stickers también indica que el video "no debe tener flujo de audio", algo más estricto que una pista silenciada. Elimina el audio por completo con -an.
Un personaje cuadrado es el caso fácil: escálalo a 512×512 y cumplirás ambas reglas de dimensiones. La guía de codificación VP9 de Telegram explica la configuración de Adobe Media Encoder y señala que "programas como Handbrake o ffmpeg admiten de forma nativa la codificación .WEBM con VP9", pero no incluye ningún comando de ffmpeg, así que el de abajo cubre ese vacío.
¿Cómo exporto un WEBM con fondo transparente que Telegram acepte?
Parte de un máster con fondo transparente. La mejor fuente es un WebM VP9 con alfa, porque ya usa el códec que pide Telegram y ffmpeg lee su canal alfa de forma fiable si eliges el decodificador correcto. Este comando se ejecutó en ffmpeg 7.1.1 sobre un WebM transparente de 1080×1080 y generó un archivo de 512×512, de exactamente 3 segundos y 27 KB, con el canal alfa intacto:
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
Qué hace cada parte:
-c:v libvpx-vp9antes de-ifuerza el decodificador libvpx, que lee el plano alfa.-t 3corta la salida a los 3 segundos.fps=30limita los cuadros por segundo;scale=512:512:force_original_aspect_ratio=decreaseajusta el lado más largo a 512 px.-pix_fmt yuva420pconserva el canal alfa en la salida.-b:v 0 -crf 40es el modo de calidad constante; un CRF más alto da un archivo más liviano.-anelimina cualquier flujo de audio.
Si tu fuente es un GIF, quita el -c:v libvpx-vp9 inicial; un GIF solo tiene transparencia de todo o nada, así que espera bordes duros. Si es un .mov con HEVC y alfa, en estas pruebas no se verificó que ffmpeg decodifique ese alfa, así que el WebM con fondo transparente es el máster más seguro.
No cortes sin más un loop de 4 segundos a los 3 segundos: se notará el salto del último fotograma al primero. Es mejor una reacción puntual que ya quepa, o un loop pensado para 3 segundos.
¿Por qué mi sticker perdió el fondo transparente?
Casi siempre porque ffmpeg decodificó la entrada con su decodificador VP9 integrado, que ignora el canal alfa guardado en un WebM. Los fotogramas llegan opacos, normalmente sobre negro, y todo lo que sigue se codifica sin transparencia. Se soluciona forzando libvpx como decodificador de entrada: en la prueba local, decodificar con -c:v libvpx-vp9 devolvió fotogramas RGBA en los que el 75 % de los píxeles eran transparentes.
La segunda causa es el formato de píxel de salida. Sin -pix_fmt yuva420p, libvpx-vp9 codifica en yuv420p simple y descarta el alfa aunque la entrada lo tuviera.

Comprobar el resultado confunde, porque ffprobe suele indicar pix_fmt=yuv420p en un WebM que sí tiene alfa. Busca en su lugar la etiqueta ALPHA_MODE=1:
ffprobe -v error -show_streams sticker.webm | grep -i alpha
Si falta la etiqueta, el archivo no tiene plano alfa. Vuelve a ejecutar la conversión con el decodificador antes de -i y el formato de píxel yuva después.
¿Cómo bajo de 256 KB sin arruinar la calidad?
256 KB son 262 144 bytes. Revisa el número exacto de bytes antes de subirlo:
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
Luego sigue esta escala y vuelve a comprobar después de cada paso:
- Sube el CRF. Pasa de 40 a 45 y luego a 50. Un CRF más alto significa menos bits por fotograma.
- Baja los cuadros por segundo. Cambia
fps=30porfps=24. El movimiento fluido de un personaje suele aguantarlo bien. - Acorta el clip. Dos segundos de una reacción clara suelen funcionar mejor que tres segundos de movimiento sin rumbo.
- Recorta el espacio vacío. Los márgenes transparentes también consumen bits; recorta ajustado y luego escala para que el lado más largo mida 512 px.
El peso final depende del contenido. Un personaje que solo parpadea se comprime mucho mejor que uno que salta con todo el cuerpo, así que prueba cada sticker en lugar de suponer que una sola configuración sirve para todo el pack.
¿Cómo subo el pack (con @Stickers o con la Bot API)?
La vía habitual es el bot @Stickers de Telegram. Crea un nuevo set de stickers de video (el comando del bot es /newvideo), envía cada archivo .WEBM, asígnale uno o más emoji y publica el set con un nombre corto.
Para automatizarlo, usa el método createNewStickerSet de la Bot API. Las reglas que más errores causan:
- Cada
InputStickertiene unformat:"static"para .WEBP o .PNG,"animated"para .TGS y"video"para .WEBM. - El nombre del set debe terminar en
_by_<bot_username>y tener de 1 a 64 caracteres. - Puedes enviar de 1 a 50 stickers iniciales, cada uno con 1 a 20 emoji en
emoji_list. - "Los stickers animados y de video no se pueden subir mediante una URL HTTP", así que sube el archivo en sí.
sticker_typees"regular","mask"o"custom_emoji".
La miniatura del set (setStickerSetThumbnail) debe coincidir con el formato del set. Una miniatura .WEBM puede pesar hasta 32 KB; una miniatura .WEBP o .PNG debe medir exactamente 100×100 px y pesar hasta 128 KB; una miniatura .TGS, hasta 32 KB.
Sticker de video vs sticker animado .TGS: ¿cuál conviene usar?
Los stickers animados .TGS son animaciones vectoriales, un subconjunto de Lottie exportado desde After Effects con el plugin Bodymovin-TG de Telegram. Sus límites son distintos: un lienzo de 512×512 del que los objetos no deben salir, 3 segundos como máximo, siempre en loop, exactamente 60 fps y no más de 64 KB "después del render en Bodymovin".
Muchas funciones de After Effects están prohibidas en .TGS, entre ellas expresiones, máscaras, efectos de capa, imágenes, sólidos, textos, capas 3D, merge paths, trazos con degradado, repetidores y reasignación de tiempo. Un personaje renderizado en 3D o pintado en píxeles no puede convertirse en .TGS de ninguna manera, porque las imágenes no están permitidas.
| Video (.WEBM) | Animado (.TGS) | |
|---|---|---|
| Fuente | Cualquier video renderizado con alfa | Formas vectoriales de After Effects |
| Cuadros por segundo | Hasta 30 fps | 60 fps |
| Peso máx. | 256 KB | 64 KB |
| Duración máx. | 3 s | 3 s |
Usa stickers de video si ya tienes un personaje renderizado o generado con IA. Usa .TGS solo si el personaje se construyó con formas vectoriales planas en After Effects.
¿Cómo hago un emoji personalizado de 100x100 con la misma animación?
La regla de Telegram es breve: "Para emoji, el video debe medir exactamente 100x100 píxeles." Todo lo demás coincide con los stickers de video:
| Especificación de emoji personalizado | Valor |
|---|---|
| Emoji de video | .WEBM, VP9, exactamente 100×100 px, 3 s como máximo, hasta 30 fps, 256 KB como máximo, sin flujo de audio |
| Emoji estático | Exactamente 100×100 px (mismas reglas de imagen que los stickers estáticos) |
| Quién puede usarlos | "Cualquiera puede crear nuevos emoji personalizados", pero agregar y usar sets personalizados es una función de Telegram Premium |
| Color adaptable | Envía /adaptive al crear el set para emoji de un solo color que siguen el tema |
La regla de Premium importa al planificar: la página de stickers de Telegram dice que agregar y usar sets personalizados es "actualmente una función exclusiva" de Premium. Si la mayor parte de tu público no tiene Premium, un set normal de stickers de video, que cualquiera puede usar, llega a más gente. A partir de un máster cuadrado con fondo 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
A 100 px, los detalles desaparecen. Elige una animación en la que cambie toda la silueta, como un asentimiento, un salto o un saludo, en lugar de una expresión facial sutil. Recorta para que el personaje llene el fotograma.
Crea el set con sticker_type establecido en "custom_emoji" en la Bot API, o desde @Stickers. Para emoji de un solo color que sigan el tema y el color de texto del usuario, Telegram te permite enviar /adaptive al crear el set de emoji; eso le sienta mejor a un isotipo de logo que a un personaje a todo color.
¿Cómo empiezo a partir de una animación de personaje de Charmotion?
Charmotion convierte un personaje, mascota o logo que subes en 17 animaciones como un solo archivo .riv en pocos minutos. WebM transparente (VP9 con alfa) y MOV (HEVC con alfa) a 1080×1080, MP4 y un GIF de 480 px se exportan bajo demanda, en alrededor de un minuto. No exporta packs de stickers listos. Usa el WebM transparente (planes de pago, desde $20/mes) como character.webm en los comandos de arriba: las reacciones puntuales como success, yes y no son stickers naturales, y la opción -t 3 recorta lo que sea más largo al límite de 3 segundos de Telegram.
La fuente de 1080×1080 deja margen de sobra: el filtro de escala la reduce a 512×512 para stickers y a 100×100 para emoji sin ningún reescalado hacia arriba. Los estados de ánimo en loop están diseñados como loops continuos con su propia duración, así que si alguno dura más de 3 segundos, revisa el punto de corte antes de subirlo, o úsalo solo donde se permita una duración mayor, como Discord o WhatsApp.

Cómo hacer un sticker de video para Telegram a partir de una animación con fondo transparente
- Elige el clip. Elige una reacción corta o un loop que se entienda bien en 3 segundos.
- Convierte con ffmpeg. Ejecuta el comando probado con
-c:v libvpx-vp9antes de-i,-t 3,fps=30, escala a 512 px,-pix_fmt yuva420py-an. - Comprueba el alfa. Ejecuta ffprobe y confirma que aparece la etiqueta
ALPHA_MODE=1. - Comprueba el peso. Confirma que el archivo pesa 262 144 bytes o menos; si no, sube el CRF o baja los fps.
- Súbelo. Crea un set de video en @Stickers, envía cada WEBM y asígnale un emoji, o llama a createNewStickerSet con format "video".
- Agrega una miniatura. Configura una miniatura WEBM de hasta 32 KB para que coincida con el formato del set.
Preguntas frecuentes
¿Un sticker de video de Telegram puede durar más de 3 segundos?
No. La página de stickers de Telegram indica que la duración del video no debe superar los 3 segundos, tanto para stickers como para emojis de video. Recorta con la opción -t 3 de ffmpeg o, mejor aún, elige una animación que termine en menos de 3 segundos para que el punto de loop quede limpio en lugar de saltar a mitad del movimiento.
¿Un sticker de video de Telegram tiene que ser cuadrado?
No. Un lado debe medir exactamente 512 píxeles y el otro puede medir 512 píxeles o menos, así que 512×384 es válido. Los emojis de video son la excepción y deben medir exactamente 100×100 píxeles. Un personaje cuadrado escalado a 512×512 cumple la regla de los stickers sin necesidad de agregar márgenes ni recortar.
¿Puedo convertir un MP4 en un sticker de video de Telegram?
Puedes convertirlo a WEBM VP9, pero un MP4 H.264 estándar no tiene canal alfa, así que el sticker tendrá un fondo sólido. Para un personaje que flote sobre el chat, parte de una fuente con transparencia, como un WebM VP9 con alfa o un máster ProRes 4444.
¿Por qué mi sticker tiene esquinas negras?
El canal alfa se perdió durante la conversión. Pon -c:v libvpx-vp9 antes de -i para que ffmpeg decodifique el alfa del WebM y codifica con -pix_fmt yuva420p. Luego confirma la etiqueta ALPHA_MODE=1 con ffprobe antes de volver a subir el archivo a @Stickers. Una fuente GIF también puede producir esquinas duras y con bordes irregulares.