当前位置: 首页 > 知识库问答 >
问题:

在Flatter中播放Vimeo视频

傅翰池
2023-03-14

我试图使用video_player插件在flatter应用程序中播放vimeo视频,但没有成功,它抛出了大量错误。请帮助我如何在Flatter应用程序中实现这一点?使用webview或任何插件等?也许一段代码片段对我会有很大帮助!

这是我的代码片段

import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';

void main() => runApp(VideoApp());

class VideoApp extends StatefulWidget {
  @override
  _VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(
        'https://vimeo.com/{some-video-id}')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Demo',
      home: Scaffold(
        body: Center(
          child: _controller.value.initialized
              ? AspectRatio(
                  aspectRatio: _controller.value.aspectRatio,
                  child: VideoPlayer(_controller),
                )
              : Container(),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
              _controller.value.isPlaying
                  ? _controller.pause()
                  : _controller.play();
            });
          },
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}

调试控制台中的错误-

E/AccessibilityBridge(28662):VirtualView节点不能是根节点。E/ExoPlayerImplInternal(28662):源错误。E/ExoPlayerImplInternal(28662):com.google.Androidexoplayer2。上游HttpDataSource$InvalidResponseCodeException:响应代码:404 E/ExoPlayerImplInternal(28662):位于com.google.Androidexoplayer2。上游DefaultHttpDataSource。打开(DefaultHttpDataSource.java:300)E/ExoPlayerImplInternal(28662):在com上。谷歌。Androidexoplayer2。上游StatsDataSource。open(StatsDataSource.java:83)E/ExoPlayerImplInternal(28662):在com上。谷歌。Androidexoplayer2。来源ExtractormDiaperiod$ExtractingLoadable。加载(extractoremipperiod.java:885)E/ExoPlayerImplInternal(28662):在com上。谷歌。Androidexoplayer2。上游Loader$LoadTask。运行(Loader.java:381)E/ExoPlayerImplInternal(28662):在java上运行。util。同时发生的线程池执行器。runWorker(ThreadPoolExecutor.java:1167)E/ExoPlayerImplInternal(28662):在java。util。同时发生的ThreadPoolExecutor$Worker。运行(ThreadPoolExecutor.java:641)E/ExoPlayerImplInternal(28662):在java上运行。朗。丝线。运行(Thread.java:919)

共有2个答案

南宫喜
2023-03-14

在pubspec上安装vimeoplayer:^0.1.8

return Scaffold(
        appBar: AppBar(title: Text('Video EasyRider')),
       body: ListView(children: <Widget>[
          VimeoPlayer(id: '123456789', autoPlay: false),
        ]));
  }
张兴旺
2023-03-14

你不能使用Vimeo URLhttps://vimeo.com/{一些视频id}VideoPlayerController需要可流化的视频URL。

解决方案1

Vimeo所需的保费账户

>

解决方案2

视频链接每15分钟就会过期一次

  1. 调用APIhttps://player.vimeo.com/video/{video_id}/config您将获得JSON响应
  2. 你将获得mp4视频url

解决方案3

  1. 将视频控制器替换为webivew给这个urlhttps://vimeo.com/{thin-Video-id}...启用javascript,视频将在webview中播放。
 类似资料:
  • 我在一个回收视图中有几张卡片。每张卡都有一个自定义视频视图。单击视频视图,视频应开始。然而,在我的例子中,它只显示蓝色边框,视频没有运行。代码如下所示, 自定义卡视图。xml: 自定义视频视图: 主要活动: activity\u main。xml: 我希望每张卡最初只显示一个缩略图。单击视频后,相关卡应启动视频(不是全部)。视频启动时,VideoView应占据整个屏幕。我怎样才能做到这一点? 谢谢

  • 问题内容: 我在android中实现了视频播放,这对android来说是全新的,这是我到目前为止收集的部分代码。 根据逻辑,它应该播放视频。不知道我在哪里做错了。 问题答案:

  • 我正在尝试创建弹出与Vimeo视频在里面。我的页面上有divideid=“showvideo”。单击要打开弹出窗口的div(带有id=“Opened-Video”的新div)。id=“open-video”的Div有如下所示的Viemo视频的iframe 使用src URL中的?autoplay=1参数将此iframe设置为自动播放。 这是我的JavaScript 这就管用了。 您将注意到html

  • 每当我加载html文件时,它都会给我一个错误 每当我按下播放按钮时,就会出现以下错误 我能够加载任何远程视频并运行,但问题是当我从资产文件夹代码加载本地视频以加载文件并设置web视图时 干杯,Saurav

  • 我正在使用视频标签播放我的项目中的视频,我想它只播放mp4。它在chrome中播放有一点滞后,但在ie或Firefox中不播放。我想知道是否有一个简单的修复或更好的嵌入vlc播放器。 并在后端为源设置src。