バグを説明する
アプリに実装されているデフォルトの例をテストしましたが、動画が無限に読み込まれています。デバッグコンソールの最後のメッセージは次のとおりです。
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エミュレーター(デバッグ)が機能し、iOSシミュレーター(デバッグ)とデバイス(リリース)も機能します。
デバイス:Samsung Galaxy A6
Android:9(パイ)
Flutter 1.12.13 + hotfix.9
youtube_player_flutter:^ 6.1.0 + 7
これは本当にショートッパーであり、代わりにflutter_youtube_viewのようなものを使用することを考えさせてくれます...
さらに調査した結果、問題の理由が見つかりました。 新しいフラッタープロジェクトを作成した後、Androidの権限を手動で設定する必要があるようです。 デフォルトでは、リリースバージョンには権限がありません->インターネットへのアクセスはありません。 したがって、youtube-playerはソースファイルにアクセスできず、永久にロードされます。 AndroidManifest.xmlに以下を追加すると、問題が解決しました。
<uses-permission android:name="android.permission.INTERNET"/>
解決策が見つかりました:インストール時にFlutterリリースされたアプリがデバイスで機能しない
さらに調査した結果、問題の理由が見つかりました。 新しいフラッタープロジェクトを作成した後、Androidの権限を手動で設定する必要があるようです。 デフォルトでは、リリースバージョンには権限がありません->インターネットへのアクセスはありません。 したがって、youtube-playerはソースファイルにアクセスできず、永久にロードされます。 AndroidManifest.xmlに以下を追加すると、問題が解決しました。
<uses-permission android:name="android.permission.INTERNET"/>
解決策が見つかりました:インストール時にFlutterリリースされたアプリがデバイスで機能しない
それは私にはうまくいきません。
それでも同じ問題があります。
私にとってもiOSデバイスやシミュレーターでは動作しません。 6.1.0 +7を使用する
この無限のロード中にFullScreenを実行しようとすると、エラーが発生します。無効なビデオID =エラーコード:1
私も同じ問題を抱えていました。
この例は正常に機能していましたが、既存のプロジェクト内でプラグインを使用すると、読み込みが無限になります。
私の場合、問題の原因はwebview_flutter:^ 0.3.20 + 2
pubspecからこの依存関係を削除すると、問題が解決しました
私の問題は、ビデオIDが実際に公開されるのを待っていることに気づきました。 x日でプレミア公開するように設定します。 プレミア公開しようとしているビデオを再生しようとすると、実際のYouTubeプレーヤーがこれを言います。 多分これは追加機能になるはずです
iOS9.3.5を搭載したiPad3でも同じ問題が発生しましたが、上記のいずれも役に立ちませんでした
v7.0.0で修正する必要があります。
v7.0.0で修正する必要があります。
7.0.0+3
を使用していますが、ビデオを開始する前の無限の読み込みがAndroidエミュレーターでまだ問題になっています
私は同じ無限の読み込みの問題を抱えています、この問題に関する更新はありますか?
Android Pixel 2XLエミュレーターでも同じ問題が発生します。 v6.1.1にダウングレードすると、ビデオがロードされます。
minSdkVersion 21
webview_flutterは含めません。
初期化はかなり簡単です:
_controller = YoutubePlayerController(
initialVideoId: videoID,
flags: YoutubePlayerFlags(
mute: false,
enableCaption: false,
autoPlay: false,
),
);
Android Pixel 3でも同じ問題が発生します。動画は引き続き読み込まれ、iOSでも完全に機能します。
これはエミュレータだけの問題ですか? 誰かが実際のAndroidデバイスで試しましたか?
どんな更新でも役に立ちます。
ありがとう。
同じ問題が発生しています。
ビデオはうまく再生されますが、ローダーはビデオ画面の左下で回転し続けます。
誰かがこの問題の解決策を見つけましたか?
誰かがこの問題の解決策を見つけましたか?
6.1.1パッケージにダウングレード
返信してくれた@ JigarKotak7に感謝します。v6.1.1パッケージにダウングレードしましたが、エミュレータでまだ実行されていませんでした。 だから私は@Gunlekのアイデアを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幸せそれはあなたのためにうまくいった。
以下のリンクには、クライアントの1つ用に作成したアプリのプレビューが少しあります。ここではYouTubeプレーヤーを使用しています。 ご不明な点がございましたら、お気軽にお問い合わせください。
https://www.youtube.com/watch?v=O3dy9p4ybes
@Hardikkr幸せそれはあなたのためにうまくいった。
以下のリンクには、クライアントの1つ用に作成したアプリのプレビューが少しあります。ここではYouTubeプレーヤーを使用しています。 ご不明な点がございましたら、お気軽にお問い合わせください。
https://www.youtube.com/watch?v=O3dy9p4ybes
私はまた、ビデオの再生にいくつかの問題があり、それが無限にロードされており、その理由を理解できません
同じ問題
私は同じ無限の読み込みの問題を抱えています、それはエミュレーターで動作していますが、実際のデバイスは動作していません
ねえ@santhoshisrimanthula
それがあなたに役立つ場合に備えて。 あなたの欲求不満を感じることができます笑。
それで。 最新バージョンはいくつかの電話で動作し、他の電話では動作しません。
アンドロイド版と関係があると思います
バージョンyoutube_player_flutter: ^6.1.1
にダウングレードすることで、この問題を解決しました
私はデバッグマニフェストに対してのみインターネット許可を持っていました。 メインマニフェストにインターネット許可を追加した後、それは私のために働いた。
最も参考になるコメント
Android Pixel 2XLエミュレーターでも同じ問題が発生します。 v6.1.1にダウングレードすると、ビデオがロードされます。
minSdkVersion 21
webview_flutterは含めません。
初期化はかなり簡単です: