From efd2e0803a81597e20c5c1528eb840d73bae338a Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 24 Nov 2022 09:34:04 +0800 Subject: [PATCH] Update IjkVideoView.java --- .../ijk/media/player/ui/IjkVideoView.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java index e06aee75c..f3d29a468 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java @@ -50,6 +50,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl private float mCurrentSpeed = 1; private int mCurrentAspectRatio; private int mCurrentRender; + private int mStartPosition; private int mCurrentState = STATE_IDLE; private int mTargetState = STATE_IDLE; @@ -266,9 +267,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl if (mOnInfoListener != null) { mOnInfoListener.onInfo(mp, what, extra); } - if (what == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED) { - mVideoRotationDegree = extra; - if (mRenderView != null) mRenderView.setVideoRotation(extra); + switch (what) { + case IMediaPlayer.MEDIA_INFO_AUDIO_DECODED_START: + if (mStartPosition > 0) seekTo(mStartPosition); + mStartPosition = 0; + break; + case IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED: + mVideoRotationDegree = extra; + if (mRenderView != null) mRenderView.setVideoRotation(extra); + break; } return true; } @@ -420,14 +427,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } @Override - public void seekTo(int msec) { + public void seekTo(int positionMs) { if (!isInPlaybackState()) return; mInfoListener.onInfo(mIjkPlayer, IMediaPlayer.MEDIA_INFO_BUFFERING_START, 0); - mIjkPlayer.seekTo(msec); + mIjkPlayer.seekTo(positionMs); } - public void seekTo(long msec) { - seekTo((int) msec); + public void seekTo(long positionMs) { + mStartPosition = (int) positionMs; + seekTo(mStartPosition); } public void setSpeed(float speed) {