Конвертация видео в кругляшок
Код:
import telebot
token = ''
bot = telebot.TeleBot(token)
@bot.message_handler(commands = ['start'])
def start(message):
bot.send_message(message.chat.id, '❗️ Привет, отправь видео')
@bot.message_handler(content_types=['video'])
def video_id(message):
document_id = message.video.file_id
file_info = bot.get_file(document_id)
print(document_id)
bot.send_message(message.chat.id, document_id)
bot.send_video_note(message.chat.id, document_id)
bot.polling(none_stop=True)
Задача: на отправленное видео бот должен отвечать кругляшком телеграма, но он просто отсылает то же видео, в чем проблема?
Ответы (2 шт):
Если в качестве параметра при отправке указывать message.video.file_id, то видео не всегда пересылается кружочком, по этому перед отправкой это видео лучше сохранить, а уже потом отправлять. Выглядит это так:
@bot.message_handler(content_types=['video'])
def send_text(message):
file_info = bot.get_file(message.video.file_id)
downloaded_file = bot.download_file(file_info.file_path)
with open('video.mp4', 'wb') as video:
video.write(downloaded_file)
bot.send_video_note(message.chat.id, open('video.mp4', 'rb'))
Так же имейте ввиду, для отправки видео кружком оно должно быть формата MPEG4, продолжительностью не более 1 минуты и иметь соотношение сторон 1:1
К сожалению, не могу комментировать ответ, данный выше.
Помимо требований в расширении mp4, соотношения сторон 1:1 и максимального веса 20 МБ экспериментальным путём выявлено требование в максимальном разрешении 600x600 пикселей, без соблюдения которого видео прикрепляется не в формате кружка, а в виде простого видео. Удивился, что в документации об этом ни слова.
Также отмечу, что манипуляции с разрешением и соотношением сторон я произвожу при помощи библиотеки moviepy, opencv не подходит, т.к. он работает только с картинкой, но не со звуком.