flutter - flutter 的 video_playeur 包问题

你好,我尝试了 video_playeur 包,但是当我多次重播一个视频时发生崩溃......这是报告:

I/ExoPlayerImpl(20516): Init c98f76 [ExoPlayerLib/2.9.6] [herolte, SM-G930F, samsung, 26]
V/Surface (20516): sf_framedrop debug : 0x4f4c, game : false, logging : 0
I/ACodec  (20516):  [] Now uninitialized
I/ACodec  (20516): [] onAllocateComponent
I/OMXClient(20516): Treble IOmx obtained
I/ACodec  (20516): [OMX.Exynos.avc.dec] Now Loaded
V/Surface (20516): sf_framedrop debug : 0x4f4c, game : false, logging : 0
D/SurfaceUtils(20516): connecting to surface 0x756360d010, reason connectToSurface
I/MediaCodec(20516): [OMX.Exynos.avc.dec] setting surface generation to 21008428
D/SurfaceUtils(20516): disconnecting from surface 0x756360d010, reason connectToSurface(reconnect)
D/SurfaceUtils(20516): connecting to surface 0x756360d010, reason connectToSurface(reconnect)
I/MediaCodec(20516): failed to configure codec bacause of codec capacity
E/MediaCodec(20516): Codec reported err 0xffffec77, actionCode 0, while in state 3
D/SurfaceUtils(20516): disconnecting from surface 0x756360d010, reason disconnectFromSurface
E/MediaCodec(20516): configure failed with err 0xffffec77, resetting...
I/ACodec  (20516):  [OMX.Exynos.avc.dec] Now uninitialized
I/ACodec  (20516):  [] Now kWhatShutdownCompleted event : 8483
I/MediaCodec(20516): Codec shutdown complete
I/ACodec  (20516):  [] Now uninitialized
I/ACodec  (20516): [] onAllocateComponent
I/OMXClient(20516): Treble IOmx obtained
I/ACodec  (20516): [OMX.Exynos.avc.dec] Now Loaded
I/ACodec  (20516):  [OMX.Exynos.avc.dec] Now uninitialized
I/ACodec  (20516):  [] Now kWhatShutdownCompleted event : 8483
I/MediaCodec(20516): Codec shutdown complete
W/MediaCodecRenderer(20516): Failed to initialize decoder: OMX.Exynos.avc.dec
W/MediaCodecRenderer(20516): android.media.MediaCodec$CodecException: Error 0xffffec77
W/MediaCodecRenderer(20516):    at android.media.MediaCodec.native_configure(Native Method)
W/MediaCodecRenderer(20516):    at android.media.MediaCodec.configure(MediaCodec.java:1935)
W/MediaCodecRenderer(20516):    at android.media.MediaCodec.configure(MediaCodec.java:1864)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:483)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:805)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:745)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:474)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:529)
W/MediaCodecRenderer(20516):    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:300)
W/MediaCodecRenderer(20516):    at android.os.Handler.dispatchMessage(Handler.java:101)
W/MediaCodecRenderer(20516):    at android.os.Looper.loop(Looper.java:164)
W/MediaCodecRenderer(20516):    at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal(20516): Playback error.
E/ExoPlayerImplInternal(20516): com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(1, null, null, video/avc, null, -1, null, [1440, 1080, -1.0], [-1, -1])
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:479)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1261)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1111)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:552)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:647)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:529)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:300)
E/ExoPlayerImplInternal(20516):     at android.os.Handler.dispatchMessage(Handler.java:101)
E/ExoPlayerImplInternal(20516):     at android.os.Looper.loop(Looper.java:164)
E/ExoPlayerImplInternal(20516):     at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal(20516): Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(1, null, null, video/avc, null, -1, null, [1440, 1080, -1.0], [-1, -1])
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:753)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:474)
E/ExoPlayerImplInternal(20516):     ... 9 more
E/ExoPlayerImplInternal(20516): Caused by: android.media.MediaCodec$CodecException: Error 0xffffec77
E/ExoPlayerImplInternal(20516):     at android.media.MediaCodec.native_configure(Native Method)
E/ExoPlayerImplInternal(20516):     at android.media.MediaCodec.configure(MediaCodec.java:1935)
E/ExoPlayerImplInternal(20516):     at android.media.MediaCodec.configure(MediaCodec.java:1864)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:483)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:805)
E/ExoPlayerImplInternal(20516):     at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodecWithFallback(MediaCodecRenderer.java:745)
E/ExoPlayerImplInternal(20516):     ... 10 more

我的功能

   Future<String> create_video() async {

SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('daysfromnow_modify',daysfromnow_modify)??"";


final Directory extDir = await getApplicationDocumentsDirectory();
_controller = VideoPlayerController.network(

    'file:${extDir.path}/Movies/$daysfromnow_modify.mp4'

)

..initialize().then((_) {
  setState(() {


      if( _controller!=null){
        _changed(true, "video_chargement"); //display video
      }else{
        _changed(false, "video_chargement"); // hide video
      }

    });

});

} 一切都很好,但在重播 5 次或 8 次或 10 次后,随机出现崩溃

我使用的例子只是添加了_controller.initialize();没有它重播视频,我无法重播完成的视频。但是当 controller.initialize();多次调用我崩溃了...

最佳答案

这里的问题是同一个 VideoPlayerController 在没有被释放的情况下被重新初始化多次。如果要再次使用同一个 Controller ,可以再次使用该 Controller ,如前所述GitHub issue thread .

https://stackoverflow.com/questions/57305428/

相关文章:

visual-studio - Visual Studio 多个启动项目 - 仅重启一个项目

javascript - 在 Angular 2+ 上重新渲染 FullCalendar

reactjs - 无法在ubuntu上的reactotron中订阅react-redux状态

asp.net-core-2.0 - 如何在 .net 核心 web api 中将 Razor Vi

python-3.x - 一个进程请求访问一个对象,但没有被授予这些访问权限在 windows 10

firebase - oobCodes 在 Firebase 中的生命周期

apache-spark - 合并多个 Rocksdb 数据库

spring-boot - Spring Boot - Rest Controller 响应两个 J

asp.net-mvc - 具有 ASP.NET MVC 属性路由的 Controller 级参数

python - IPython 笔记本 : using quotes (') and dollar