我正在开发一个 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)
在频道中编辑消息时,视频的宽高比从垂直变为方形(如果视频是水平的则可以)。但是,如果我将视频作为新消息发送,则宽高比保持正确。
如何确保在频道中编辑视频时,宽高比保持与原始相同,并且不会被裁剪或变成正方形?
我有答案,而且它 100% 合法。不要拒绝投票,否则我会踢你的狗。
将您的代码粘贴到 chatgpt 中并告诉它您的问题是什么。尽量保持工作相关性。
不客气。
立即投票!