Youtube_player_flutter: [BUG] Carga infinita de video

Creado en 7 mar. 2020  ·  24Comentarios  ·  Fuente: sarbagyastha/youtube_player_flutter

Describa el error
Probé el ejemplo predeterminado implementado en una aplicación y el video se carga infinitamente, el último mensaje en la consola de depuración es
W/System (14804): A resource failed to call release

Reproducir
Defina su controlador así en initState()

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

E implemente su widget de esta manera:

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

Comportamiento esperado
Debería aparecer un video de YouTube que funcione y esperar a que el usuario comience a reproducirlo.

Detalles técnicos:

  • Dispositivo: emulador
  • Sistema operativo: Android
  • Versión API 28

    • Flutter master channel (última actualización) pero el mismo problema en el canal beta

Contexto adicional
Revisé este informe de errores: https://github.com/flutter/flutter/issues/24565
Porque el controlador está enviando el mismo mensaje si está tratando de usarlo.

El árbol de widgets es así:

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

Consola de depuración con errores completa:

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

Comentario más útil

El mismo problema para mí también en el emulador Android Pixel 2 XL. El video se carga si cambio a v6.1.1.

minSdk Versión 21

No incluyo webview_flutter.

La inicialización es bastante simple:

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

Todos 24 comentarios

Mismo problema. ¿Algún progreso o solución?

Tengo el mismo problema. El video se está cargando para siempre.

Solo ocurre en un dispositivo Android real en la versión de lanzamiento.
El emulador de Android (depuración) funciona, y el simulador de iOS (depuración) y el dispositivo (lanzamiento) también funcionan.

Dispositivo: Samsung Galaxy A6
Androide: 9 (Pastel)
Flutter 1.12.13+revisión.9
youtube_player_flutter: ^6.1.0+7

Esto realmente es espectacular y me deja pensar en usar algo como flutter_youtube_view en su lugar...

Ok, después de investigar un poco más, encontré la razón de mi problema. Parece que los permisos de Android deben configurarse a mano después de crear un nuevo proyecto de aleteo. De forma predeterminada, la versión de lanzamiento no tiene ningún permiso -> sin acceso a Internet. Por lo tanto, el reproductor de YouTube no puede acceder al archivo fuente y se carga para siempre. Agregar lo siguiente a AndroidManifest.xml lo resolvió para mí:

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

Solución encontrada en: La aplicación Flutter lanzada no funciona en el dispositivo, cuando está instalada

Ok, después de investigar un poco más, encontré la razón de mi problema. Parece que los permisos de Android deben configurarse a mano después de crear un nuevo proyecto de aleteo. De forma predeterminada, la versión de lanzamiento no tiene ningún permiso -> sin acceso a Internet. Por lo tanto, el reproductor de YouTube no puede acceder al archivo fuente y se carga para siempre. Agregar lo siguiente a AndroidManifest.xml lo resolvió para mí:

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

Solución encontrada en: La aplicación Flutter lanzada no funciona en el dispositivo, cuando está instalada

No funciona para mí.

Todavía tiene el mismo ploblema.

Tampoco funciona en dispositivos iOS o simulador para mí. Usando 6.1.0+7

Otra nota si intentas y FullScreen durante esta carga infinita obtienes un error ID de video no válido = Código de error: 1

Tuve el mismo problema.
el ejemplo funcionaba bien, pero usar el complemento dentro de mi proyecto existente da como resultado una carga infinita.

En mi caso, el problema fue causado por webview_flutter: ^0.3.20+2

Eliminar esta dependencia de mi pubspec resolvió el problema

Encontré mi problema, las identificaciones de video en realidad estaban esperando ser publicadas. Programado para estrenarse en x días. Un reproductor de youtube real dice esto si intenta reproducir el video que está a punto de estrenarse. Tal vez esto debería ser una característica adicional

Mismo problema en iPad 3 con iOS 9.3.5, y ninguno de los anteriores me ayudó

Debería arreglarse con v7.0.0.

Debería arreglarse con v7.0.0.

Estoy usando 7.0.0+3 pero la carga infinita antes de iniciar el video sigue siendo un problema en mi emulador de Android

Tengo el mismo problema de carga infinita, ¿alguna actualización sobre este problema?

El mismo problema para mí también en el emulador Android Pixel 2 XL. El video se carga si cambio a v6.1.1.

minSdk Versión 21

No incluyo webview_flutter.

La inicialización es bastante simple:

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

El mismo problema para mí también en Android Pixel 3. El video sigue cargando, funciona perfectamente en iOS.

¿Es esto un problema solo con el emulador? ¿Alguien ha probado en un dispositivo Android real?

Cualquier actualización ayudaría.

Gracias.

Experimentando el mismo problema.
Sin embargo, el video se reproduce bien, pero el cargador sigue girando en la parte inferior izquierda de la pantalla de video.

¿Alguien encontró alguna solución para este problema?

¿Alguien encontró alguna solución para este problema?

Degradar al paquete 6.1.1

Gracias @JigarKotak7 por responder, lo bajé al paquete v6.1.1 pero aún no se ejecutaba en el emulador. Así que probé la idea de @Gunlek para Define your controller in initState() y funcionó, este es mi 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 de que te haya funcionado.
El siguiente enlace tiene una pequeña vista previa de la aplicación que construí para uno de mis clientes, donde he usado el reproductor de YouTube. Así que si tienes alguna pregunta, házmelo saber.
https://www.youtube.com/watch?v=O3dy9p4ybes

@Hardikkr Feliz de que te haya funcionado.
El siguiente enlace tiene una pequeña vista previa de la aplicación que construí para uno de mis clientes, donde he usado el reproductor de YouTube. Así que si tienes alguna pregunta, házmelo saber.
https://www.youtube.com/watch?v=O3dy9p4ybes

También tengo algunos problemas para reproducir el video, se carga infinitamente y no puedo entender por qué.

tambien el mismo problema

Tengo el mismo problema de carga infinita, funciona en el emulador pero el dispositivo real no funciona

hola @santhoshisrimanthula
en caso de que te sea útil. Puedo sentir tu frustración jajaja.

entonces. la última versión funciona en algunos teléfonos y no funciona en otros teléfonos.
Creo que tiene algo que ver con la versión de Android.

Resolví este problema degradando a la versión youtube_player_flutter: ^6.1.1

image

Tenía permiso de Internet solo para el manifiesto de depuración. Después de agregar el permiso de Internet al manifiesto principal, funcionó para mí.

¿Fue útil esta página
0 / 5 - 0 calificaciones