视频播放器在颤动时初始化问题

问题描述 投票:0回答:1

视频网址来自api。我尝试使用视频播放器,但没有播放..在initState()上初始化时,它可以工作。但是我需要在Build方法上进行初始化。.

  return FutureBuilder(
                      future: initializingPlayer(snapshot.data[index].content),
                      builder: (BuildContext context,AsyncSnapshot<VideoPlayerController> snapshot){
                        if (snapshot.connectionState == ConnectionState.done) {
                          return InkWell(
                            onTap: () {
                              setState(() {
                                snapshot.data.value.isPlaying
                                    ? snapshot.data.pause()
                                    : snapshot.data.play();
                              });
                            },
                            child: snapshot.data.value.initialized
                                ? AspectRatio(
                              aspectRatio: snapshot.data
                                  .value.aspectRatio,
                              child: VideoPlayer(snapshot.data),
                            )
                                : Container(),
                          );
                        }else{
                          return Center(child: CircularProgressIndicator());
                        }
                      }
                  );

initializingPlayer方法

  Future<VideoPlayerController> initializingPlayer(String content) async {
    return VideoPlayerController.network(
        content
    )..initialize();
  }

控制台错误

E / ExoPlayerImplInternal(3609):播放错误。E / ExoPlayerImplInternal(3609):com.google.android.exoplayer2.ExoPlaybackException:com.google.android.exoplayer2.audio.AudioSink $ InitializationException:AudioTrack初始化失败:0,Config(48000,12,48000)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:646)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1355)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:529)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:300)E / ExoPlayerImplInternal(3609):在android.os.Handler.dispatchMessage(Handler.java:104)E / ExoPlayerImplInternal(3609):在android.os.Looper.loop(Looper.java:166)E / ExoPlayerImplInternal(3609):位于android.os.HandlerThread.run(HandlerThread.java:65)E / ExoPlayerImplInternal(3609):原因:com.google.android.exoplayer2.audio.AudioSink $ InitializationException:AudioTrack初始化失败:0,Config(48000,12,48000)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:1128)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.DefaultAudioSink.initialize(DefaultAudioSink.java:532)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:593)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:640)E / ExoPlayerImplInternal(3609):...还有7个W / ACodec(3609):强制当在ExecutingState中收到关机时,OMX状态为空闲D / SurfaceUtils(3609):与表面0x7485feb010断开连接,原因connectedFromSurface W / ACodec(3609):将OMX状态强制为空闲在ExecutingState E / AudioTrack(3609)中收到关机信息时:AudioFlinger无法创建曲目,状态:-12 E / AudioTrack-JNI(3609):错误-12初始化AudioTrack E / android.media.AudioTrack(3609):初始化AudioTrack时错误代码-20。E / ExoPlayerImplInternal(3609):播放错误。E / ExoPlayerImplInternal(3609):com.google.android.exoplayer2.ExoPlaybackException:com.google.android.exoplayer2.audio.AudioSink $ InitializationException:AudioTrack初始化失败:0,Config(48000,12,48000)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:646)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1355)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:529)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:300)E / ExoPlayerImplInternal(3609):在android.os.Handler.dispatchMessage(Handler.java:104)E / ExoPlayerImplInternal(3609):在android.os.Looper.loop(Looper.java:166)E / ExoPlayerImplInternal(3609):位于android.os.HandlerThread.run(HandlerThread.java:65)E / ExoPlayerImplInternal(3609):原因:com.google.android.exoplayer2.audio.AudioSink $ InitializationException:AudioTrack初始化失败:0,Config(48000,12,48000)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:1128)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.DefaultAudioSink.initialize(DefaultAudioSink.java:532)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:593)E / ExoPlayerImplInternal(3609):在com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:640)E / ExoPlayerImplInternal(3609):...还有7个W / ACodec(3609):强制当在ExecutingState中收到关机时,OMX状态为空闲D / SurfaceUtils(3609):与表面0x7485fe8010断开连接,原因connectedFromSurface W / ACodec(3609):将OMX状态强制为空闲当在ExecutingState中收到关机信息时

flutter dart
1个回答
0
投票

您找到解决方案了吗?我正面临着同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.