python-telegram-bot发送带缩略图视频报错:Can't parse inputmedia: media not found
解决python-telegram-bot v20.7发送带缩略图视频的"Can't parse inputmedia: media not found"错误
常见问题排查与修复方案
1. 缩略图不符合Telegram硬性要求
Telegram对视频缩略图有明确限制,不符合会触发解析错误:
- 必须是JPG/JPEG格式(PNG等格式不支持)
- 尺寸不能超过320x320像素
- 文件大小尽量控制在200KB以内
如果你的缩略图不满足要求,用PIL库快速处理:
from PIL import Image import os def fix_thumb_format(input_path, output_path="fixed_thumb.jpg"): with Image.open(input_path) as img: # 按比例缩放到320x320以内 img.thumbnail((320, 320)) # 强制保存为JPG img.save(output_path, "JPEG") return output_path # 替换原缩略图路径为处理后的路径 fixed_thumb = fix_thumb_format(thumbnail_path) thumb_input = InputFile(fixed_thumb)
2. 直接传文件路径,不用手动封装InputFile
python-telegram-bot v20+底层会自动处理本地文件路径,不需要手动转成InputFile,简化代码试试:
# 去掉InputFile实例,直接传路径字符串 media_video = InputMediaVideo( media=local_video_path, thumbnail=thumbnail_path if thumbnail_path else None ) await bot.send_media_group(chat_id=group_chat_id, media=[media_video])
3. 检查文件权限和存在性
别忽略最基础的问题:确保Python能读到你的文件,添加检查代码快速验证:
import os # 检查视频文件 if not os.path.isfile(local_video_path) or not os.access(local_video_path, os.R_OK): print(f"视频文件有问题:{local_video_path}") # 检查缩略图文件 if thumbnail_path: if not os.path.isfile(thumbnail_path) or not os.access(thumbnail_path, os.R_OK): print(f"缩略图文件有问题:{thumbnail_path}")
4. 别重复使用InputFile实例
如果同一个InputFile对象被多次调用,可能会因为文件指针已被读取而失效,每次发送都重新创建实例,或者直接传路径更稳妥。
5. 确认视频格式合法
Telegram只支持MP4等少数视频格式,先确认你的视频文件没损坏、格式兼容,比如用系统自带播放器打开试试。
内容的提问来源于stack exchange,提问作者Kurdo
相关产品推荐
相关产品推荐

