Youtube_player_flutter: [BUG] Chargement de vidéo à l'infini

Créé le 7 mars 2020  ·  24Commentaires  ·  Source: sarbagyastha/youtube_player_flutter

Décrivez le bogue
J'ai testé l'exemple par défaut implémenté dans une application et la vidéo se charge à l'infini, le dernier message dans la console de débogage est
W/System (14804): A resource failed to call release

Reproduire
Définissez votre contrôleur comme ceci dans initState()

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

Et implémentez votre widget comme ceci :

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

Comportement attendu
Une vidéo YouTube fonctionnelle devrait apparaître et attendre que l'utilisateur commence à la lire

Détails techniques:

  • Périphérique : émulateur
  • Système d'exploitation : Androïd
  • Version API 28

    • Canal principal Flutter (dernière mise à jour) mais même problème sur le canal bêta

Contexte supplémentaire
J'ai vérifié ce rapport de bogue : https://github.com/flutter/flutter/issues/24565
Parce que le contrôleur envoie le même message si vous essayez de l'utiliser.

L'arborescence des widgets ressemble à ceci :

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

Console de débogage erronée complète :

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

Commentaire le plus utile

Même problème pour moi également sur l'émulateur Android Pixel 2 XL. La vidéo se charge si je rétrograde à la v6.1.1.

minSdkVersion 21

Je n'inclus pas webview_flutter.

L'initialisation est assez simple :

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

Tous les 24 commentaires

Même problème. Des progrès ou des solutions de contournement?

J'ai le même problème. La vidéo se charge indéfiniment.

Cela ne se produit que sur un véritable appareil Android dans la version de version.
L'émulateur Android (débogage) fonctionne, et le simulateur iOS (débogage) et l'appareil (version) fonctionnent également.

Appareil : Samsung Galaxy A6
Android : 9 (tarte)
Flutter 1.12.13+correctif.9
youtube_player_flutter : ^6.1.0+7

C'est vraiment un showstopper et me permet de penser à utiliser quelque chose comme flutter_youtube_view à la place...

Ok après une enquête plus approfondie, j'ai trouvé la raison de mon problème. Il semble que les autorisations Android doivent être définies manuellement après la création d'un nouveau projet Flutter. Par défaut, la version finale n'a aucune autorisation -> pas d'accès à Internet. Par conséquent, le lecteur youtube ne peut pas accéder au fichier source et se charge indéfiniment. L'ajout de ce qui suit à AndroidManifest.xml l'a résolu pour moi :

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

Solution trouvée sur : l'application publiée par Flutter ne fonctionne pas sur l'appareil, une fois installée

Ok après une enquête plus approfondie, j'ai trouvé la raison de mon problème. Il semble que les autorisations Android doivent être définies manuellement après la création d'un nouveau projet Flutter. Par défaut, la version finale n'a aucune autorisation -> pas d'accès à Internet. Par conséquent, le lecteur youtube ne peut pas accéder au fichier source et se charge indéfiniment. L'ajout de ce qui suit à AndroidManifest.xml l'a résolu pour moi :

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

Solution trouvée sur : l'application publiée par Flutter ne fonctionne pas sur l'appareil, une fois installée

Cela ne fonctionne pas pour moi.

Toujours le même problème.

Ne fonctionne pas non plus sur les appareils iOS ou le simulateur pour moi. Utilisation de 6.1.0+7

Une autre note si vous essayez et FullScreen pendant ce chargement infini, vous obtenez une erreur ID vidéo invalide = Code d'erreur : 1

J'ai eu le même problème.
l'exemple fonctionnait bien mais l'utilisation du plugin dans mon projet existant entraîne un chargement infini.

Dans mon cas, le problème a été causé par webview_flutter : ^0.3.20+2

La suppression de cette dépendance de mon pubspec a résolu le problème

J'ai trouvé mon problème, les identifiants vidéo attendaient en fait d'être publiés. Prévu pour la première dans x jours. Un vrai lecteur YouTube le dit si vous essayez de lire la vidéo qui est sur le point d'être diffusée. Peut-être que cela devrait être une fonctionnalité supplémentaire

Même problème sur iPad 3 avec iOS 9.3.5, et rien de ce qui précède ne m'a aidé

Devrait être corrigé avec la v7.0.0.

Devrait être corrigé avec la v7.0.0.

J'utilise 7.0.0+3 mais le chargement infini avant le démarrage de la vidéo est toujours un problème sur mon émulateur Android

J'ai le même problème de chargement infini, une mise à jour sur ce problème ?

Même problème pour moi également sur l'émulateur Android Pixel 2 XL. La vidéo se charge si je rétrograde à la v6.1.1.

minSdkVersion 21

Je n'inclus pas webview_flutter.

L'initialisation est assez simple :

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

Même problème pour moi également sur Android Pixel 3. La vidéo continue de se charger, elle fonctionne parfaitement sur iOS.

est-ce un problème avec juste Emulator ?? quelqu'un a-t-il essayé sur un vrai appareil Android ?

Toute mise à jour aiderait.

Merci.

Vivre le même problème.
La vidéo est bonne mais le chargeur continue de tourner en bas à gauche de l'écran vidéo.

Quelqu'un a-t-il trouvé une solution à ce problème?

Quelqu'un a-t-il trouvé une solution à ce problème?

Rétrograder vers le package 6.1.1

Merci @ JigarKotak7 d'avoir répondu, je l'ai rétrogradé au package v6.1.1 mais il ne fonctionnait toujours pas dans l'émulateur. J'ai donc essayé l'idée @Gunlek de Define your controller in initState() et ça a marché, voici mon code :

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 Heureux que cela ait fonctionné pour vous.
Le lien ci-dessous contient un aperçu de l'application que j'ai créée pour l'un de mes clients, où j'ai utilisé le lecteur YouTube. Donc, si vous avez des questions, faites-le moi savoir.
https://www.youtube.com/watch?v=O3dy9p4ybes

@Hardikkr Heureux que cela ait fonctionné pour vous.
Le lien ci-dessous contient un aperçu de l'application que j'ai créée pour l'un de mes clients, où j'ai utilisé le lecteur YouTube. Donc, si vous avez des questions, faites-le moi savoir.
https://www.youtube.com/watch?v=O3dy9p4ybes

J'ai également des problèmes pour lire la vidéo, elle se charge à l'infini et je ne comprends pas pourquoi

aussi même problème

J'ai le même problème de chargement infini, cela fonctionne dans l'émulateur mais le vrai appareil ne fonctionne pas

salut @santhoshisrimanthula
au cas où cela vous serait utile. Je peux sentir ta frustration lol.

alors. la dernière version fonctionne sur quelques téléphones et ne fonctionne pas sur d'autres téléphones.
Je pense que cela a quelque chose à voir avec la version Android

J'ai résolu ce problème en passant à la version youtube_player_flutter: ^6.1.1

image

J'avais l'autorisation Internet uniquement pour le manifeste de débogage. Après avoir ajouté l'autorisation Internet au manifeste principal, cela a fonctionné pour moi.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

mohadel92 picture mohadel92  ·  3Commentaires

kyawsithu picture kyawsithu  ·  4Commentaires

cerireyhan picture cerireyhan  ·  3Commentaires

kulture-rob-snider picture kulture-rob-snider  ·  5Commentaires

jimmyff picture jimmyff  ·  3Commentaires