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

如何通过Vimeo API获取直播活动的播放URL?

解决Vimeo预约直播后获取播放URL的问题

问题分析

你遇到的权限错误核心原因有两个:

  • 认证方式错误:你的curl请求使用了Basic客户端凭证认证,但获取用户专属的直播资源必须用用户Access Token的Bearer认证。
  • 资源关联错误:你手动拼接live_events ID容易导致资源不匹配,正确方式是从创建直播视频的返回结果中提取关联的live_event URI。

解决方案步骤

1. 确认Access Token权限

确保你的Access Token包含以下必要权限:

  • video_files:允许获取视频播放文件
  • live:允许访问直播相关资源
  • 若为私有直播,需额外添加private权限

2. 修正curl测试命令

将Authorization头改为Bearer Token格式,替换YOUR_ACCESS_TOKEN为你的用户令牌:

curl -X GET \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Accept: application/vnd.vimeo.*+json;version=3.4" \
  "https://api.vimeo.com/live_events/907930022/m3u8_playback"

3. Node.js代码中获取直播播放URL

在创建直播视频后,从返回响应中提取关联的live_event URI,再请求其播放端点:

import { Vimeo } from "vimeo";

const client = new Vimeo(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN);

const headers = {
  'Accept': 'application/vnd.vimeo.*+json;version=3.4',
};

const liveEventParams = {
  type: 'live',
  name: 'Scheduled Live Event',
  start_time: scheduleTime, 
  description: 'Live event test',
  privacy: {
    view: 'anybody', 
  },
};

// 创建直播视频
const createLiveVideo = () => {
  return new Promise((resolve, reject) => {
    client.request({
      method: 'post',
      path: '/me/videos',
      headers: headers,
      query: liveEventParams,
    }, (error, body) => {
      if (error) {
        console.log('Error scheduling live event:', error);
        reject(new GraphQLError(error, {
            extensions: { code: 'UNAUTHENTICATED' },
            path: 'createMedia',
        }));
      } else {
        resolve(body);
      }
    })
  });
};

// 主逻辑
const main = async () => {
  try {
    const liveVideo = await createLiveVideo();
    console.log("Created live video:", liveVideo);
    
    // 提取关联的live_event URI
    const liveEventUri = liveVideo.live_event?.uri;
    if (!liveEventUri) {
      throw new Error("No live_event found in video response");
    }

    // 请求直播播放URL
    const getPlaybackUrl = () => {
      return new Promise((resolve, reject) => {
        client.request({
          method: 'get',
          path: `${liveEventUri}/m3u8_playback`,
          headers: headers
        }, (error, playbackData) => {
          if (error) {
            reject(error);
          } else {
            resolve(playbackData.playback_url);
          }
        });
      });
    };

    const playbackUrl = await getPlaybackUrl();
    console.log("Live playback URL:", playbackUrl);
  } catch (err) {
    console.error("Failed to get live playback URL:", err);
  }
};

main();

4. 关键注意事项

  • 预约状态的直播在正式启动前,返回的播放URL可能是占位符或临时链接,需在直播开始后重新请求获取有效地址。
  • 若直播设置为密码保护模式,请求播放URL时需在参数中携带password字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:43:14