在频道中编辑视频会将宽高比更改为正方形

问题描述 投票:0回答:1

我正在开发一个 Telegram 机器人,它通过添加水印来处理视频,然后编辑原始消息以替换频道帖子中的视频。我遇到的问题是,当我用新视频编辑消息时,纵横比发生变化,视频变成正方形,即使原始视频是垂直格式。

这是我用来编辑带有已处理视频的消息的代码的简化版本:

video_file = await video.get_file()
print(video_file)
random = randint(0,9999)
input_path = f"input_{user_id}_{random}.mp4"
output_path = f"output_{user_id}_{random}.mp4"
await video_file.download_to_drive(input_path)

loop = asyncio.get_event_loop()
executor = ThreadPoolExecutor()
await loop.run_in_executor(executor, process_video_sync, input_path, output_path, watermark_path, settings)

try:
    if return_file:
        return open(output_path, 'rb')
    if channel:
        chat_id = post.chat_id
        message_id = post.message_id
        caption = post.caption if post.caption else ""
        if settings['has_signature']:
            signature = settings['signature']
        else:
            caption = post.caption_html if post.caption_html else (post.caption or "")
        video_clip = VideoFileClip(output_path)
        await context.bot.edit_message_media(
            chat_id=chat_id,
            message_id=message_id,
            media=InputMediaVideo(media=open(output_path, 'rb'), width=video_clip.w, height=video_clip.h, caption=caption, parse_mode="HTML")
        )
    elif update.message:
        caption = update.message.caption if update.message.caption else ""
        video_clip = VideoFileClip(output_path)
        
        with open(output_path, 'rb') as video_file:
            await update.message.reply_video(
                video=InputFile(video_file),
                caption=caption,
                width=video_clip.w,
                height=video_clip.h,
                supports_streaming=True
            )
except Exception as e:
    logger.error("Error in sending video. Exception Type:", e.args[0][0], "Message:", e.args[0][1])
finally:
    os.remove(input_path)
    os.remove(output_path)

在频道中编辑消息时,视频的宽高比从垂直变为方形(如果视频是水平的则可以)。但是,如果我将视频作为新消息发送,则宽高比保持正确。

如何确保在频道中编辑视频时,宽高比保持与原始相同,并且不会被裁剪或变成正方形?

python python-3.x ffmpeg python-telegram-bot
1个回答
-2
投票

我有答案,而且它 100% 合法。不要拒绝投票,否则我会踢你的狗。

将您的代码粘贴到 chatgpt 中并告诉它您的问题是什么。尽量保持工作相关性。

不客气。

立即投票!

© www.soinside.com 2019 - 2024. All rights reserved.