Youtube_player_flutter: [BUG] Carregamento infinito de vídeo

Criado em 7 mar. 2020  ·  24Comentários  ·  Fonte: sarbagyastha/youtube_player_flutter

Descreva o erro
Testei o exemplo padrão implementado em um aplicativo e o vídeo está carregando infinitamente, a última mensagem no console de depuração é
W/System (14804): A resource failed to call release

Reproduzir
Defina seu controlador assim em initState()

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

E implemente seu widget assim:

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

Comportamento esperado
Um vídeo do youtube funcionando deve aparecer e esperar que o usuário comece a reproduzi-lo

Detalhes técnicos:

  • Dispositivo: Emulador
  • SO: Android
  • Versão API 28

    • Canal mestre do Flutter (última atualização), mas o mesmo problema no canal beta

Contexto adicional
Eu verifiquei este relatório de bug: https://github.com/flutter/flutter/issues/24565
Porque o controlador está enviando a mesma mensagem se você estiver tentando usá-lo.

A árvore de widgets é assim:

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

Console de depuração completo com erro:

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

Comentários muito úteis

O mesmo problema para mim também no emulador Android Pixel 2 XL. O vídeo é carregado se eu fizer o downgrade para a v6.1.1.

minSdkVersão 21

Eu não incluo webview_flutter.

A inicialização é bastante simples:

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

Todos 24 comentários

O mesmo problema. Algum progresso ou soluções alternativas?

Eu tenho o mesmo problema. O vídeo está carregando para sempre.

Isso só acontece em um dispositivo Android real na versão de versão.
O Android Emulator (debug) está funcionando, e o iOS Simulator (debug) e o Device (release) também funcionam.

Dispositivo: Samsung Galaxy A6
Android: 9 (torta)
Flutter 1.12.13+hotfix.9
youtube_player_flutter: ^6.1.0+7

Isso realmente é um impedimento e me permite pensar em usar algo como flutter_youtube_view ...

Ok, depois de uma investigação mais aprofundada, encontrei o motivo do meu problema. Parece que as permissões do Android precisam ser definidas manualmente após a criação de um novo projeto de vibração. Por padrão, a versão de lançamento não possui permissões -> sem acesso à Internet. Portanto, o player do youtube não pode acessar o arquivo de origem e carrega para sempre. Adicionar o seguinte ao AndroidManifest.xml resolveu para mim:

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

Solução encontrada em: O aplicativo lançado pelo Flutter não funciona no dispositivo, quando instalado

Ok, depois de uma investigação mais aprofundada, encontrei o motivo do meu problema. Parece que as permissões do Android precisam ser definidas manualmente após a criação de um novo projeto de vibração. Por padrão, a versão de lançamento não possui permissões -> sem acesso à Internet. Portanto, o player do youtube não pode acessar o arquivo de origem e carrega para sempre. Adicionar o seguinte ao AndroidManifest.xml resolveu para mim:

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

Solução encontrada em: O aplicativo lançado pelo Flutter não funciona no dispositivo, quando instalado

Não funciona para mim.

Ainda tem o mesmo problema.

Também não funciona em dispositivos iOS ou simulador para mim. Usando 6.1.0+7

Outra observação, se você tentar FullScreen durante esse carregamento infinito, receberá um erro Invalid Video ID = Error Code: 1

Eu tive o mesmo problema.
o exemplo estava funcionando bem, mas usar o plugin dentro do meu projeto existente resulta em carregamento infinito.

No meu caso, o problema foi causado por webview_flutter: ^0.3.20+2

Remover essa dependência do meu pubspec resolveu o problema

Encontrei meu problema, os ids do vídeo estavam realmente esperando para serem publicados. Previsto para estrear em x dias. Um verdadeiro player do youtube diz isso se você tentar reproduzir o vídeo que está prestes a estrear. Talvez isso deva ser um recurso adicional

Mesmo problema no iPad 3 com iOS 9.3.5, e nenhuma das opções acima me ajudou

Deve corrigir com v7.0.0.

Deve corrigir com v7.0.0.

Estou usando 7.0.0+3 mas o carregamento infinito antes de iniciar o vídeo ainda é um problema no meu emulador Android

Estou tendo o mesmo problema de carregamento infinito, alguma atualização sobre esse problema?

O mesmo problema para mim também no emulador Android Pixel 2 XL. O vídeo é carregado se eu fizer o downgrade para a v6.1.1.

minSdkVersão 21

Eu não incluo webview_flutter.

A inicialização é bastante simples:

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

O mesmo problema para mim também no Android Pixel 3. O vídeo continua carregando, funciona perfeitamente no iOS.

isso é um problema apenas com o emulador ?? alguém já tentou no dispositivo Android real?

Qualquer atualização ajudaria.

Obrigada.

Vivenciando o mesmo problema.
O vídeo é reproduzido bem, mas o carregador continua girando na parte inferior esquerda da tela do vídeo.

Alguém encontrou alguma solução para este problema?

Alguém encontrou alguma solução para este problema?

Fazer downgrade para o pacote 6.1.1

Obrigado @JigarKotak7 por responder, fiz downgrade para o pacote v6.1.1, mas ainda não estava sendo executado no emulador. Então eu tentei a ideia do @Gunlek para Define your controller in initState() e funcionou, este é o meu código:

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 Feliz que funcionou para você.
o link abaixo tem um pouco de visualização do aplicativo que construo para um de meus clientes, onde usei o player do YouTube. Então se você tiver alguma dúvida me avise.
https://www.youtube.com/watch?v=O3dy9p4ybes

@Hardikkr Feliz que funcionou para você.
o link abaixo tem um pouco de visualização do aplicativo que construo para um de meus clientes, onde usei o player do YouTube. Então se você tiver alguma dúvida me avise.
https://www.youtube.com/watch?v=O3dy9p4ybes

também estou tendo alguns problemas ao reproduzir o vídeo, ele está carregando infinitamente e não consigo descobrir por que

tambem mesmo problema

Estou tendo o mesmo problema de carregamento infinito, está funcionando no emulador, mas o dispositivo real não está funcionando

oi @santhoshisrimanthula
caso seja útil para você. Eu posso sentir sua frustração lol.

assim. a versão mais recente funciona em alguns telefones e não funciona em outros telefones.
Acho que tem algo a ver com a versão do Android

Resolvi esse problema fazendo o downgrade para a versão youtube_player_flutter: ^6.1.1

image

Eu tinha permissão de internet apenas para manifesto de depuração. Depois de adicionar permissão de internet ao manifesto principal, funcionou para mim.

Esta página foi útil?
0 / 5 - 0 avaliações