Как я сделал Telegram-кружки из обычного видео с помощью Python, ffmpeg и магии
Создание Telegram-бота, который автоматически превращает любое видео в формат видео-сообщения (кружка). Проект начинался с Python-скрипта на базе moviepy и ffmpeg, затем был обёрнут в Telegram-бота с помощью python-telegram-bot
301 открытий3К показов

Telegram давно позволяет отправлять видеосообщения в формате кружков — они выглядят живо, интерактивно, а главное — привлекают внимание куда лучше, чем обычные видеофайлы. И вот однажды мне захотелось сделать такой кружок… не с камеры, а из заранее подготовленного ролика.
Решил не останавливаться на одном видео — и написал автоматизированный скрипт на Python, а позже — и Telegram-бота, который превращает любое видео в Telegram-кружок. Рассказываю по порядку.
Что такое Telegram-кружок (video message)
С технической точки зрения это:
.mp4
видео;- квадратное (1:1), отображается в виде круга в клиенте;
- длительность — до 60 секунд;
- кодек H.264, контейнер MP4;
- ограниченный битрейт (до 1 МБ/минуту — неофициально);
- поддерживается только в мобильных клиентах (на десктопе выглядит как обычное видео).
Цель
Сделать скрипт (и впоследствии бота), который:
- принимает любое видео;
- обрезает до 1:1;
- уменьшает длительность до 60 секунд;
- кодирует в H.264;
- сохраняет в виде MP4, подходящего для отправки как кружок.
Этап 1: Простой скрипт на Python
Используем moviepy
и ffmpeg
. Убедитесь, что ffmpeg
установлен в системе (ffmpeg -version
).
Установка зависимостей
Код конвертации видео
После этого вы можете отправить полученный файл в Telegram → нажать на скрепку → выбрать видео → и выбрать опцию 📹 Отправить как видео-сообщение (в мобильной версии).
Этап 2: Обёртка в Telegram-бота
Когда всё заработало локально, решил завернуть это в бота, чтобы не запускать скрипт вручную. Использовал python-telegram-bot, Flask
и простой сервер на VPS.
Архитектура:
- Telegram API (бот через Webhook)
- Обработка видео — через тот же скрипт
- Временное хранилище — /tmp и очистка старых файлов.
Логика:
- Получает видео
- Обрабатывает
- Отправляет обратно результат
Фрагмент логики обработки:
Добавил команды /start
и /feedback
, логику очередей и обработку ошибок. Всё — на минималках, но работает.
Ознакомится с результатом: @roundifyrobot
Что делает:
- принимает видео до 1 минуты;
- обрезает, сжимает, выдает кружок;
- можно сразу переслать в канал или другу;
- добавил простую систему фидбэка через
/feedback
.
Выводы
Этот мини-проект оказался полезным не только как утилита, но и как:
- Тренировка работы с видео в Python;
- Практика работы с Telegram Bot API;
- Реальный кейс для обработки и доставки мультимедиа в чатах;
- Возможность собрать аналитику, статистику, запросы, баги и развивать дальше.
Если вы тоже хотите сделать своего Telegram-бота с мультимедийной обработкой — берите этот проект за основу, добавляйте свои фишки, улучшайте UI/UX и выкладывайте в open source. Это отличный формат для pet-проекта или MVP стартапа.
301 открытий3К показов