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:
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.
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
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.
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: