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

Flutter使用youtube_explode_dart包提示streamManifest未定义如何解决

youtube_explode_dart streamManifest 未定义问题解决方法

你遇到的报错是因为官方文档的示例省略了获取streamManifest的前置逻辑,完整的使用流程如下:

完整可运行代码示例

// 1. 先导入依赖包
import 'package:youtube_explode_dart/youtube_explode_dart.dart';

void getStreamResource() async {
  // 2. 初始化YoutubeExplode客户端实例
  final yt = YoutubeExplode();

  try {
    // 3. 替换为实际需要解析的Youtube视频ID
    const targetVideoId = '替换为你的视频ID';

    // 4. 请求获取流清单,这里声明的就是你缺失的streamManifest变量
    final streamManifest = await yt.videos.streamsClient.getManifest(targetVideoId);

    // 官方示例代码补充定义后可正常运行
    // 获取最高质量的混合音视频流
    var muxedStreamInfo = streamManifest.muxed.withHighestVideoQuality();
    // 获取最高比特率的纯音频流,适配音乐流媒体场景
    var audioStreamInfo = streamManifest.audioOnly.withHighestBitrate();
    // 获取最高质量的MP4纯视频流
    var mp4VideoStreamList = streamManifest.videoOnly.where((e) => e.container == Container.mp4);
  } finally {
    // 调用结束后关闭客户端释放资源
    yt.close();
  }
}

额外注意事项

  • 音乐流媒体场景可直接取用audioStreamInfo.url获取可直接播放的音频流地址,你可以将该地址对应资源上传到Firebase Storage做后续分发处理
  • 官方示例存在两处可修正问题:
    • 第三行示例代码语法错误,原代码开头var streamInfo.videoOnly写法有误,需要先声明变量再调用属性
    • 原代码中Container未指定具体枚举值,需要补全为Container.mp4等实际需要的容器类型
  • 所有网络请求方法均为异步操作,调用时必须加await关键字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:09:02