描述错误
我测试了在应用程序中实现的默认示例,视频正在无限加载,调试控制台中的最后一条消息是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 视频应该出现并等待用户开始播放
技术细节:
附加上下文
我检查了这个错误报告: 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.
同样的问题。 有任何进展或解决方法吗?
我有同样的问题。 视频永远加载。
它只发生在发布版本中的真实 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项目后,貌似需要手动设置Android权限。 默认情况下,发布版本没有任何权限 -> 无法访问互联网。 因此 youtube 播放器无法访问源文件并永远加载。 将以下内容添加到 AndroidManifest.xml 为我解决了这个问题:
<uses-permission android:name="android.permission.INTERNET"/>
它对我不起作用。
仍然有同样的问题。
也不适用于我的 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
解决了这个问题
我只有调试清单的互联网许可。 向主清单添加互联网权限后,它对我有用。
最有用的评论
我在 Android Pixel 2 XL 模拟器上也遇到了同样的问题。 如果我降级到 v6.1.1,视频会加载。
minSdkVersion 21
我不包括 webview_flutter。
初始化相当简单: