使用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
相关产品推荐
相关产品推荐

