我正在尝试在 Flutter Web 应用程序中播放 YouTube 视频,但使用默认的 VideoPlayer,您需要 YouTube src 路径 (...googlevideos.com/...),但我无法正确获取该路径。
我做了一些谷歌研究,发现了以下软件包:
但是它们都不会直接播放 YouTube 链接,而且第一个不支持 Flutter-Web。
有人有此主题的经验或知道如何获取 YouTube 源链接(例如使用 API)吗?
EDIT1:YouTube 似乎每天都会对源视频文件 url 进行洗牌,因此使用源文件 url 并不是一个可行的解决方案。另一种选择是将视频添加到本地项目中,并在视频顶部添加一个叠加的“YouTube”按钮,当用户点击该按钮时,他将被带到 YouTube 上的视频。使用资源视频的缺点是您无法调整进度条(至少在 2.4.5 版本中)。
您可以使用官方的 video_player 软件包,并通过使用 VLC 媒体播放器 获取 YouTube 视频文件的源文件路径,步骤如下:
这些步骤几乎是从这里找到的复制/粘贴:如何获取 YouTube 视频文件的直接链接
您还可以使用 youtube_player_iframe 软件包,但请注意,如果您在使用该播放器时将鼠标悬停在视频顶部,则无法滚动内容,并且似乎没有此处讨论的解决方法:鼠标滚动卡住当光标位于 youtube_player_iframe 顶部时。这是我决定使用官方视频播放器包的唯一原因。
您尝试过这个包吗:youtube_player_iframe:^2.3.0 在这里找到它https://pub.dev/packages/youtube_player_iframe
YPlayer是一个Flutter包,提供了一个易于使用的YouTube视频播放器小部件。
将 y_player 添加到您的 pubspec.yaml 文件中:
dependencies:
y_player: ^1.0.2+1
以下是如何在 Flutter 应用程序中使用 YPlayer 的简单示例:
import 'package:flutter/material.dart';
import 'package:y_player/y_player.dart';
class MyVideoPlayer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('YPlayer Example')),
body: YPlayer(
youtubeUrl: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
onStateChanged: (status) {
print('Player Status: $status');
},
onProgressChanged: (position, duration) {
print('Progress: ${position.inSeconds}/${duration.inSeconds}');
},
),
);
}
}