如何通过YouTube链接向用户发视频?求MP4直链API方案
针对YouTube机器人开发的两项需求解答
一、通过YouTube链接向用户发送视频
- 如果是在Telegram、Discord这类聊天平台开发机器人,直接发送YouTube视频链接字符串即可,多数平台会自动解析并展示视频预览、标题、缩略图,用户点击就能跳转播放。
- 若要直接发送视频文件而非链接,当你拿到视频的MP4直链后,调用对应平台的媒体发送API(比如Telegram的
sendVideo方法、Discord的send_file方法),把直链作为媒体资源传入接口,就能直接给用户发送视频内容。
二、获取带完整音轨的MP4直链及头像的方案
直链获取
- YouTube官方没有提供公开API直接返回合并音轨的MP4直链,这是出于版权内容分发的限制。
- 你之前用的
pytube其实支持直接获取直链,不用下载到本地:通过筛选progressive流(音视频合并的流),就能拿到带完整音轨的MP4直链。示例代码如下:
注意:这类直链是临时的,有效期通常只有数小时,而且YouTube会不定期调整流的加密机制,可能需要from pytube import YouTube yt = YouTube("你的YouTube视频链接") # 筛选带音频的MP4合并流 stream = yt.streams.filter(progressive=True, file_extension='mp4').get_highest_resolution() # 直接获取直链 direct_url = stream.urlpytube版本更新适配。 - 第三方服务虽有类似转链API,但存在合规风险,稳定性也无法保证,不建议用于生产环境。
头像获取
视频的头像实际是发布该视频的频道头像,可通过YouTube官方的Data API获取:
- 调用
videos.list接口,传入视频ID,拿到视频所属频道的channelId; - 调用
channels.list接口,传入该channelId,就能获取频道的头像URL(对应snippet.thumbnails中的高分辨率地址)。
内容的提问来源于stack exchange,提问作者user582426
相关产品推荐
相关产品推荐

