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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:47:49