Update IjkVideoView.java

pull/123/head
FongMi 3 years ago
parent 60a3162735
commit d15bbc76f7
  1. 39
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java

@ -38,12 +38,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private static final int STATE_PAUSED = 4;
private static final int STATE_PLAYBACK_COMPLETED = 5;
private static final int codec = IjkMediaPlayer.OPT_CATEGORY_CODEC;
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 int mCurrentAspectRatio;
private int mCurrentRender;
private int mCurrentState = STATE_IDLE;
private int mTargetState = STATE_IDLE;
@ -100,18 +103,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
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);
setPlayer();
}
private void setPlayer() {
mMediaPlayer = new IjkMediaPlayer();
mMediaPlayer.setOnPreparedListener(mPreparedListener);
mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener);
mMediaPlayer.setOnCompletionListener(mCompletionListener);
mMediaPlayer.setOnErrorListener(mErrorListener);
mMediaPlayer.setOnInfoListener(mInfoListener);
mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
mMediaPlayer.setOnTimedTextListener(mOnTimedTextListener);
}
private void setRenderView(IRenderView renderView) {
@ -143,11 +134,9 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
case RENDER_TEXTURE_VIEW:
TextureRenderView texture = new TextureRenderView(getContext());
if (mMediaPlayer != null) texture.getSurfaceHolder().bindToMediaPlayer(mMediaPlayer);
mCurrentRender = render;
setRenderView(texture);
break;
case RENDER_SURFACE_VIEW:
mCurrentRender = render;
setRenderView(new SurfaceRenderView(getContext()));
break;
}
@ -165,9 +154,6 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
public void setVideoURI(Uri uri, Map<String, String> headers) {
mUri = uri;
mHeaders = headers;
mMediaPlayer.reset();
setRender(mCurrentRender);
setOption();
openVideo();
requestLayout();
invalidate();
@ -176,6 +162,8 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
public void stopPlayback() {
if (mMediaPlayer == null) return;
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
mCurrentState = STATE_IDLE;
mTargetState = STATE_IDLE;
AudioManager am = (AudioManager) mAppContext.getSystemService(Context.AUDIO_SERVICE);
@ -185,9 +173,11 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
@TargetApi(Build.VERSION_CODES.M)
private void openVideo() {
if (mUri == null || mSurfaceHolder == null) return;
release(false);
AudioManager am = (AudioManager) mAppContext.getSystemService(Context.AUDIO_SERVICE);
am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
try {
createPlayer();
mCurrentBufferPercentage = 0;
mMediaPlayer.setDataSource(mAppContext, mUri, mHeaders);
bindSurfaceHolder(mMediaPlayer, mSurfaceHolder);
@ -489,10 +479,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
return 0;
}
private void setOption() {
int codec = IjkMediaPlayer.OPT_CATEGORY_CODEC;
int format = IjkMediaPlayer.OPT_CATEGORY_FORMAT;
int player = IjkMediaPlayer.OPT_CATEGORY_PLAYER;
private void createPlayer() {
mMediaPlayer = new IjkMediaPlayer();
mMediaPlayer.setOnPreparedListener(mPreparedListener);
mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener);
mMediaPlayer.setOnCompletionListener(mCompletionListener);
mMediaPlayer.setOnErrorListener(mErrorListener);
mMediaPlayer.setOnInfoListener(mInfoListener);
mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
mMediaPlayer.setOnTimedTextListener(mOnTimedTextListener);
mMediaPlayer.setOption(codec, "skip_loop_filter", 48);
mMediaPlayer.setOption(format, "dns_cache_timeout", 600000000);
mMediaPlayer.setOption(format, "fflags", "fastseek");

Loading…
Cancel
Save