Youtube_player_flutter: [BUG] 无限加载视频

创建于 2020-03-07  ·  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 主频道(最新更新),但在 beta 频道上也有同样的问题

附加上下文
我检查了这个错误报告: 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 模拟器上也遇到了同样的问题。 如果我降级到 v6.1.1,视频会加载。

minSdkVersion 21

我不包括 webview_flutter。

初始化相当简单:

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

所有24条评论

同样的问题。 有任何进展或解决方法吗?

我有同样的问题。 视频永远加载。

它只发生在发布版本中的真实 Android 设备上。
Android Emulator (debug) 工作正常,iOS Simulator (debug) 和 Device (release) 也工作。

设备:三星 Galaxy A6
安卓:9(派)
Flutter 1.12.13+hotfix.9
youtube_player_flutter: ^6.1.0+7

这真的是一个很好的选择,让我考虑使用类似flutter_youtube_view的东西来代替......

好的,经过进一步调查,我找到了问题的原因。 新建flutter项目后,貌似需要手动设置Android权限。 默认情况下,发布版本没有任何权限 -> 无法访问互联网。 因此 youtube 播放器无法访问源文件并永远加载。 将以下内容添加到 AndroidManifest.xml 为我解决了这个问题:

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

解决方法:安装后 Flutter 发布的应用无法在设备上运行

好的,经过进一步调查,我找到了问题的原因。 新建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 中删除这个依赖解决了这个问题

我发现我的问题是视频 ID 实际上正在等待发布。 将在 x 天后首映。 如果您尝试播放即将首映的视频,一个真正的 youtube 播放器会这样说。 也许这应该是一个附加功能

在 iOS 9.3.5 的 iPad 3 上同样的问题,以上都没有帮助我

应该用 v7.0.0 修复。

应该用 v7.0.0 修复。

我正在使用7.0.0+3但在开始视频之前无限加载仍然是我的 Android 模拟器上的问题

我有同样的无限加载问题,关于这个问题的任何更新?

我在 Android Pixel 2 XL 模拟器上也遇到了同样的问题。 如果我降级到 v6.1.1,视频会加载。

minSdkVersion 21

我不包括 webview_flutter。

初始化相当简单:

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

我在 Android Pixel 3 上也遇到了同样的问题。视频一直在加载,它在 iOS 上完美运行。

这是模拟器的问题吗? 有人试过真正的安卓设备吗?

任何更新都会有所帮助。

谢谢你。

遇到同样的问题。
虽然视频播放良好,但加载程序继续在视频屏幕的左下方旋转。

有没有人找到任何解决这个问题的方法?

有没有人找到任何解决这个问题的方法?

降级到 6.1.1 包

感谢@JigarKotak7的回复,我将它降级为 v6.1.1 包,但它仍然没有在模拟器中运行。 所以我尝试了@Guunlek 的想法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

我在播放视频时也遇到了一些问题,它正在无限加载,我想知道为什么

也是同样的问题

我有同样的无限加载问题,它在模拟器中工作,但在真实设备上它不工作

嘿@santhoshisrimanthula
以防它对你有帮助。 我能感觉到你的沮丧,哈哈。

所以。 最新版本适用于少数手机,不适用于其他手机。
我认为这与android版本有关

我通过降级到版本youtube_player_flutter: ^6.1.1解决了这个问题

image

我只有调试清单的互联网许可。 向主清单添加互联网权限后,它对我有用。

此页面是否有帮助?
0 / 5 - 0 等级