Telegram bot api:GIF 上传/下载大小的问题
Posted
技术标签:
【中文标题】Telegram bot api:GIF 上传/下载大小的问题【英文标题】:Telegram bot api : issue with GIF upload/download size 【发布时间】:2020-09-27 04:33:27 【问题描述】:面对问题,当我尝试将 GIF 发送到我的机器人时,但机器人无法访问图像的原始大小。似乎电报服务器将其转换为 mp4(这是个好主意,看起来不错),当我尝试下载它时 - 它总是看起来像缩略图,最大边长为 320 像素。
看起来像一个api bug,因为例如这里:
它描述为600x473px,但实际下载的mp4大小是:
所以,试着理解 - 我错在哪里,因为我的项目需要原始 gif 大小...也许这里有任何解决方法?
ps。如果手动将 gif 转换为 mp4 并保存质量和大小,然后提交给 bot - 它的效果很棒,没有任何额外的压缩等,但在使用 bot 之前要求使用是不可接受的。
更新:
复制(你需要你的 bot/bot_token 并且,能够接收带有 json 的 webhook):
1) 通过 Windows 10 电报客户端 (v2.1.10) 将此 gif (https://c2n.me/47Y3H37.gif) 发送到机器人。使用“不压缩发送”。 GIF 大小:600x473, 3.35MB
2) Bot 接收和 Telegram 发送 webhook :
"update_id": 290360893,
"message":
"message_id": 21,
"from":
"id": 101483786,
"is_bot": false,
"first_name": "edited",
"last_name": "edited",
"username": "edited",
"language_code": "en"
,
"chat":
"id": edited,
"first_name": "edited",
"last_name": "edited",
"username": "edited",
"type": "private"
,
"date": 1591962500,
"animation":
"file_name": "9Ywn9p.gif.mp4",
"mime_type": "video/mp4",
"duration": 4,
"width": 600,
"height": 473,
"thumb":
"file_id": "AAMCAgADGQEAAxVe42t2MTQQrFMyXbskwWiNkHjm3wACKwgAAtZ-GEtFrAh9bgzTOnpJm5QuAAMBAAdtAAMIgQACGgQ",
"file_unique_id": "AQADekmblC4AAwiBAAI",
"file_size": 15304,
"width": 320,
"height": 252
,
"file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
"file_unique_id": "AgADKwgAAtZ-GEs",
"file_size": 68253
,
"document":
"file_name": "9Ywn9p.gif.mp4",
"mime_type": "video/mp4",
"thumb":
"file_id": "AAMCAgADGQEAAxVe42t2MTQQrFMyXbskwWiNkHjm3wACKwgAAtZ-GEtFrAh9bgzTOnpJm5QuAAMBAAdtAAMIgQACGgQ",
"file_unique_id": "AQADekmblC4AAwiBAAI",
"file_size": 15304,
"width": 320,
"height": 252
,
"file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
"file_unique_id": "AgADKwgAAtZ-GEs",
"file_size": 68253
,所以你可以在那里看到,大小是正确的,但是重量 - 不,它只有 68253 字节 = 66.65kb,而不是 ~3.35MB(因为转换而减少了一些)
3)获取的file_id:CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA从这个网络挂接,并试图通过调用GET使用它的API “https://api.telegram.org/bot your_bot_token STRONG> /的GetFile的file_id = CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA?”,您将收到:
"ok": true,
"result":
"file_id": "CgACAgIAAxkBAAMVXuNrdjE0EKxTMl27JMFojZB45t8AAisIAALWfhhLRawIfW4M0zoaBA",
"file_unique_id": "AgADKwgAAtZ-GEs",
"file_size": 68253,
"file_path": "animations/file_12.mp4"
4) 使用此 file_path 下载文件: GET "https://api.telegram.org/file/botyour_bot_token/animations/file_12.mp4" 和...获取此 mp4 文件:https://c2n.me/47Y4oAv.mp4,损失质量、重量和大小 (320x252)
但是当您尝试从 Telegram 客户端下载它时 - 通过单击“另存为” - 工作正常,mp4 具有适当的大小/重量。所以看起来像一个api错误......
update#2 : 尝试通过 tfs 电报支持提交,但也无法使用我的电话号码登录... (https://c2n.me/47Yqswl.png)。 @pavel_durov,你能把它全部解决吗:))
【问题讨论】:
刚刚尝试重现:用鼠标右键单击和打开预览后下载;是的,Telegram 确实将 gif 转换为 mp4,但到目前为止尺寸没有问题,我有原始尺寸(在我的情况下,500x500)。您是直接使用 Telegram API 还是通过某些框架使用?也许它是某种相关的 @AntonZolotukhin 直接,只是通过浏览器重新生成 GET 调用。所以,当我获得准备下载 gif 的链接时 - 它调整了大小。刚复查。但是你是对的,当你试图通过官方客户端下载时,Telegram 提供了高分辨率的 mp4。 刚刚更新了“如何重现”的问题。 @AntonZolotukhin 照片也有问题。我提供了通过 bot api 发送的照片的高分辨率 (2k) file_id。在应用程序中,我只收到 1k 分辨率,即 1280。我不知道我错过了什么。 【参考方案1】:似乎唯一的解决方法 atm 是将 gif 转换为 mp4(是的,这样的体验令人沮丧),直到修复 the issue。
【讨论】:
不幸的是,在使用前转换不是一个选项 :( 另外,我发现了这个问题,由您提供 - 之前,您可以在那里看到我的评论。无论如何,感谢您的调查,Anton以上是关于Telegram bot api:GIF 上传/下载大小的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Telegram Bot API 获取 Telegram 频道用户列表