From 4d5740eb67c17e0c94baa0befb6f7afa8a5445d2 Mon Sep 17 00:00:00 2001 From: llb0 <108737112+llb0@users.noreply.github.com> Date: Wed, 28 Sep 2022 09:35:34 +0800 Subject: [PATCH 1/4] Add files via upload --- .../xyz/doikki/videoplayer/player/VideoView.java | 16 ++++++++++++++++ .../videoplayer/player/VideoViewConfig.java | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java index 9f709c68..ef71eba0 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java +++ b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java @@ -732,6 +732,14 @@ public class VideoView

extends FrameLayout //将播放器视图添加到DecorView中即实现了全屏 decorView.addView(mPlayerContainer); + Activity activity = getActivity(); + int[] size = getVideoSize(); + int width = size[0]; + int height = size[1]; + if (width < height) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } + setPlayerState(PLAYER_FULL_SCREEN); } @@ -779,6 +787,14 @@ public class VideoView

extends FrameLayout decorView.removeView(mPlayerContainer); this.addView(mPlayerContainer); + Activity activity = getActivity(); + int[] size = getVideoSize(); + int width = size[0]; + int height = size[1]; + if (width < height) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } + setPlayerState(PLAYER_NORMAL); } diff --git a/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java b/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java index 1e805184..5f61ee9f 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java +++ b/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java @@ -60,7 +60,7 @@ public class VideoViewConfig { private boolean mIsEnableLog; private boolean mPlayOnMobileNetwork = true; - private boolean mEnableOrientation; + private boolean mEnableOrientation = true; private boolean mEnableAudioFocus = true; private ProgressManager mProgressManager; private PlayerFactory mPlayerFactory; From d8828285df5a90a1bbef49248c51580ed4178db2 Mon Sep 17 00:00:00 2001 From: llb0 <108737112+llb0@users.noreply.github.com> Date: Wed, 28 Sep 2022 09:37:08 +0800 Subject: [PATCH 2/4] Add files via upload --- .../main/java/com/github/tvbox/osc/util/DefaultConfig.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java index 4e4f1724..de8dbb73 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java @@ -105,10 +105,7 @@ public class DefaultConfig { return start > -1 ? fileName.substring(0, start) : fileName; } - //增加对flv|avi|mkv|rm|wmv|mpg等几种视频格式的支持 - //private static final Pattern snifferMatch = Pattern.compile("http((?!http).){26,}?\\.(m3u8|mp4)\\?.*|http((?!http).){26,}\\.(m3u8|mp4)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); -// private static final Pattern snifferMatch = Pattern.compile("http((?!http).)*?default\\.365yg\\.com/.*|http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); - private static final Pattern snifferMatch = Pattern.compile("http((?!http).)*?default\\.365yg\\.com/.*|http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?/video/tos[^\\?]*|http((?!http).)*?dycdn-tos\\.pstatp[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); + private static final Pattern snifferMatch = Pattern.compile("http((?!http).)*?default\\.365yg\\.com/.*|http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|rmvb|wmv|mpg|mpeg|mpe|mp3|m4a|wma)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|rmvb|wmv|mpg|mpeg|mpe|mp3|m4a|wma)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?/video/tos[^\\?]*|http((?!http).)*?dycdn-tos\\.pstatp[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*|http((?!http).)*?douyin\\.com/.*/play/\\?.*|http((?!http).)*?huoshan\\.com/.*/\\?item.*"); public static boolean isVideoFormat(String url) { if (url.contains("=http") || url.contains(".html")) { return false; From 4c2ab5a5dbb1fff07d396626d621095dd664a89d Mon Sep 17 00:00:00 2001 From: llb0 <108737112+llb0@users.noreply.github.com> Date: Wed, 28 Sep 2022 09:38:25 +0800 Subject: [PATCH 3/4] Add files via upload --- .../controller/BaseVideoController.java | 45 ++++++++++++------- .../controller/ControlWrapper.java | 12 ++--- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java b/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java index b3970c4a..c54dcb37 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java +++ b/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java @@ -396,7 +396,7 @@ public abstract class BaseVideoController extends FrameLayout * 横竖屏切换 */ protected void toggleFullScreen() { - mControlWrapper.toggleFullScreen(mActivity); + mControlWrapper.toggleFullScreenByVideoSize(mActivity); } /** @@ -508,32 +508,47 @@ public abstract class BaseVideoController extends FrameLayout if (mIsLocked) return; //没有开启设备方向监听的情况 if (!mEnableOrientation) return; - - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - mControlWrapper.stopFullScreen(); + int[] size = mControlWrapper.getVideoSize(); + int width = size[0]; + int height = size[1]; + int o = activity.getRequestedOrientation(); + if (width < height && o != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + mControlWrapper.replay(true); + } } /** * 横屏 */ protected void onOrientationLandscape(Activity activity) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - if (mControlWrapper.isFullScreen()) { - handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); - } else { - mControlWrapper.startFullScreen(); - } + int[] size = mControlWrapper.getVideoSize(); + int width = size[0]; + int height = size[1]; + if (width > height) { + if (mControlWrapper.isFullScreen()) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); + } else { + mControlWrapper.startFullScreen(); + } + } } /** * 反向横屏 */ protected void onOrientationReverseLandscape(Activity activity) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); - if (mControlWrapper.isFullScreen()) { - handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); - } else { - mControlWrapper.startFullScreen(); + int[] size = mControlWrapper.getVideoSize(); + int width = size[0]; + int height = size[1]; + if (width > height) { + if (mControlWrapper.isFullScreen()) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); + } else { + mControlWrapper.startFullScreen(); + } } } diff --git a/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java b/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java index e2b88c30..5ab724d3 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java +++ b/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java @@ -186,16 +186,10 @@ public class ControlWrapper implements MediaPlayerControl, IVideoController { int[] size = getVideoSize(); int width = size[0]; int height = size[1]; - if (isFullScreen()) { - stopFullScreen(); - if (width > height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } + if (width < height) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else { - startFullScreen(); - if (width > height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - } + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } From 8f6e2bcea643ef8a399046bfa0c8174aefd30331 Mon Sep 17 00:00:00 2001 From: llb0 <108737112+llb0@users.noreply.github.com> Date: Wed, 28 Sep 2022 09:56:29 +0800 Subject: [PATCH 4/4] Add files via upload --- .../src/main/java/xyz/doikki/videoplayer/player/VideoView.java | 1 + 1 file changed, 1 insertion(+) diff --git a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java index ef71eba0..640f6e73 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java +++ b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java @@ -5,6 +5,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.content.res.TypedArray; +import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri;