完美解决flutter video_player的bug

Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error

Video player had error com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, null, -1, null, [1280, 720, 29.973475], [-1, -1]), format_supported=YES

video_player 频繁init 和dispose就会报这个错,我看到好多老外也有遇到这个bug,当然也可以用其他视频库比如better_player,基本上这个报错的原因就是初始化的问题,关键代码在于这几句

@override
void initState() {
super.initState();
_controller = VideoPlayerController.network(url);
_controller.initialize().onError((error, stackTrace) {
isInitControl = _controller.value.isInitialized;
print(
"init error:{_controller.value.isInitialized}+");
});
}

Future init() async {
// _controller = VideoPlayerController.network(url);
//
// await _controller.initialize().timeout(Duration(seconds: 3),onTimeout: onTimeout).onError((error, stackTrace){
// isInitControl=_controller.value.isInitialized;
// print("init error:{_controller.value.isInitialized}+");
// });
await _controller.play().onError((error, stackTrace) {
print("play error:{url}+");
});
return true;
}

这是布局的代码,
FutureBuilder(
future: init(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.data == true) {
isInitControl = _controller.value.isInitialized;

            return AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              child: Stack(
                alignment: Alignment.bottomCenter,
                children: [
                  VideoPlayer(
                    _controller,
                    key: UniqueKey(),
                  ),
                  ClosedCaption(text: _controller.value.caption.text),
                  _ControlsOverlay(controller: _controller),
                  VideoProgressIndicator(_controller, allowScrubbing: true),
                ],
              ),
            );
          } else {
            return const Text('视频加载中');
          }
        },
      ),

没有用你给我一个大比斗

你可能感兴趣的:(完美解决flutter video_player的bug)