Youtube_player_flutter: [BUG] Pemuatan video tanpa batas

Dibuat pada 7 Mar 2020  ·  24Komentar  ·  Sumber: sarbagyastha/youtube_player_flutter

Jelaskan bugnya
Saya menguji contoh default yang diterapkan dalam aplikasi dan video dimuat tanpa batas, pesan terakhir di konsol debug adalah
W/System (14804): A resource failed to call release

Untuk Mereproduksi
Tentukan pengontrol Anda seperti ini di initState()

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

Dan terapkan widget Anda seperti ini:

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

Perilaku yang diharapkan
Video youtube yang berfungsi akan muncul dan menunggu pengguna mulai memutarnya

Detail Teknis:

  • Perangkat: Emulator
  • OS: Android
  • Versi API 28

    • Saluran master Flutter (pembaruan terbaru) tetapi masalah yang sama pada saluran beta

konteks tambahan
Saya memeriksa laporan bug ini: https://github.com/flutter/flutter/issues/24565
Karena pengontrol mengirimkan pesan yang sama jika Anda mencoba menggunakannya.

Pohon widget seperti ini:

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

Selesaikan konsol debug yang error:

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

Komentar yang paling membantu

Masalah yang sama untuk saya juga pada emulator Android Pixel 2 XL. Video dimuat jika saya menurunkan versi ke v6.1.1.

minSdkVersi 21

Saya tidak menyertakan webview_flutter.

Inisialisasi cukup sederhana:

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

Semua 24 komentar

Masalah yang sama. Ada kemajuan atau solusi?

Saya memiliki masalah yang sama. Video sedang dimuat selamanya.

Itu hanya terjadi pada Perangkat Android nyata dalam versi rilis.
Android Emulator (debug) berfungsi, dan Simulator iOS (debug) dan Perangkat (rilis) juga berfungsi.

Perangkat: Samsung Galaxy A6
Android: 9 (Pai)
Flutter 1.12.13+perbaikan terbaru.9
youtube_player_flutter: ^6.1.0+7

Ini benar-benar showstopper dan membuat saya berpikir untuk menggunakan sesuatu seperti flutter_youtube_view sebagai gantinya...

Ok setelah beberapa penyelidikan lebih lanjut saya menemukan alasan untuk masalah saya. Tampaknya izin Android perlu diatur dengan tangan setelah membuat proyek flutter baru. Secara default versi rilis tidak memiliki izin -> tidak ada akses ke internet. Oleh karena itu pemutar youtube tidak dapat mengakses file sumber dan memuat selamanya. Menambahkan yang berikut ke AndroidManifest.xml menyelesaikannya untuk saya:

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

Solusi ditemukan di: Aplikasi yang dirilis Flutter tidak berfungsi pada perangkat, saat diinstal

Ok setelah beberapa penyelidikan lebih lanjut saya menemukan alasan untuk masalah saya. Tampaknya izin Android perlu diatur dengan tangan setelah membuat proyek flutter baru. Secara default versi rilis tidak memiliki izin -> tidak ada akses ke internet. Oleh karena itu pemutar youtube tidak dapat mengakses file sumber dan memuat selamanya. Menambahkan yang berikut ke AndroidManifest.xml menyelesaikannya untuk saya:

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

Solusi ditemukan di: Aplikasi yang dirilis Flutter tidak berfungsi pada perangkat, saat diinstal

Ini tidak bekerja untuk saya.

Masih memiliki masalah yang sama.

Tidak berfungsi pada perangkat iOS atau simulator untuk saya juga. Menggunakan 6.1.0+7

Catatan lain jika Anda mencoba dan Layar Penuh selama pemuatan tak terbatas ini, Anda mendapatkan kesalahan ID Video Tidak Valid = Kode Kesalahan: 1

Saya memiliki masalah yang sama.
contohnya berfungsi dengan baik tetapi menggunakan plugin di dalam proyek saya yang ada menghasilkan pemuatan tak terbatas.

Dalam kasus saya, masalah ini disebabkan oleh webview_flutter: ^0.3.20+2

Menghapus ketergantungan ini dari pubspec saya memecahkan masalah

Saya menemukan masalah saya, id video sebenarnya menunggu untuk diterbitkan. Setel ke pemutaran perdana dalam x hari. Pemutar youtube asli mengatakan ini jika Anda mencoba memutar video yang akan tayang perdana. Mungkin ini harus menjadi fitur tambahan

Masalah yang sama di iPad 3 dengan iOS 9.3.5, dan tidak satu pun di atas yang membantu saya

Harus diperbaiki dengan v7.0.0.

Harus diperbaiki dengan v7.0.0.

Saya menggunakan 7.0.0+3 tetapi pemuatan tak terbatas sebelum memulai video masih menjadi masalah di emulator Android saya

Saya mengalami masalah pemuatan tak terbatas yang sama, ada pembaruan tentang masalah ini?

Masalah yang sama untuk saya juga pada emulator Android Pixel 2 XL. Video dimuat jika saya menurunkan versi ke v6.1.1.

minSdkVersi 21

Saya tidak menyertakan webview_flutter.

Inisialisasi cukup sederhana:

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

Masalah yang sama untuk saya juga di Android Pixel 3. Video terus dimuat, berfungsi dengan baik di iOS.

apakah ini masalah hanya dengan Emulator ?? adakah yang mencoba di Perangkat Android asli?

Pembaruan apa pun akan membantu.

Terima kasih.

Mengalami masalah yang sama.
Video diputar dengan baik tetapi loader terus berputar di kiri bawah layar video.

Apakah ada yang menemukan solusi untuk masalah ini?

Apakah ada yang menemukan solusi untuk masalah ini?

Turunkan ke paket 6.1.1

Terima kasih @JigarKotak7 untuk membalas, saya menurunkannya ke paket v6.1.1 tetapi masih tidak berjalan di emulator. Jadi saya mencoba ide @Gunlek ke Define your controller in initState() dan berhasil, ini kode saya:

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 Senang itu berhasil untuk Anda.
tautan di bawah ini memiliki sedikit pratinjau aplikasi yang saya buat untuk salah satu klien saya, di mana saya telah menggunakan pemutar YouTube. Jadi jika Anda memiliki pertanyaan, beri tahu saya.
https://www.youtube.com/watch?v=O3dy9p4ybes

@Hardikkr Senang itu berhasil untuk Anda.
tautan di bawah ini memiliki sedikit pratinjau aplikasi yang saya buat untuk salah satu klien saya, di mana saya telah menggunakan pemutar YouTube. Jadi jika Anda memiliki pertanyaan, beri tahu saya.
https://www.youtube.com/watch?v=O3dy9p4ybes

saya juga mengalami beberapa masalah dalam memutar video itu memuat tanpa batas dan saya tidak tahu mengapa

juga masalah yang sama

Saya mengalami masalah pemuatan tak terbatas yang sama, Ini berfungsi di emulator tetapi perangkat nyata tidak berfungsi

hai @santhoshisrimanthula
jika itu bermanfaat bagi Anda. Saya bisa merasakan frustrasi Anda lol.

jadi. versi terbaru berfungsi di beberapa ponsel dan tidak berfungsi di ponsel lain.
Saya pikir itu ada hubungannya dengan versi android

Saya memecahkan masalah ini dengan menurunkan versi ke versi youtube_player_flutter: ^6.1.1

image

Saya memiliki izin internet hanya untuk manifes debug. Setelah menambahkan izin internet ke manifes utama, itu berhasil untuk saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat