Skip to content

Commit 667495f

Browse files
committed
2.0.5.1
1 parent 90e983b commit 667495f

File tree

16 files changed

+55
-60
lines changed

16 files changed

+55
-60
lines changed

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@
3737
//2.在你的模块build.gradle中添加:
3838
dependencies {
3939
//播放器
40-
implementation 'com.github.hty527.iPlayer:iplayer:2.0.5'
40+
implementation 'com.github.hty527.iPlayer:iplayer:2.0.5.1'
4141
4242
//ijk音视频解码器,根据需要使用
43-
//implementation 'com.github.hty527.iPlayer:ijk:2.0.5'
43+
//implementation 'com.github.hty527.iPlayer:ijk:2.0.5.1'
4444
//exo音视频解码器,根据需要使用
45-
//implementation 'com.github.hty527.iPlayer:exo:2.0.5'
45+
//implementation 'com.github.hty527.iPlayer:exo:2.0.5.1'
4646
//音视频预缓存+边播边存,根据需要使用
47-
//implementation 'com.github.hty527.iPlayer:cache:2.0.5'
47+
//implementation 'com.github.hty527.iPlayer:cache:2.0.5.1'
4848
}
4949
```
5050
##### 2、在需要播放视频的xml中添加如下代码,或在适合的位置new VideoPlayer()</br>

app/build.gradle

+4-4
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ dependencies {
8686
// implementation project(':cache')
8787

8888
//播放器SDK
89-
implementation 'com.github.hty527.iPlayer:iplayer:2.0.5'
89+
implementation 'com.github.hty527.iPlayer:iplayer:2.0.5.1'
9090
//音视频预缓存+边播边存,根据需要使用
91-
implementation 'com.github.hty527.iPlayer:cache:2.0.5'
91+
implementation 'com.github.hty527.iPlayer:cache:2.0.5.1'
9292
//ijk音视频解码器,根据自己需要实现
93-
implementation 'com.github.hty527.iPlayer:ijk:2.0.5'
93+
implementation 'com.github.hty527.iPlayer:ijk:2.0.5.1'
9494
//exo音视频解码器,根据自己需要实现
95-
implementation 'com.github.hty527.iPlayer:exo:2.0.5'
95+
implementation 'com.github.hty527.iPlayer:exo:2.0.5.1'
9696
}

app/src/main/java/com/android/videoplayer/pager/fragment/PagerPlayerFragment.java

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import androidx.recyclerview.widget.RecyclerView;
1010
import com.android.iplayer.base.AbstractMediaPlayer;
1111
import com.android.iplayer.listener.OnPlayerEventListener;
12+
import com.android.iplayer.media.IMediaPlayer;
1213
import com.android.iplayer.media.core.IJkMediaPlayer;
1314
import com.android.iplayer.model.PlayerState;
1415
import com.android.iplayer.utils.PlayerUtils;
@@ -157,6 +158,7 @@ private void initVideoPlayer() {
157158
controller.addControllerWidget(new ControlStatusView(getContext()));
158159
mVideoPlayer.setLoop(true);
159160
mVideoPlayer.setProgressCallBackSpaceMilliss(300);
161+
mVideoPlayer.setZoomModel(IMediaPlayer.MODE_ZOOM_CROPPING);
160162
//如果适用自定义解码器则必须实现setOnPlayerActionListener并返回一个多媒体解码器
161163
mVideoPlayer.setOnPlayerActionListener(new OnPlayerEventListener() {
162164
/**

app/src/main/java/com/android/videoplayer/render/CoustomSurfaceView.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
import android.view.SurfaceHolder;
99
import android.view.SurfaceView;
1010
import android.view.View;
11+
1112
import androidx.annotation.NonNull;
13+
1214
import com.android.iplayer.base.AbstractMediaPlayer;
13-
import com.android.iplayer.media.IMediaPlayer;
1415
import com.android.iplayer.interfaces.IRenderView;
15-
import com.android.iplayer.manager.IVideoManager;
16+
import com.android.iplayer.media.IMediaPlayer;
1617

1718
/**
1819
* created by hty
@@ -29,7 +30,7 @@ public class CoustomSurfaceView extends SurfaceView implements IRenderView, Surf
2930
private int mVideoSarDen;
3031
private int mMeasureWidth;
3132
private int mMeasureHeight;
32-
protected int mScaleMode = IVideoManager.getInstance().getZoomModel();//默认是缩放裁剪铺满全屏模式
33+
protected int mScaleMode = IMediaPlayer.MODE_NOZOOM_TO_FIT;//默认是原始大小
3334
private int mDegree;
3435
private boolean mMirror = false;
3536
private boolean mVerticalOrientation;

app/src/main/java/com/android/videoplayer/ui/activity/MainActivity.java

+5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.android.iplayer.controller.VideoController;
1515
import com.android.iplayer.listener.OnPlayerEventListener;
1616
import com.android.iplayer.manager.IWindowManager;
17+
import com.android.iplayer.media.IMediaPlayer;
1718
import com.android.iplayer.media.core.IJkMediaPlayer;
1819
import com.android.iplayer.model.PlayerState;
1920
import com.android.iplayer.utils.PlayerUtils;
@@ -181,6 +182,7 @@ public void onRequstPermissionResult(boolean success) {
181182
private void startGlobalWindowPlayer() {
182183
VideoPlayer videoPlayer = new VideoPlayer(MainActivity.this);
183184
videoPlayer.setLoop(false);
185+
videoPlayer.setZoomModel(IMediaPlayer.MODE_ZOOM_TO_FIT);
184186
videoPlayer.setProgressCallBackSpaceMilliss(300);
185187
videoPlayer.setDataSource(MP4_URL2);//播放地址设置
186188
VideoController controller = videoPlayer.initController();//初始化一个默认的控制器(内部适用默认的一套交互UI控制器组件)
@@ -225,6 +227,7 @@ public void onPlayerState(PlayerState state, String message) {
225227
}
226228
});
227229
mVideoPlayer.setLoop(false);
230+
mVideoPlayer.setZoomModel(IMediaPlayer.MODE_ZOOM_TO_FIT);
228231
mVideoPlayer.setProgressCallBackSpaceMilliss(300);
229232
mVideoPlayer.getController().setTitle("测试播放地址");//视频标题(默认视图控制器横屏可见)
230233
mVideoPlayer.setDataSource(MP4_URL2);//播放地址设置
@@ -281,6 +284,8 @@ public void onPlayerState(PlayerState state, String message) {
281284
Logger.d(TAG,"onPlayerState-->state:"+state+",message:"+message);
282285
}
283286
});
287+
videoPlayer.setLandscapeWindowTranslucent(true);//全屏沉浸样式
288+
videoPlayer.setZoomModel(IMediaPlayer.MODE_ZOOM_CROPPING);
284289
videoPlayer.setLoop(false);
285290
videoPlayer.setProgressCallBackSpaceMilliss(300);
286291
videoPlayer.getController().setTitle("测试播放地址");//视频标题(默认视图控制器横屏可见)

app/src/main/java/com/android/videoplayer/ui/activity/VideoPlayerActivity.java

-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ public void onRenderCore(int renderCore) {
237237
private void reStartPlay() {
238238
if(null!=mVideoPlayer){
239239
mVideoPlayer.onReset();
240-
mVideoPlayer.setLoop(false);
241240
mVideoPlayer.setProgressCallBackSpaceMilliss(300);
242241
mVideoPlayer.getController().setTitle("测试播放地址");//视频标题(默认视图控制器横屏可见)
243242
mVideoPlayer.setDataSource(mUrl);//播放地址设置 URL4惊奇队长

app/src/main/java/com/android/videoplayer/video/ui/activity/VideoDetailsActivity.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.widget.ImageView;
1313
import android.widget.TextView;
1414
import android.widget.Toast;
15+
1516
import androidx.annotation.Nullable;
1617
import androidx.appcompat.app.AppCompatActivity;
1718
import androidx.recyclerview.widget.GridLayoutManager;
@@ -21,10 +22,11 @@
2122
import com.android.iplayer.base.BasePlayer;
2223
import com.android.iplayer.controller.VideoController;
2324
import com.android.iplayer.interfaces.IControllerView;
24-
import com.android.iplayer.interfaces.IVideoController;
2525
import com.android.iplayer.interfaces.IRenderView;
26+
import com.android.iplayer.interfaces.IVideoController;
2627
import com.android.iplayer.listener.OnPlayerEventListener;
2728
import com.android.iplayer.manager.IWindowManager;
29+
import com.android.iplayer.media.IMediaPlayer;
2830
import com.android.iplayer.media.core.IJkMediaPlayer;
2931
import com.android.iplayer.model.PlayerState;
3032
import com.android.iplayer.widget.VideoPlayer;
@@ -53,6 +55,7 @@
5355
import com.android.videoplayer.video.ui.widget.PlayerMenuDialog;
5456
import com.google.gson.Gson;
5557
import com.google.gson.reflect.TypeToken;
58+
5659
import java.util.List;
5760

5861
/**
@@ -245,6 +248,7 @@ private void createPlayer(boolean addListController) {
245248
mVideoPlayer.setLoop(true);
246249
mVideoPlayer.setProgressCallBackSpaceMilliss(300);
247250
mVideoPlayer.setLandscapeWindowTranslucent(true);
251+
mVideoPlayer.setZoomModel(IMediaPlayer.MODE_ZOOM_CROPPING);
248252
//为播放器添加控制器
249253
VideoController controller=new VideoController(mVideoPlayer.getContext());
250254
mVideoPlayer.setController(controller);

app/src/main/java/com/android/videoplayer/video/ui/fragment/ListPlayerFragment.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
import com.android.iplayer.base.BaseController;
1717
import com.android.iplayer.controller.VideoController;
1818
import com.android.iplayer.interfaces.IControllerView;
19-
import com.android.iplayer.interfaces.IVideoController;
2019
import com.android.iplayer.interfaces.IRenderView;
20+
import com.android.iplayer.interfaces.IVideoController;
2121
import com.android.iplayer.listener.OnPlayerEventListener;
2222
import com.android.iplayer.manager.IWindowManager;
23+
import com.android.iplayer.media.IMediaPlayer;
2324
import com.android.iplayer.media.core.IJkMediaPlayer;
2425
import com.android.iplayer.model.PlayerState;
2526
import com.android.iplayer.utils.PlayerUtils;
@@ -442,6 +443,7 @@ public void onPlayerState(PlayerState state, String message) {
442443
});
443444
mVideoPlayer.setLoop(true);
444445
mVideoPlayer.setLandscapeWindowTranslucent(true);
446+
mVideoPlayer.setZoomModel(IMediaPlayer.MODE_ZOOM_CROPPING);
445447
mVideoPlayer.setProgressCallBackSpaceMilliss(300);
446448
}
447449
}

app/src/main/java/com/android/videoplayer/video/ui/widget/PlayerMenuView.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import android.util.AttributeSet;
55
import android.view.View;
66
import android.widget.LinearLayout;
7+
78
import androidx.annotation.Nullable;
8-
import com.android.videoplayer.video.listener.OnMenuActionListener;
9-
import com.android.iplayer.manager.IVideoManager;
9+
1010
import com.android.videoplayer.R;
11+
import com.android.videoplayer.video.listener.OnMenuActionListener;
12+
1113
import java.util.ArrayList;
1214
import java.util.List;
1315

@@ -74,9 +76,10 @@ public PlayerMenuView(Context context, @Nullable AttributeSet attrs, int defStyl
7476
View menu_degree_2 = findViewById(R.id.menu_degree_2);
7577
menu_degree_1.setOnClickListener(this);menu_degree_2.setOnClickListener(this);
7678
mMenuMirrors.add(menu_degree_1);mMenuMirrors.add(menu_degree_2);
77-
78-
onReset();
7979
selectedMuteIndex(1,false);//是否静音
80+
selectedZoomIndex(0);
81+
selectedMirrorsIndex(1);//是否镜像
82+
onReset();
8083
}
8184

8285
@Override
@@ -236,8 +239,6 @@ public void setOnMenuActionListener(OnMenuActionListener onMenuActionListener) {
236239
* 重置
237240
*/
238241
public void onReset(){
239-
selectedMirrorsIndex(1);//是否镜像
240-
selectedZoomIndex(IVideoManager.getInstance().getZoomModel());//缩放模式,取全局的初始设置
241242
selectedSpeedIndex(2);//播放倍速
242243
selectedScaleIndex(0);//画面显示比例
243244
}

config.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ext {
22
sdk=[
3-
versionCode : 20050,
4-
versionName : "2.0.5"
3+
versionCode : 20051,
4+
versionName : "2.0.5.1"
55
]
66
}

doc/apk/iPlayer-2.0.5.apk

0 Bytes
Binary file not shown.

doc/update/updateLog.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
历史版本
22

3-
### 2.0.5
3+
### 2.0.5.1
44
**更新日期:** 2022-9-5<br/>
55
**更新内容:**<br/>
6-
>1. 优化播放器initController属性<br/>
7-
>2. 部分interfaces类名修改<br/>
8-
>3. 修改默认缩放模式为原始大小<br/>
6+
>1. IJK解码提升首帧播放速度、新增硬件解码开关设置<br/>
7+
>2. 优化播放器initController属性<br/>
8+
>3. 部分interfaces类名修改<br/>
9+
>4. 缩放模式配置由全局更改为随播放器生命周期,默认缩放模式为原始大小<br/>
910
___
1011
### 2.0.4.1
1112
**更新日期:** 2022-9-3<br/>

iplayer/src/main/java/com/android/iplayer/base/BasePlayer.java

-2
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,6 @@ public void setZoomModel(int scaleModel) {
341341
if(null!=mIVideoPlayer){
342342
mIVideoPlayer.setZoomModel(scaleModel);
343343
if(null!=mController) mController.onZoomModel(scaleModel);
344-
}else{
345-
IVideoManager.getInstance().setZoomModel(scaleModel);
346344
}
347345
if(null!=mOnPlayerActionListener) mOnPlayerActionListener.onZoomModel(scaleModel);
348346
}

iplayer/src/main/java/com/android/iplayer/manager/IVideoManager.java

-17
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.android.iplayer.manager;
22

3-
import com.android.iplayer.media.IMediaPlayer;
4-
53
/**
64
* created by hty
75
* 2022/7/3
@@ -12,8 +10,6 @@ public final class IVideoManager {
1210
private volatile static IVideoManager mInstance;
1311
//是否支持在4G环境下播放
1412
private boolean mIsMobileNetwork;
15-
//默认缩放模式(原始大小填充模式,在视频宽高比例与手机宽高比例不一致时,播放可能留有黑边)
16-
private int mZoomModel = IMediaPlayer.MODE_ZOOM_TO_FIT;
1713
//是否监听并处理音频焦点事件?
1814
private boolean mInterceptTAudioFocus;//true:拦截,并在收到音频焦点失去后暂停播放 false:什么也不处理
1915

@@ -27,19 +23,6 @@ public static synchronized IVideoManager getInstance() {
2723
return mInstance;
2824
}
2925

30-
/**
31-
* 设置缩放模式
32-
* @param zoomModel 请适用IMediaPlayer类中定义的常量值
33-
*/
34-
public IVideoManager setZoomModel(int zoomModel) {
35-
mZoomModel = zoomModel;
36-
return mInstance;
37-
}
38-
39-
public int getZoomModel() {
40-
return mZoomModel;
41-
}
42-
4326
/**
4427
* 是否支持4G网络播放
4528
* @param mobileNetwork

iplayer/src/main/java/com/android/iplayer/media/IVideoPlayer.java

+12-12
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ public final class IVideoPlayer implements OnMediaEventListener , AudioFocus.OnA
3939
private AudioFocus mAudioFocusManager;//多媒体焦点监听,失去焦点暂停播放
4040
//内部播放器状态,初始为默认/重置状态
4141
private PlayerState sPlayerState = PlayerState.STATE_RESET;
42-
//是否循环播放/是否静音
43-
private boolean mLoop=false,mSoundMute=false;
42+
//是否循环播放/是否静音/是否镜像
43+
private boolean mLoop=false,mSoundMute=false,mMirrors=false;
44+
//裁剪缩放模式,默认为原始大小,定宽等高,可能高度会留有黑边
45+
private int mZoomMode=IMediaPlayer.MODE_ZOOM_TO_FIT;
4446
//远程资源地址
4547
private String mDataSource;
4648
private AssetFileDescriptor mAssetsSource;//Assetss资产目录下的文件地址
@@ -54,7 +56,7 @@ public final class IVideoPlayer implements OnMediaEventListener , AudioFocus.OnA
5456
private long mSeekDuration;
5557
//视频宽、高
5658
private int mVideoWidth,mVideoHeight;
57-
//播放超时\读取视频流超时时长
59+
//链接视频源超时时长\读取视频流超时时长
5860
private int mPrepareTimeout=10,mReadTimeout=15;
5961

6062
/**
@@ -136,7 +138,6 @@ private void initTextureView(Context context){
136138
if(null==context) return;
137139
mRenderView = newInstanceRenderView(context);
138140
ILogger.d(TAG,getString(R.string.player_render_name,"渲染器内核:")+mRenderView.getClass().getSimpleName());
139-
mRenderView.setZoomMode(IVideoManager.getInstance().getZoomModel());
140141
}
141142

142143
//释放解码器\移除画面组件
@@ -200,7 +201,8 @@ public void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_n
200201
this.mVideoHeight=height;
201202
if(null!= mRenderView){
202203
mRenderView.setVideoSize(width,height);
203-
mRenderView.setZoomMode(IVideoManager.getInstance().getZoomModel());
204+
mRenderView.setZoomMode(mZoomMode);
205+
mRenderView.setMirror(mMirrors);
204206
mRenderView.setSarSize(sar_num,sar_den);
205207
}
206208
if(null!= mBasePlayer) mBasePlayer.onVideoSizeChanged(width,height);
@@ -578,7 +580,7 @@ public boolean toggleMute() {
578580
* @param zoomModel 请适用IMediaPlayer类中定义的常量值
579581
*/
580582
public void setZoomModel(int zoomModel) {
581-
IVideoManager.getInstance().setZoomModel(zoomModel);
583+
this.mZoomMode=zoomModel;
582584
if(null!= mRenderView) mRenderView.setZoomMode(zoomModel);
583585
}
584586

@@ -604,6 +606,7 @@ public void setInterceptTAudioFocus(boolean interceptTAudioFocus){
604606
* @return true:镜像 false:正常
605607
*/
606608
public boolean setMirror(boolean mirror) {
609+
this.mMirrors=mirror;
607610
if(null!= mRenderView){
608611
return mRenderView.setMirror(mirror);
609612
}
@@ -615,10 +618,8 @@ public boolean setMirror(boolean mirror) {
615618
* @return true:镜像 false:正常
616619
*/
617620
public boolean toggleMirror() {
618-
if(null!= mRenderView){
619-
return mRenderView.toggleMirror();
620-
}
621-
return false;
621+
boolean isMirrors = ! mMirrors;
622+
return setMirror(isMirrors);
622623
}
623624

624625
/**
@@ -928,8 +929,7 @@ public void onDestroy() {
928929
mAudioFocusManager.onDestroy();
929930
mAudioFocusManager=null;
930931
}
931-
mLoop=false;mSoundMute=false;mVideoWidth=0;mVideoHeight=0;mPrepareTimeout=0;mReadTimeout=0;
932-
IVideoManager.getInstance().setZoomModel(IMediaPlayer.MODE_ZOOM_CROPPING);
932+
mLoop=false;mSoundMute=false;mMirrors=false;mVideoWidth=0;mVideoHeight=0;mPrepareTimeout=0;mReadTimeout=0;mZoomMode=0;
933933
mBasePlayer =null;mDataSource=null;mAssetsSource=null;
934934
mCallBackSpaceMilliss =DEFAULT_CALLBACK_TIME;
935935
}

iplayer/src/main/java/com/android/iplayer/widget/view/MediaTextureView.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
import android.view.TextureView;
99
import android.view.View;
1010
import com.android.iplayer.base.AbstractMediaPlayer;
11-
import com.android.iplayer.media.IMediaPlayer;
1211
import com.android.iplayer.interfaces.IRenderView;
13-
import com.android.iplayer.manager.IVideoManager;
12+
import com.android.iplayer.media.IMediaPlayer;
1413
/**
1514
* created by hty
1615
* 2022/6/28
@@ -27,7 +26,7 @@ public class MediaTextureView extends TextureView implements IRenderView, Textur
2726
private int mVideoSarDen;
2827
private int mMeasureWidth;
2928
private int mMeasureHeight;
30-
protected int mScaleMode = IVideoManager.getInstance().getZoomModel();//默认是缩放裁剪铺满全屏模式
29+
protected int mScaleMode = IMediaPlayer.MODE_NOZOOM_TO_FIT;//默认是原始大小
3130
private int mDegree;
3231
private boolean mMirror = false;
3332
private boolean mVerticalOrientation;

0 commit comments

Comments
 (0)