Воспроизведение видео Vimeo во флаттере - PullRequest
1 голос
/ 28 февраля 2020

Я пытаюсь воспроизвести видео vimeo в приложении флаттера, используя плагин video_player, но получил безуспешно , он выдает кучу ошибок. Пожалуйста, помогите мне, как я мог бы go о реализации этого в приложении флаттера? используя веб-просмотр или любой плагин и т. д. c? возможно, фрагмент кода будет для меня огромной помощью!

вот мой фрагмент кода

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 не должен быть узлом root. E / ExoPlayerImplInternal (28662): ошибка источника. E / ExoPlayerImplInternal (28662): com.google. android .exoplayer2.upstream.HttpDataSource $ InvalidResponseCodeException: код ответа: 404 E / ExoPlayerImplInternal (28662): в com.google. android .exoplayourceHupd.dd.dd.tt. (DefaultHttpDataSource. java: 300) E / ExoPlayerImplInternal (28662): на com.google. android .exoplayer2.upstream.StatsDataSource.open (StatsDataSource. java: 83) E / ExoPlayerImplInternal (28662): .google. android .exoplayer2.source.ExtractorMediaPeriod $ ExtractingLoadable.load (ExtractorMediaPeriod. java: 885) E / ExoPlayerImplInternal (28662): в com.google. android .exoplayer2.upstream.Lor $ Load (Загрузчик. java: 381) E / ExoPlayerImplInternal (28662): в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1167) E / ExoPlayerImplInternal (28662): at * 1032. .concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 641) E / ExoPlayerImplInternal (28662): в java .lang.Thread.run (Поток. java: 919)

1 Ответ

3 голосов
/ 02 марта 2020

Вы не можете использовать Vimeo URL https://vimeo.com/ {some-video-id} . Для воспроизведения видео в формате VideoPlayerController требуется URL-адрес для потокового видео.

Решение 1

Для этого вам необходим премиум-аккаунт Vimeo

  1. go до https://vimeo.com/manage/ и выберите видео, которое вы хотите воспроизвести
  2. выберите вкладку распределения на левой боковой панели.
  3. выберите ссылку на видеофайл
  4. выберите видео для воспроизведения .. доплатите ссылку на видео (это ссылка на видео mp4) .. используйте этот URL для VideoPlayerController.

    enter image description here

Решение 2

Срок действия видеосвязи истекает через каждые 15 минут

  1. вызов API https://player.vimeo.com/video/ {video_id} / config you получит ответ JSON. enter image description here
  2. прогрессивный объект, вы получите MP4 видео URL.

Решение 3

  1. Замените видеоконтроллер на webivew, дайте этот URL https://vimeo.com/ {some-video-id} ... включите javascript, видео будет воспроизводиться в веб-просмотре.
...