我从 Vimeo 帐户获得的是 ID 和令牌。
`var response = await http .get('https://player.vimeo.com/video/' + videoId + '/config');`.
我尝试使用获取视频 URL。但由于是私人视频 无法使用此方法获取 URL。有没有更好的办法 播放 Vimeo 的私人视频?
您必须在拥有该视频的 Vimeo 帐户中进行身份验证,这可以通过多种方式完成,我建议使用访问令牌,这是一个静态令牌,可以存储在后端数据库中以确保安全原则。
您可以在这里找到此验证方式。
身份验证后,您可以通过 GET 请求获取有关您的视频的任何信息:
网址:*https://api.vimeo.com/videos/*[video_id]
标头:{'授权':持有者[Access_Token]}
有关此请求的更多信息,您可以访问Vimeo 官方文档。
当我尝试将 vimeo 视频嵌入到我的 Android 版 flutter 应用程序中时,我遇到了同样的问题。我正在使用以下库:https://pub.dev/packages/vimeo_video_player/
问题:无法在此播放器中加载未列出的 vimeo 视频。
修复: 通过更改此插件的主文件,您可以轻松地使其加载视频。
第 1 步:像安装任何其他插件一样安装 vimeo_video_player 插件。命令:flutter pub add vimeo_video_player
第 2 步:将 vimeo 视频播放器嵌入到您的应用程序中以播放公共视频。您可以按照以下示例操作:https://pub.dev/packages/vimeo_video_player/example
第 3 步:找到以下文件并打开它:“C:\Users[YOUR_USERNAME]\AppData\Local\Pub\Cache\hosted\pub.dev imeo_player_flutter-0.1.0\lib imeo_player_flutter.dart”
第四步:将以下代码添加到文件中
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
/// Vimeo player for Flutter apps
/// Flutter plugin based on the [webview_flutter] plugin
/// [videoUrl] is the URL of the Vimeo video
class VimeoPlayer extends StatefulWidget {
const VimeoPlayer({
Key? key,
required this.videoUrl,
}) : super(key: key);
final String videoUrl;
@override
State<VimeoPlayer> createState() => _VimeoPlayerState();
}
class _VimeoPlayerState extends State<VimeoPlayer> {
final _controller = WebViewController();
@override
void initState() {
_controller
..loadRequest(_videoPage(widget.videoUrl))
..setJavaScriptMode(JavaScriptMode.unrestricted);
super.initState();
}
@override
Widget build(BuildContext context) {
return WebViewWidget(
controller: _controller,
);
}
/// Web page containing iframe of the Vimeo video
Uri _videoPage(String videoUrl) {
final html = '''
<html>
<head>
<style>
body {
margin: 0px;
}
</style>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0">
<meta http-equiv="Content-Security-Policy"
content="default-src * gap:; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src *;
img-src * data: blob: android-webview-video-poster:; style-src * 'unsafe-inline';">
</head>
<body>
<iframe
src="$videoUrl?loop=0&autoplay=0"
width="100%" height="100%" frameborder="0" allow="fullscreen"
allowfullscreen></iframe>
</body>
</html>
''';
final String contentBase64 =
base64Encode(const Utf8Encoder().convert(html));
return Uri.parse('data:text/html;base64,$contentBase64');
}
}
第 5 步:将 VimeoPlayer 的函数调用从: Vimeo 视频播放器( 网址:_vimeoVideoUrl, 自动播放:真, ),
对此:
VimeoPlayer(videoUrl: [URL]) **只是将 url 参数改为 videoUrl 其余相同
现在你可以通过这种方式传递网址:
https://player.vimeo.com/video/[VIMEO_VIDEO_ID]?h=[KEY_FROM_VIMEO]&title=0&byline=0&portrait=0&badge=0&autopause=0&player_id=0&app_id=[APP_ID_VIMEO]
**将 [BRACKET_FORM] 中的值替换为实际值。 通过这种方式,您可以非常轻松地将未列出的视频嵌入到您的 Flutter 应用程序中。
有任何疑问就问我吧。