Telethon设置GIF/MP4头像遇VideoFileInvalidError问题求助
Telethon设置动态头像报错VideoFileInvalidError的解决办法
问题描述
尝试通过Telethon设置动态头像时触发VideoFileInvalidError,代码如下:
client = TelegramClient(None, api_id, api_hash) async def main(): await client.connect() await client(functions.photos.UploadProfilePhotoRequest( video=await client.upload_file("er2.mp4") )) client.loop.run_until_complete(main())
报错信息:
telethon.errors.rpcerrorlist.VideoFileInvalidError: The given video cannot be used (caused by UploadProfilePhotoRequest)
原因分析
Telegram对动态头像视频有严格的格式与规格限制,MP4格式不符合要求,且视频参数超出范围也会触发该错误。具体要求包括:
- 必须为WebM格式(VP9编码)
- 分辨率≤320×320像素
- 时长≤3秒
- 文件大小≤2MB
- 帧率≤30fps
解决步骤
- 转换视频格式与参数
使用ffmpeg将MP4转成符合要求的WebM文件,执行命令:
ffmpeg -i er2.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -vf scale=320:320 -t 3 er2.webm
参数说明:
-c:v libvpx-vp9:指定VP9编码-vf scale=320:320:缩放到320×320分辨率-t 3:截取前3秒内容-crf 30 -b:v 0:控制文件大小,保证不超过2MB
- 修改代码使用转换后的文件
将代码中的文件名替换为转换后的WebM文件:
client = TelegramClient(None, api_id, api_hash) async def main(): await client.connect() await client(functions.photos.UploadProfilePhotoRequest( video=await client.upload_file("er2.webm") )) client.loop.run_until_complete(main())
- 额外验证步骤
- 先用Telegram官方客户端手动上传转换后的WebM文件作为头像,确认能成功上传,排除文件本身问题
- 更新Telethon到最新版本:
pip install --upgrade telethon
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

