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

使用telegram-bot-sdk的sendMediaGroup发送无音MP4报错求助

解决Telegram sendMediaGroup发送无声音MP4报错的问题

问题原因

出现报错是因为Telegram API会把无音频轨道的MP4文件识别为animation(动画)类型,而非video(视频),但你代码里指定了type=>'video',导致类型不匹配触发错误。

解决办法

方法1:改用animation类型

直接把媒体项的type从video改成animation,即可正常发送:

$telegram = new Telegram\Bot\Api(api_key);
$telegram
    ->setAsyncRequest(true)
    ->sendMediaGroup(['chat_id' => channel_id, 'media' => json_encode([
        ['type'=>'animation' ,'media' => 'https://i.imgur.com/qAxrsIG.mp4', 'caption' => "Album caption"],
        ['type' => 'photo' ,'media' => 'http://www.alcan5000.com/JPG/64Caliente.jpg'],
        ['type' => 'photo' ,'media' => 'http://www.alcan5000.com/JPG/64Caliente.jpg']
    ])]);

方法2:强制按视频发送(需补充媒体参数)

如果必须以视频类型发送,需要手动补充视频的duration(时长)、width(宽度)、height(高度)参数,帮API明确识别为视频:

$telegram = new Telegram\Bot\Api(api_key);
$telegram
    ->setAsyncRequest(true)
    ->sendMediaGroup(['chat_id' => channel_id, 'media' => json_encode([
        [
            'type'=>'video',
            'media' => 'https://i.imgur.com/qAxrsIG.mp4',
            'caption' => "Album caption",
            'duration' => 10, // 替换为该视频的实际时长(秒)
            'width' => 640,   // 替换为实际宽度
            'height' => 480   // 替换为实际高度
        ],
        ['type' => 'photo' ,'media' => 'http://www.alcan5000.com/JPG/64Caliente.jpg'],
        ['type' => 'photo' ,'media' => 'http://www.alcan5000.com/JPG/64Caliente.jpg']
    ])]);

额外提示

  • Telegram对媒体类型的判断核心是文件本身是否包含音频轨道,无音频的MP4默认归为动画类,所以类型参数必须匹配。
  • 如果用本地文件发送,要确保文件的MIME类型设置正确,避免API误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:14:56