You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

解决步骤

  1. 转换视频格式与参数
    使用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
  1. 修改代码使用转换后的文件
    将代码中的文件名替换为转换后的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())
  1. 额外验证步骤
  • 先用Telegram官方客户端手动上传转换后的WebM文件作为头像,确认能成功上传,排除文件本身问题
  • 更新Telethon到最新版本:
pip install --upgrade telethon

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:48:03