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

Flutter Android集成Vimeo API时progressive字段突然缺失求助

Vimeo API返回progressive字段缺失的原因及解决办法

可能的原因

  • API字段选择规则变更:Vimeo API的fields参数要求显式指定嵌套字段。你之前仅指定play,旧版本API可能默认返回play下的所有子字段,但现在仅返回默认的status字段,需要明确声明play.progressive才能获取播放链接数组。
  • Access Token权限不足:你的access token可能缺少video_files权限范围,该权限是获取视频播放链接的必要条件。即使你是Vimeo Plus会员,权限配置错误也会导致无法返回progressive字段。
  • 视频权限设置变更:目标视频的隐私设置或播放权限被修改(比如从公开改为私有,或限制了播放来源),导致API不再返回直接播放链接。

解决办法

1. 修正API请求的fields参数

修改请求URL,显式指定需要的嵌套字段,确保play.progressive被包含:

final apiUrl = Uri.parse('https://api.vimeo.com/videos/$videoId?fields=play.progressive,play.status,name,pictures');

这样API会返回包含progressive数组的完整play对象。

2. 验证Access Token权限

检查你的Vimeo access token是否包含video_files权限:

  • 登录Vimeo开发者控制台,查看token的权限范围。
  • 如果缺少该权限,重新生成包含video_files(以及对应视频权限,如public或private)的access token。

3. 增加代码容错处理

即使API返回的progressive字段为空,也要避免应用崩溃。在解析逻辑中添加空值判断,并做降级处理:

// 提取视频URLs部分修改为
final play = vimeoVideo.play;
if (play != null) {
  final progressive = play.progressive;
  if (progressive != null && progressive.isNotEmpty) {
    for (final video in progressive) {
      // 原逻辑
      final qualityString = video.rendition;
      final quality = qualityString?.toVimeoVideoQuality() ?? VimeoVideoQuality.unknown;
      final urlStr = video.link;
      if (quality != VimeoVideoQuality.unknown && urlStr != null) {
        videoURLs[quality] = Uri.parse(urlStr);
      }
    }
  } else {
    // 处理无播放链接的情况,比如记录日志或提示用户
    Logger().w('No progressive playback links available for video $videoId');
    // 可选:抛出自定义异常
    // throw Exception('Video playback links unavailable');
  }
}

4. 检查视频权限设置

确认目标视频的隐私设置允许通过API获取播放链接:

  • 登录Vimeo后台,查看视频的“隐私”设置,确保允许API访问(比如设置为“任何人”或特定域名/用户)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:22:01