如何在 flutter 中播放 vimeo 的私人视频

问题描述 投票:0回答:2

我从 Vimeo 帐户获得的是 ID 和令牌。

`var response = await http .get('https://player.vimeo.com/video/' + videoId + '/config');`.

我尝试使用获取视频 URL。但由于是私人视频 无法使用此方法获取 URL。有没有更好的办法 播放 Vimeo 的私人视频?

flutter dart vimeo
2个回答
1
投票

您必须在拥有该视频的 Vimeo 帐户中进行身份验证,这可以通过多种方式完成,我建议使用访问令牌,这是一个静态令牌,可以存储在后端数据库中以确保安全原则。

您可以在这里找到此验证方式。

身份验证后,您可以通过 GET 请求获取有关您的视频的任何信息:

网址:*https://api.vimeo.com/videos/*[video_id]

标头:{'授权':持有者[Access_Token]}

有关此请求的更多信息,您可以访问Vimeo 官方文档


0
投票

当我尝试将 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 应用程序中。

有任何疑问就问我吧。

© www.soinside.com 2019 - 2024. All rights reserved.