更换直播间视频渲染层以修复部分机型和模拟器滑动视频时白屏问题

This commit is contained in:
2023-01-07 09:54:37 +08:00
parent 8c0a23d39a
commit 80993c7d2d
5 changed files with 33 additions and 25 deletions

View File

@@ -6,12 +6,12 @@ import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.SurfaceView;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.analytics.AnalyticsListener;
import com.google.android.exoplayer2.ui.StyledPlayerView;
import com.google.android.exoplayer2.video.VideoSize;
/**
@@ -23,7 +23,7 @@ public class LiveExoPlayerManager {
private final int MODEL_PLAY2 = 1;//当前子播放器
private Context mContext;
private ExoPlayer player1, player2;
private SurfaceView mainView;//渲染视图
private StyledPlayerView mainView;//渲染视图
private int status = MODEL_PLAY1;
private Player.Listener listener;
private boolean isSwitchUrl = false;//是否为主动切换播放器
@@ -42,11 +42,12 @@ public class LiveExoPlayerManager {
setAnalyticsListener();
}
public void setListener(Player.Listener listener) {
this.listener = listener;
}
public void setMainView(SurfaceView mainView) {
public void setMainView(StyledPlayerView mainView) {
this.mainView = mainView;
}
@@ -119,7 +120,8 @@ public class LiveExoPlayerManager {
Player.Listener.super.onIsPlayingChanged(isPlaying);
if (isPlaying) {
Log.i(TAG, "onIsPlayingChanged1: 播放了");
player1.setVideoSurfaceView(mainView);
//player1.setVideoSurfaceView(mainView);
mainView.setPlayer(player1);
status = MODEL_PLAY1;
isSwitchUrl = false;
if (listener != null) {
@@ -169,7 +171,8 @@ public class LiveExoPlayerManager {
Player.Listener.super.onIsPlayingChanged(isPlaying);
if (isPlaying) {
Log.i(TAG, "onIsPlayingChanged2: 播放了");
player2.setVideoSurfaceView(mainView);
//player2.setVideoSurfaceView(mainView);
mainView.setPlayer(player2);
status = MODEL_PLAY2;
isSwitchUrl = false;
if (listener != null) {
@@ -202,7 +205,8 @@ public class LiveExoPlayerManager {
public void startUrl(String url) {
isSwitchUrl = true;
playBufferIndex = 0;
getNowPlayer().setVideoSurfaceView(mainView);
//getNowPlayer().setVideoSurfaceView(mainView);
mainView.setPlayer(getNowPlayer());
getNowPlayer().setMediaItem(createMediaItem(url));
getNowPlayer().prepare();
getNowPlayer().play();