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

如何在Telegram Bot中实现直播功能?

Telegram Bot 直播实现指南

1. Telegram Bot API 是否支持直播?

Telegram Bot API不提供原生直播流推送能力,但可以通过间接方式模拟直播效果:

  • 官方Bot API仅支持发送预录制的媒体文件,无专门的直播流端点。
  • 可通过循环推送短媒体片段的方式模拟直播,或结合Telegram频道原生直播+Bot引导跳转的方案实现。

2. Python实现方案

核心思路是用工具将直播流切割为10-30秒的短片段,再通过Bot API循环发送给目标用户。以下是基于python-telegram-bot库的简化示例:

依赖安装

pip install python-telegram-bot ffmpeg-python

代码示例

import telegram
import subprocess
import time
import os

# 替换为你的Bot Token和目标用户ID
BOT_TOKEN = "your_bot_token"
TARGET_USER_ID = 123456789

bot = telegram.Bot(token=BOT_TOKEN)

def stream_to_user(stream_url, chunk_duration=20):
    """拉取直播流并切割为片段发送给用户"""
    while True:
        # 生成临时片段文件名
        temp_file = f"live_chunk_{int(time.time())}.mp4"
        
        # 用FFmpeg切割直播流
        ffmpeg_cmd = [
            "ffmpeg",
            "-i", stream_url,
            "-t", str(chunk_duration),
            "-c:v", "libx264",
            "-c:a", "aac",
            "-preset", "ultrafast",
            temp_file
        ]
        subprocess.run(ffmpeg_cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
        
        # 发送片段
        with open(temp_file, "rb") as f:
            bot.send_video(
                chat_id=TARGET_USER_ID,
                video=f,
                supports_streaming=True,
                caption="正在直播..."
            )
        
        # 清理临时文件
        os.remove(temp_file)
        # 预留处理缓冲时间
        time.sleep(chunk_duration - 2)

if __name__ == "__main__":
    # 替换为你的源直播流地址(RTMP/HLS均可)
    LIVE_SOURCE = "rtmp://your-stream-server/live/stream-key"
    stream_to_user(LIVE_SOURCE)

3. 所需集成的库与协议

  • FFmpeg:必须工具,用于拉取、切割、转码直播流,转换为Telegram支持的MP4格式。
  • python-telegram-bot:Python生态中成熟的Telegram Bot开发库,封装了Bot API调用。
  • 直播协议:源直播流需采用RTMP、HLS等标准协议,确保FFmpeg可正常拉取。
  • 可选:用Nginx-RTMP等流媒体服务器中转直播流,提升拉取稳定性。

4. 带宽与时长限制

  • 带宽与频率:Telegram Bot API默认限制30次/秒调用,大分辨率片段会占用更多带宽,建议控制片段分辨率在720p以下、码率不超过2Mbps,避免触发限流。
  • 单文件大小:普通Bot发送视频的最大限制为50MB,需确保每个片段大小在此范围内。
  • 时长与反垃圾:无官方总时长限制,但持续发送片段可能触发反垃圾机制,大量用户推送建议改用频道原生直播+Bot引导跳转的方式。

更优替代方案

如果分段推送的流畅度不足,推荐:

  • 在Telegram频道开启原生直播,Bot向用户发送频道直播链接引导跳转观看。
  • 使用Telegram MTProto API(非Bot API),它支持底层媒体流操作,但开发复杂度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:49:57