Youtube_player_flutter: [ОШИБКА] Бесконечная загрузка видео

Созданный на 7 мар. 2020  ·  24Комментарии  ·  Источник: sarbagyastha/youtube_player_flutter

Опишите ошибку
Я протестировал пример по умолчанию, реализованный в приложении, и видео загружается бесконечно, последнее сообщение в консоли отладки
W/System (14804): A resource failed to call release

Воспроизвести
Определите свой контроллер следующим образом в initState()

_controller = YoutubePlayerController(
      initialVideoId: 'iLnmTe5Q2Qw',
      flags: YoutubePlayerFlags(
        forceHideAnnotation: true
      ),
    );

И реализуйте свой виджет следующим образом:

YoutubePlayer(
            controller: _controller,
            showVideoProgressIndicator: true,
            progressIndicatorColor: Colors.amber,
            onReady: () {
                print('Player is ready.');
            },
          ),

Ожидаемое поведение
Рабочее видео YouTube должно отображаться и ждать, пока пользователь начнет его воспроизводить.

Технические детали:

  • Устройство: Эмулятор
  • ОС: Андроид
  • API версии 28

    • Мастер-канал Flutter (последнее обновление), но та же проблема на бета-канале

Дополнительный контекст
Я проверил этот отчет об ошибке: https://github.com/flutter/flutter/issues/24565 .
Потому что контроллер отправляет одно и то же сообщение, если вы пытаетесь его использовать.

Дерево виджетов выглядит так:

Scaffold
  |-> SingleChildScrollView
    |-> Column
      |-> YoutubePlayer

Полная консоль отладки с ошибкой:

D/EGL_emulation(14804): eglMakeCurrent: 0xe7195440: ver 3 1 (tinfo 0xe715fcd0)
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 2 (2) 0 0
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 0 (0) 0 0
D/EGL_emulation(14804): eglCreateContext: 0xd2bf3640: maj 3 min 0 rcv 3
D/EGL_emulation(14804): eglMakeCurrent: 0xd2bf3640: ver 3 0 (tinfo 0xd0257060)
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 1 (1) 0 0
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 2 (2) 0 0
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 1 (1) 0 0
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 2 (2) 0 0
D/eglCodecCommon(14804): setVertexArrayObject: set vao to 1 (1) 0 0
W/System  (14804): A resource failed to call release.
I/flutter (14804): The controller is not ready for method calls.
bug question

Самый полезный комментарий

Такая же проблема у меня и на эмуляторе Android Pixel 2 XL. Видео загружается, если я понизил версию до версии 6.1.1.

minSdkВерсия 21

Я не включаю webview_flutter.

Инициализация довольно проста:

_controller = YoutubePlayerController(
        initialVideoId: videoID,
        flags: YoutubePlayerFlags(
          mute: false,
          enableCaption: false,
          autoPlay: false,
        ),
      );

Все 24 Комментарий

Та же проблема. Есть прогресс или обходные пути?

У меня такая же проблема. Видео загружается бесконечно.

Это происходит только на реальном Android-устройстве в релизной сборке.
Эмулятор Android (отладка) работает, и симулятор iOS (отладка) и устройство (выпуск) тоже работают.

Устройство: Samsung Galaxy A6
Android: 9 (круговая)
Флаттер 1.12.13+исправление.9
youtube_player_flutter: ^6.1.0+7

Это действительно демонстративно и позволяет мне подумать об использовании вместо этого чего-то вроде flutter_youtube_view ...

Хорошо, после некоторого дальнейшего расследования я нашел причину моей проблемы. Кажется, что разрешения Android необходимо установить вручную после создания нового проекта флаттера. По умолчанию релизная версия не имеет никаких разрешений -> нет доступа к Интернету. Поэтому youtube-плеер не может получить доступ к исходному файлу и загружается навсегда. Добавление следующего в AndroidManifest.xml решило это для меня:

<uses-permission android:name="android.permission.INTERNET"/>

Решение найдено: выпущенное приложение Flutter не работает на устройстве при установке

Хорошо, после некоторого дальнейшего расследования я нашел причину моей проблемы. Кажется, что разрешения Android необходимо установить вручную после создания нового проекта флаттера. По умолчанию релизная версия не имеет никаких разрешений -> нет доступа к Интернету. Поэтому youtube-плеер не может получить доступ к исходному файлу и загружается навсегда. Добавление следующего в AndroidManifest.xml решило это для меня:

<uses-permission android:name="android.permission.INTERNET"/>

Решение найдено: выпущенное приложение Flutter не работает на устройстве при установке

Это не работает для меня.

Все еще есть та же проблема.

У меня тоже не работает на устройствах iOS или симуляторе. Использование 6.1.0+7

Еще одно замечание: если вы попытаетесь использовать полноэкранный режим во время этой бесконечной загрузки, вы получите сообщение об ошибке Invalid Video ID = Error Code: 1.

Я была такая же проблема.
пример работал нормально, но использование плагина в моем существующем проекте приводит к бесконечной загрузке.

В моем случае проблема была вызвана webview_flutter: ^0.3.20+2

Удаление этой зависимости из моего pubspec решило проблему

Я обнаружил, что моя проблема заключается в том, что идентификаторы видео действительно ждали публикации. Премьера назначена на x дней. Настоящий ютуб-плеер говорит это, если вы пытаетесь воспроизвести видео, премьера которого вот-вот начнется. Возможно, это должно быть добавленной функцией

Та же проблема на iPad 3 с iOS 9.3.5, и ничего из вышеперечисленного мне не помогло

Должно исправить с v7.0.0.

Должно исправить с v7.0.0.

Я использую 7.0.0+3 , но бесконечная загрузка перед запуском видео по-прежнему является проблемой для моего эмулятора Android.

У меня такая же проблема с бесконечной загрузкой, какие-нибудь обновления по этой проблеме?

Такая же проблема у меня и на эмуляторе Android Pixel 2 XL. Видео загружается, если я понизил версию до версии 6.1.1.

minSdkВерсия 21

Я не включаю webview_flutter.

Инициализация довольно проста:

_controller = YoutubePlayerController(
        initialVideoId: videoID,
        flags: YoutubePlayerFlags(
          mute: false,
          enableCaption: false,
          autoPlay: false,
        ),
      );

Та же проблема и у меня на Android Pixel 3. Видео продолжает загружаться, оно отлично работает на iOS.

это проблемы только с эмулятором ?? кто-нибудь пробовал на реальном устройстве Android?

Любое обновление поможет.

Спасибо.

Возникла та же проблема.
Видео воспроизводится хорошо, но загрузчик продолжает вращаться в левом нижнем углу видеоэкрана.

Кто-нибудь нашел решение этой проблемы?

Кто-нибудь нашел решение этой проблемы?

Переход на пакет 6.1.1

Спасибо @JigarKotak7 за ответ, я понизил его до версии 6.1.1, но он все еще не работал в эмуляторе. Итак, я попробовал идею @Gunlek с Define your controller in initState() , и это сработало, это мой код:

class AboutTopic extends StatefulWidget {
  final String videoLink;

  AboutTopic({this.videoLink});

  <strong i="9">@override</strong>
  _AboutTopicState createState() => _AboutTopicState();
}

class _AboutTopicState extends State<AboutTopic> {
  YoutubePlayerController _controller;

  <strong i="10">@override</strong>
  void initState() {
     _controller = YoutubePlayerController(
      initialVideoId:
          YoutubePlayer.convertUrlToId(widget.videoLink),
      flags: YoutubePlayerFlags(
          mute: false,
          autoPlay: true,
          disableDragSeek: true,
          loop: false,
          enableCaption: false),
    );

    super.initState();
  }

  <strong i="11">@override</strong>
  Widget build(BuildContext context) {
    return Scaffold(
       appBar: AppBar(
        title: Text('About'),
        centerTitle: true,
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.of(context).pop();
          },
        )
      ),

      body: YoutubePlayer(
        controller: _controller,
        showVideoProgressIndicator: true,
        bottomActions: <Widget>[
          const SizedBox(width: 14.0),
          CurrentPosition(),
          const SizedBox(width: 8.0),
          ProgressBar(isExpanded: true),
          RemainingDuration(),
        ],
        aspectRatio: 4 / 3,
        progressIndicatorColor: Colors.white,
        onReady: () {
          print('Player is ready.');
        },
      ),
    );
  }
}

@Hardikkr Рад , что у тебя все получилось.
по ссылке ниже есть небольшой предварительный просмотр приложения, которое я создаю для одного из моих клиентов, где я использовал проигрыватель YouTube. Так что если у вас есть какие-либо вопросы, дайте мне знать.
https://www.youtube.com/watch?v=O3dy9p4ybes

@Hardikkr Рад , что у тебя все получилось.
по ссылке ниже есть небольшой предварительный просмотр приложения, которое я создаю для одного из моих клиентов, где я использовал проигрыватель YouTube. Так что если у вас есть какие-либо вопросы, дайте мне знать.
https://www.youtube.com/watch?v=O3dy9p4ybes

У меня также есть некоторые проблемы с воспроизведением видео, оно загружается бесконечно, и я не могу понять, почему

тоже такая же проблема

У меня такая же проблема с бесконечной загрузкой, она работает в эмуляторе, но на реальном устройстве не работает

привет @santoshisrimanthula
в случае, если это полезно для вас. Я чувствую твое разочарование, лол.

так. последняя версия работает на нескольких телефонах и не работает на других телефонах.
Я думаю, что это связано с версией андроида.

Я решил эту проблему, перейдя на версию youtube_player_flutter: ^6.1.1

image

У меня было разрешение на доступ в Интернет только для манифеста отладки. После добавления разрешения в Интернет в основной манифест у меня это сработало.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги