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

如何在Flutter应用中嵌入YouTube视频并从指定时间点播放?

在Flutter中嵌入YouTube视频并实现指定时间点播放

一、用youtube_player_flutter实现指定时间播放

你当前的问题是没用到插件的startAt配置项,这个插件支持指定起始时间播放,但不是通过带时间戳的URL,而是通过控制器的初始化参数设置:

修改你的代码:

在YoutubePlayerFlags里添加startAt参数,直接传入起始秒数即可:

final YoutubePlayerController _controller = YoutubePlayerController(
  initialVideoId: videoId,
  flags: YoutubePlayerFlags(
    autoPlay: true,
    mute: false,
    startAt: startTime, // 这里设置起始时间
  ),
);

如果你的需求是从外部传入带时间戳的YouTube链接(比如用户复制的分享链接),可以先解析链接提取视频ID和时间戳:

// 从带时间戳的链接提取videoId
String? extractedVideoId = YoutubePlayer.convertUrlToId(youtubeUrlWithStartTime);
// 解析URL获取时间戳参数
Uri uri = Uri.parse(youtubeUrlWithStartTime);
String? tParam = uri.queryParameters['t'];
int? extractedStartTime = tParam != null ? int.tryParse(tParam.replaceAll('s', '')) : null;

// 然后初始化控制器
final YoutubePlayerController _controller = YoutubePlayerController(
  initialVideoId: extractedVideoId ?? videoId,
  flags: YoutubePlayerFlags(
    autoPlay: true,
    mute: false,
    startAt: extractedStartTime ?? 0,
  ),
);

如果需要在播放过程中动态跳转到指定时间,调用控制器的seekTo方法:

_controller.seekTo(Duration(seconds: 150));

二、替代插件:youtube_player_iframe

如果你更倾向于直接使用带时间戳的URL初始化,可以试试youtube_player_iframe插件,它基于WebView实现,支持直接传入完整的带参数的YouTube嵌入链接:

基本用法示例:

import 'package:youtube_player_iframe/youtube_player_iframe.dart';

// 方式1:通过视频ID+起始时间初始化
final YoutubePlayerController _controller = YoutubePlayerController.fromVideoId(
  videoId: videoId,
  autoPlay: true,
  startSeconds: startTime, // 设置起始时间
);

// 方式2:直接用带时间戳的链接(转成嵌入链接)
String embedUrl = YoutubePlayerController.convertUrlToEmbedUrl(youtubeUrlWithStartTime);
final YoutubePlayerController _controller = YoutubePlayerController.fromEmbedUrl(
  embedUrl,
  autoPlay: true,
);

// 构建播放器
YoutubePlayerIFrame(
  controller: _controller,
);

这个插件对URL参数的支持更灵活,适合需要直接处理用户分享链接的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:57:30