Update IjkVideoView.java

pull/123/head
FongMi 3 years ago
parent 2b89353732
commit fc4dffe36d
  1. 38
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java

@ -10,7 +10,6 @@ import android.util.AttributeSet;
import android.util.Log;
import android.util.Size;
import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.MediaController;
import android.widget.TextView;
@ -43,13 +42,11 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private static final int format = IjkMediaPlayer.OPT_CATEGORY_FORMAT;
private static final int player = IjkMediaPlayer.OPT_CATEGORY_PLAYER;
public static final int RENDER_NONE = -1;
public static final int RENDER_SURFACE_VIEW = 0;
public static final int RENDER_TEXTURE_VIEW = 1;
private float mCurrentSpeed = 1;
private int mCurrentAspectRatio;
private int mCurrentRender;
private int mCurrentDecode;
private int mStartPosition;
@ -108,44 +105,34 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
subtitleDisplay = new TextView(context);
subtitleDisplay.setTextSize(24);
subtitleDisplay.setGravity(Gravity.CENTER);
FrameLayout.LayoutParams layoutParams_txt = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
addView(subtitleDisplay, layoutParams_txt);
addView(subtitleDisplay, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM));
}
private void setRenderView(IRenderView renderView) {
if (mRenderView != null) {
if (mIjkPlayer != null) mIjkPlayer.setDisplay(null);
View renderUIView = mRenderView.getView();
mRenderView.removeRenderCallback(mSHCallback);
mRenderView = null;
removeView(renderUIView);
}
if (renderView == null) return;
mRenderView = renderView;
setResizeMode(mCurrentAspectRatio);
if (mVideoWidth > 0 && mVideoHeight > 0) renderView.setVideoSize(mVideoWidth, mVideoHeight);
if (mVideoSarNum > 0 && mVideoSarDen > 0) renderView.setVideoSampleAspectRatio(mVideoSarNum, mVideoSarDen);
View renderUIView = mRenderView.getView();
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
renderUIView.setLayoutParams(lp);
addView(renderUIView);
addView(mRenderView.getView(), new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER));
mRenderView.addRenderCallback(mSHCallback);
mRenderView.setVideoRotation(mVideoRotationDegree);
}
private void clearRender() {
if (mRenderView != null) {
removeView(mRenderView.getView());
mRenderView.removeRenderCallback(mSHCallback);
mRenderView = null;
}
}
public void setRender(int render) {
clearRender();
switch (render) {
case RENDER_NONE:
setRenderView(null);
break;
case RENDER_TEXTURE_VIEW:
mCurrentRender = render;
TextureRenderView texture = new TextureRenderView(getContext());
if (mIjkPlayer != null) texture.getSurfaceHolder().bindToMediaPlayer(mIjkPlayer);
setRenderView(texture);
break;
case RENDER_SURFACE_VIEW:
mCurrentRender = render;
setRenderView(new SurfaceRenderView(getContext()));
break;
}
@ -169,8 +156,8 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
public void stopPlayback() {
if (mRenderView != null) mRenderView.getView().invalidate();
if (mIjkPlayer == null) return;
setRender(RENDER_NONE);
mIjkPlayer.stop();
mIjkPlayer.release();
mIjkPlayer = null;
@ -190,7 +177,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
createPlayer();
fixUserAgent();
setSpeed(mCurrentSpeed);
setRender(mCurrentRender);
mCurrentBufferPosition = 0;
mCurrentBufferPercentage = 0;
mIjkPlayer.setDataSource(mAppContext, mUri, mHeaders);

Loading…
Cancel
Save