在 Flutter 中播放 Vimeo 视频

Tee*_*har 9 android vimeo dart flutter flutter-web

我正在尝试使用插件在 flutter 应用程序中播放vimeo 视频video_player没有成功,它抛出了一堆错误。请帮助我如何在颤振应用程序中实现这一点?使用 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

调试控制台中的错误 -

E/AccessibilityBridge(28662):VirtualView 节点不能是根节点。E/ExoPlayerImplInternal(28662):源错误。E/ExoPlayerImplInternal(28662): com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: 响应代码: 404 E/ExoPlayerImplInternal(28662): 在 com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java :300) E/ExoPlayerImplInternal(28662): 在 com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83) E/ExoPlayerImplInternal(28662): 在 com.google.android.exoplayer2.source.ExtractorMediaPeriod $ExtractingLoadable.load(ExtractorMediaPeriod.java:885) E/ExoPlayerImplInternal(28662): 在 com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381) E/ExoPlayerImplInternal(28662): 在 java .util.并发。

Rah*_*var 19

您不能使用 Vimeo URL https://vimeo.com/{some-video-id}VideoPlayerController需要可流式传输的视频 URL。

解决方案1

Vimeo 所需的高级帐户

  1. 转到https://vimeo.com/manage/并选择您要播放的视频
  2. 从左侧面板中选择分发选项卡。
  3. 选择视频文件链接
  4. 选择播放视频.. 共同支付视频链接(它的 mp4 可窃取视频链接)..使用此 URL 为VideoPlayerController.

    在此处输入图片说明

解决方案2

视频链接每 15 分钟失效一次

  1. 调用 API https://player.vimeo.com/video/{video_id}/config你会得到 JSON 响应。 在此处输入图片说明
  2. 渐进式对象,您将获得 mp4 视频网址。

解决方案3

  1. 将视频控制器替换为webivew给这个网址 https://vimeo.com/ {some-video-id} ..启用 javascript,视频将在 webview 中播放。

  • 我创建了 vimeo 播放器的测试版本。请随意 fork 和修改!https://github.com/ThuAbLKA/flutter-vimeo-player (3认同)