用的是官方提供的最新demo
我在播放过程中进行播放器内核切换.
代码是这样修改的
我修改了VideoActivity的 onOptionsItemSelected中的点击监听. 在点击的时候切换播放器
代码是这样
if (id == R.id.action_toggle_player) {
if (mSettings.getPlayer() == 1 || mSettings.getPlayer() == 0) {
mSettings.setPlayer(2);
} else if (mSettings.getPlayer() == 2) {
mSettings.setPlayer(3);
} else if (mSettings.getPlayer() == 3) {
mSettings.setPlayer(1);
}
int player = mVideoView.togglePlayer();
String playerText = IjkVideoView.getPlayerText(this, player);
mToastTextView.setText(playerText);
mMediaController.showOnce(mToastTextView);
return true;
}
如果是exo 源生播放器 互相切换 或者切到ijkPlayer 都是没任何问题的
但是一旦从ijkplayer播放器 切换到 源生播放器和exo播放器
就无法正常使用了.
ijkplayer -> exoPlayer exo播放器会报出这个异常 com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.AVC.Decoder, MediaFormat(1, video/avc, -1, 73633, 1280, 720, 0, 1.0, -1, -1, null, 247470000, false, -1, -1, -1, -1)
ijkplayer -->源生播放器的话 到是不会报异常 但是会出现无法正常播放的情况