Кто может помочь с ботом ? | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Кто может помочь с ботом ?

andbrut

Нейросеть
Автор темы
30 Июн 2024
54
269
53
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.utils import executor
from moviepy.editor import VideoFileClip, concatenate_videoclips
import logging
API_TOKEN = 'tok' # Замените на ваш токен
# Настройка логирования
logging.basicConfig(level=logging.INFO)
# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
await message.reply("Отправьте мне видео, и я преобразую его в видеокружок.")
@dp.message_handler(content_types=types.ContentType.VIDEO)
async def process_video(message: types.Message):
try:
video_file = await bot.get_file(message.video.file_id)
await video_file.download("input_video.mp4")
# Преобразование видео в видеокружок
input_video = VideoFileClip("input_video.mp4")
w, h = input_video.size
circle_size = 360
aspect_ratio = float(w) / float(h)

if w > h:
new_w = int(circle_size * aspect_ratio)
new_h = circle_size
else:
new_w = circle_size
new_h = int(circle_size / aspect_ratio)

resized_video = input_video.resize((new_w, new_h))
output_video = resized_video.crop(x_center=resized_video.w / 2, y_center=resized_video.h / 2, width=circle_size, height=circle_size)
# Загрузка дополнительного видео для добавления
additional_video = VideoFileClip("big.mp4")
# Проверка длины дополнительного видео и обрезка до 1 секунды
if additional_video.duration > 1:
additional_video = additional_video.subclip(0, 1)
# Конкатенация обработанного видео с дополнительным видео
final_video = concatenate_videoclips([output_video, additional_video])

# Сохранение финального видео с высоким качеством
final_video.write_videofile("output_video.mp4", codec="libx264", audio_codec="aac", bitrate="5M", fps=30)
# Отправка финального видеокружка в чат
with open("output_video.mp4", "rb") as video:
await bot.send_video_note(chat_id=message.chat.id, video_note=video, duration=int(final_video.duration), length=circle_size)
except Exception as e:
logging.error(f"Произошла ошибка: {e}")
await message.reply("Произошла ошибка при обработке видео. Пожалуйста, попробуйте еще раз.")
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)

видео которое big.mp4 выглядит настолько ущербно а хотя должен быть нормальный вид машины  2024 11 16 200821244
 

PAUK

Джун
30 Июл 2023
49
15
8
упрощённый код обработки:

from moviepy.editor import VideoFileClip, concatenate_videoclips # Предварительная обработка big.mp4 через FFmpeg или вручную def process_videos(input_path, additional_path, output_path): input_video = VideoFileClip(input_path) w, h = input_video.size circle_size = 360 # Масштабируем и обрезаем resized_video = input_video.resize(height=circle_size) output_video = resized_video.crop( x_center=resized_video.w / 2, y_center=resized_video.h / 2, width=circle_size, height=circle_size, ) # Загрузка дополнительного видео additional_video = VideoFileClip(additional_path) if additional_video.duration > 1: additional_video = additional_video.subclip(0, 1) # Конкатенация видео final_video = concatenate_videoclips([output_video, additional_video]) final_video.write_videofile(output_path, codec="libx264", audio_codec="aac", bitrate="10M", fps=30) # Пример вызова process_videos("input_video.mp4", "big.mp4", "output_video.mp4")
 
Активность:
Пока что здесь никого нет