使用Golang tgbotapi v5发送视频在iOS上比例显示异常
问题分析与解决方案
这不完全是iOS Telegram应用的问题,核心原因是你发送视频时未显式指定宽高参数,导致iOS端Telegram无法正确解析视频原始比例元数据,而Mac桌面端和系统相册能直接读取文件元数据,所以显示正常。
解决方法
修改代码,手动设置视频的Width和Height参数,匹配4:5的比例(比如常见的1080x1350、720x900等):
import ( tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) func SendVideo(channel int64, path string, caption string, width int, height int) error { video := tgbotapi.NewVideo(channel, tgbotapi.FilePath(path)) video.ParseMode = "html" video.Caption = caption // 显式指定对应4:5比例的宽高 video.Width = width video.Height = height _, err := c.bot.Send(video) return err }
原因说明
Telegram iOS客户端处理API上传的视频时,部分场景下会优先依赖请求中传递的宽高参数,而非完全读取视频文件的内置元数据。如果未传递这些参数,客户端会默认 fallback 到1:1比例显示。而Mac桌面端的解析逻辑更宽松,能直接读取视频文件的原始元数据;下载到相册后,系统媒体库也会正确解析元数据,因此比例显示正常。
如果需要自动适配不同视频的宽高,可以借助Go的视频元数据解析库(比如基于ffmpeg的封装库),读取视频文件的实际宽高后再赋值给参数,无需手动指定。
内容的提问来源于stack exchange,提问作者Harun Sasmaz
相关产品推荐
相关产品推荐

