Python Telegram RSS机器人如何将附件上传改为带缩略图的视频上传
Telegram RSS 机器人视频带缩略图上传修改方案
核心问题原因
你当前使用的是send_document方法上传视频,该方法默认会将所有文件以附件形式发送,无法直接在聊天窗口内播放,也不支持专属视频缩略图展示。
修改步骤
- 替换发送方法为TG官方提供的
send_video接口,该接口原生支持流媒体视频播放展示,同时内置缩略图参数配置位 - 提前准备符合平台要求的缩略图:尺寸最大320*320px、文件大小不超过200KB、格式为JPG/PNG,你可以直接使用RSS源返回的视频封面图,也可以从视频文件首帧自动生成
- 配置视频播放相关参数,确保视频被识别为流媒体内容
代码示例
1. 缩略图生成工具函数(可选,无现成封面时使用)
import os from PIL import Image def generate_thumbnail(video_path, output_thumb="temp_thumb.jpg"): # 调用ffmpeg提取视频第1秒的帧作为缩略图 os.system(f"ffmpeg -i {video_path} -ss 00:00:01 -vframes 1 -y {output_thumb}") # 压缩到平台要求的尺寸范围 with Image.open(output_thumb) as img: img.thumbnail((320, 320)) img.save(output_thumb, optimize=True, quality=80) return output_thumb
2. 视频上传逻辑修改
# 原send_document调用替换为以下逻辑 # 假设chat_id为目标聊天ID,video_path为本地视频路径,video_info存储RSS读取的视频元数据 thumb_path = generate_thumbnail(video_path) # 如果你有现成的封面图,直接填封面路径即可 with open(video_path, "rb") as vf, open(thumb_path, "rb") as tf: bot.send_video( chat_id=chat_id, video=vf, thumbnail=tf, caption=video_info["title"], # 可自定义为RSS读取的标题、简介等内容 supports_streaming=True, # 关键参数,开启边下边播能力 width=video_info["width"], # 可选,填视频实际宽度 height=video_info["height"], # 可选,填视频实际高度 duration=video_info["duration"] # 可选,填视频实际时长,单位为秒 )
注意事项
- 如果使用远程视频/封面链接,无需下载到本地,直接将
video、thumbnail参数填入对应的URL即可 - 若修改后仍显示为附件,优先检查视频编码格式,平台要求视频为H.264编码、音频为AAC编码的MP4格式,不符合要求的可以用ffmpeg提前转码后再上传
内容的提问来源于stack exchange,提问作者Maya
相关产品推荐
相关产品推荐

