befovy / fijkplayer

ijkplayer for flutter. ijkplayer 的 flutter 封装。 Flutter video/audio player. Flutter media player plugin for android/iOS based on ijkplayer. fijkplayer 是基于 ijkplayer 封装的 flutter 媒体播放器,开箱即用,无需编译 ijkplayer
https://fijkplayer.befovy.com
MIT License
1.64k stars 350 forks source link

[BUG] 视频列表页自动播放视频有可能导致app崩溃闪退 #496

Open FiShelly opened 2 years ago

FiShelly commented 2 years ago

Describe the bug

一个视频列表页,列表内有N个视频列表,通过VisibilityDetector来实现视频在可视区域内播放。整个视频列表只有一个player,当处于可视区域内时,将会给对应的item设置这个player。 然后正常滚动浏览的时候,偶尔会卡顿,然后导致app崩溃。

To Reproduce

SmartRefresher(
                        controller: _refreshController,
                        enablePullUp: true,
                        footer: NfRefreshFooter(onTap: () {
                          _refreshController.requestLoading();
                        }),
                        onRefresh: () async {
                          await model.fetchList(true);
                          _refreshController.refreshCompleted();
                        },
                        onLoading: () async {
                          model.fetchList();
                        },
                        child: model.loadingType > 0
                            ? Loading(
                                type: model.loadingType,
                                onBtnTap: () {
                                  _refreshController.requestRefresh();
                                },
                              )
                            : ListView.builder(
                                itemCount: model.listData.length,
                                itemBuilder: (BuildContext context, index) {
                                  dynamic item = model.listData[index];

                                  List<Widget> postCard = [
                                     PostVideoItem(autoplay: true, meta: item)
                                  ];
                                  if (model.subjectData.isNotEmpty &&
                                      index % 3 == 0 &&
                                      index / 3 < model.subjectData.length) {
                                    postCard.add(OtherWidget);
                                  }

                                  return Column(children: postCard);
                                }))),
                  );

Expected behavior 运行正常。

fijkplayer version fijkplayer: ^0.10.1

Smartphone (please complete the following information):

Additional context 错误日志如下

E[/flutter]() (20982): [ERROR:flutter[/fml/platform/android/jni_util.cc]()(211)] java.lang.RuntimeException: Error during attachToGLContext (see logcat for details)
E[/flutter]() (20982):  at android.graphics.SurfaceTexture.attachToGLContext(SurfaceTexture.java:294)
E[/flutter]() (20982):  at io.flutter.embedding.engine.renderer.SurfaceTextureWrapper.attachToGLContext(SurfaceTextureWrapper.java:57)
E[/flutter]() (20982):
F[/flutter]() (20982): [FATAL:flutter[/shell/platform/android/platform_view_android_jni_impl.cc]()(1301)] Check failed: fml::jni::CheckException(env).
F[/libc]()    (20982): Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 21264 (1.raster), pid 20982
F[/flutter]() (20982): [FATAL:flutter[/shell/platform/android/platform_view_android_jni_impl.cc]()(1301)] Check failed: fml::jni::CheckException(env).
F[/libc]()    (20982): Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 21264 (1.raster), pid 20982 ()
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'HUAWEI[/LIO-AN00/HWLIO:10]()[/HUAWEILIO-AN00/11.0.0.180C00]():user[/release-keys]()'
Revision: '0'
ABI: 'arm64'
SYSVMTYPE: Maple
APPVMTYPE: Art
Timestamp: 2022-02-24 15:30:49+0800
pid: 20982, tid: 21264, name: 1.raster  >>>  <<<
uid: 10264
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: '[FATAL:flutter[/shell/platform/android/platform_view_android_jni_impl.cc]()(1301)] Check failed: fml::jni::CheckException(env).
'
    x0  0000000000000000  x1  0000000000005310  x2  0000000000000006  x3  0000007855241720
    x4  0000000000000000  x5  0000000000000000  x6  0000000000000000  x7  7f7f7f7f7f7f7f7f
    x8  00000000000000f0  x9  0a8bd802f8261992  x10 0000000000000001  x11 0000000000000000
    x12 fffffff0fffffbdf  x13 0000000000000004  x14 0000000000000004  x15 000013d4995ff301
    x16 000000794da679f8  x17 000000794da47700  x18 000000784898e000  x19 00000000000051f6
    x20 0000000000005310  x21 00000000ffffffff  x22 00000078b370ef98  x23 00000078130d7768
    x24 000000785dbb9140  x25 0000000000000000  x26 0000000000000001  x27 0000000000000001
    x28 000000000000006e  x29 00000078552417c0
    sp  0000007855241700  lr  000000794d9fc580  pc  000000794d9fc5ac
backtrace:
      #00 pc 00000000000705ac  [/apex/com.android.runtime/lib64/bionic/libc.so]() (abort+160) (BuildId: 0f53a45090c371e49b6824269190f1fa)
      #01 pc 000000000151d73c  [/data/app/  -TeKimtHhxRfhsYmhiHPxeg]()==[/lib/arm64/libflutter.so]() (BuildId: 8a89f3c622e5b28e48b4b8ebd66fb3d81014ddf7)
      #02 pc 000000000153f7dc  [/data/app/  -TeKimtHhxRfhsYmhiHPxeg]()==[/lib/arm64/libflutter.so]() (BuildId: 8a89f3c622e5b28e48b4b8ebd66fb3d81014ddf7)
      #03 pc 000000000000007d  <unknown>
Lost connection to device.
xzj524 commented 2 years ago

请问这个问题解决了吗?我也遇到同样的问题了