Skip to content

Commit 792168e

Browse files
author
catvod
committed
升级播放器内核所需修改,顺带解决播放进度保存问题
1 parent cf403b8 commit 792168e

18 files changed

+83
-168
lines changed

app/build.gradle

+2-4
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,13 @@ dependencies {
8585
implementation 'org.greenrobot:eventbus:3.2.0'
8686
implementation 'com.orhanobut:hawk:2.0.1'
8787

88+
implementation project(":player")
89+
8890
implementation('org.xwalk:xwalk_shared_library:23.53.589.4') {
8991
exclude group: 'com.android.support'
9092
}
9193
implementation 'com.lzy.net:okgo:3.0.4'
9294
// implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
93-
implementation 'com.github.dueeeke.dkplayer:dkplayer-java:3.2.6'
94-
implementation 'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.6'
95-
implementation 'com.github.dueeeke.dkplayer:player-exo:3.2.6'
96-
implementation 'com.github.dueeeke.dkplayer:player-ijk:3.2.6'
9795
implementation 'com.owen:tv-recyclerview:3.0.0'
9896

9997
implementation 'com.github.getActivity:XXPermissions:13.6'

app/src/main/java/com/github/tvbox/osc/player/IjkMediaPlayer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import android.content.Context;
44
import android.text.TextUtils;
55

6-
import com.dueeeke.videoplayer.ijk.IjkPlayer;
6+
import xyz.doikki.videoplayer.ijk.IjkPlayer;
77
import com.github.tvbox.osc.api.ApiConfig;
88
import com.github.tvbox.osc.bean.IJKCode;
99

app/src/main/java/com/github/tvbox/osc/player/controller/BoxVideoController.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
import androidx.annotation.NonNull;
1313
import androidx.annotation.Nullable;
1414

15-
import com.dueeeke.videoplayer.controller.GestureVideoController;
16-
import com.dueeeke.videoplayer.controller.IControlComponent;
17-
import com.dueeeke.videoplayer.player.VideoView;
18-
import com.dueeeke.videoplayer.player.VideoViewManager;
15+
import xyz.doikki.videoplayer.controller.GestureVideoController;
16+
import xyz.doikki.videoplayer.controller.IControlComponent;
17+
import xyz.doikki.videoplayer.player.VideoView;
18+
import xyz.doikki.videoplayer.player.VideoViewManager;
1919
import com.github.tvbox.osc.R;
2020

2121
import java.util.Map;

app/src/main/java/com/github/tvbox/osc/player/controller/BoxVodControlView.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
import androidx.annotation.NonNull;
2222
import androidx.annotation.Nullable;
2323

24-
import com.dueeeke.videoplayer.controller.ControlWrapper;
25-
import com.dueeeke.videoplayer.controller.IControlComponent;
26-
import com.dueeeke.videoplayer.player.VideoView;
24+
import xyz.doikki.videoplayer.controller.ControlWrapper;
25+
import xyz.doikki.videoplayer.controller.IControlComponent;
26+
import xyz.doikki.videoplayer.player.VideoView;
2727
import com.github.tvbox.osc.R;
2828

29-
import static com.dueeeke.videoplayer.util.PlayerUtils.stringForTime;
29+
import static xyz.doikki.videoplayer.util.PlayerUtils.stringForTime;
3030

3131
/**
3232
* 点播底部控制栏

app/src/main/java/com/github/tvbox/osc/player/render/SurfaceRenderView.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010

1111
import androidx.annotation.NonNull;
1212

13-
import com.dueeeke.videoplayer.player.AbstractPlayer;
14-
import com.dueeeke.videoplayer.render.IRenderView;
15-
import com.dueeeke.videoplayer.render.MeasureHelper;
13+
import xyz.doikki.videoplayer.player.AbstractPlayer;
14+
import xyz.doikki.videoplayer.render.IRenderView;
15+
import xyz.doikki.videoplayer.render.MeasureHelper;
1616

1717
public class SurfaceRenderView extends SurfaceView implements IRenderView, SurfaceHolder.Callback {
1818
private MeasureHelper mMeasureHelper;

app/src/main/java/com/github/tvbox/osc/player/render/SurfaceRenderViewFactory.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import android.content.Context;
44

5-
import com.dueeeke.videoplayer.render.IRenderView;
6-
import com.dueeeke.videoplayer.render.RenderViewFactory;
5+
import xyz.doikki.videoplayer.render.IRenderView;
6+
import xyz.doikki.videoplayer.render.RenderViewFactory;
77

88
public class SurfaceRenderViewFactory extends RenderViewFactory {
99

app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import androidx.recyclerview.widget.RecyclerView;
1717

1818
import com.chad.library.adapter.base.BaseQuickAdapter;
19-
import com.dueeeke.videocontroller.component.GestureView;
20-
import com.dueeeke.videoplayer.player.VideoView;
19+
import xyz.doikki.videocontroller.component.GestureView;
20+
import xyz.doikki.videoplayer.player.VideoView;
2121
import com.github.tvbox.osc.R;
2222
import com.github.tvbox.osc.api.ApiConfig;
2323
import com.github.tvbox.osc.base.BaseActivity;

app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java

+24-3
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,20 @@
88
import androidx.lifecycle.Observer;
99
import androidx.lifecycle.ViewModelProvider;
1010

11-
import com.dueeeke.videocontroller.component.GestureView;
12-
import com.dueeeke.videoplayer.player.VideoView;
11+
import xyz.doikki.videocontroller.component.GestureView;
12+
import xyz.doikki.videoplayer.player.ProgressManager;
13+
import xyz.doikki.videoplayer.player.VideoView;
14+
1315
import com.github.tvbox.osc.R;
1416
import com.github.tvbox.osc.base.BaseActivity;
1517
import com.github.tvbox.osc.bean.VodInfo;
18+
import com.github.tvbox.osc.cache.CacheManager;
1619
import com.github.tvbox.osc.event.RefreshEvent;
1720
import com.github.tvbox.osc.player.controller.BoxVideoController;
1821
import com.github.tvbox.osc.player.controller.BoxVodControlView;
1922
import com.github.tvbox.osc.ui.dialog.ParseDialog;
2023
import com.github.tvbox.osc.util.HawkConfig;
24+
import com.github.tvbox.osc.util.MD5;
2125
import com.github.tvbox.osc.util.PlayerHelper;
2226
import com.github.tvbox.osc.viewmodel.SourceViewModel;
2327
import com.orhanobut.hawk.Hawk;
@@ -101,6 +105,20 @@ public void playPre() {
101105
controller.setCanChangePosition(true);
102106
controller.setEnableInNormal(true);
103107
controller.setGestureEnabled(true);
108+
mVideoView.setProgressManager(new ProgressManager() {
109+
@Override
110+
public void saveProgress(String url, long progress) {
111+
CacheManager.save(MD5.string2MD5(url), progress);
112+
}
113+
114+
@Override
115+
public long getSavedProgress(String url) {
116+
if (CacheManager.getCache(MD5.string2MD5(url)) == null) {
117+
return 0;
118+
}
119+
return (long) CacheManager.getCache(MD5.string2MD5(url));
120+
}
121+
});
104122
mVideoView.setVideoController(controller);
105123
}
106124

@@ -111,6 +129,7 @@ private void initViewModel() {
111129
public void onChanged(JSONObject object) {
112130
showSuccess();
113131
if (object != null && object.optString("key", "").equals(parseKey)) {
132+
String progressKey = object.optString("proKey", null);
114133
parseDialog.parse(sourceKey, object, new ParseDialog.ParseCallback() {
115134
@Override
116135
public void success(String playUrl, Map<String, String> headers) {
@@ -119,6 +138,7 @@ public void success(String playUrl, Map<String, String> headers) {
119138
public void run() {
120139
if (mVideoView != null) {
121140
mVideoView.release();
141+
mVideoView.setProgressKey(progressKey);
122142
if (headers != null) {
123143
mVideoView.setUrl(playUrl, headers);
124144
} else {
@@ -284,6 +304,7 @@ public void onBack() {
284304

285305
parseKey = vs.url;
286306
showLoading();
287-
sourceViewModel.getPlay(sourceKey, mVodInfo.playFlag, vs.url);
307+
String progressKey = mVodInfo.sourceKey + mVodInfo.playFlag + mVodInfo.playIndex;
308+
sourceViewModel.getPlay(sourceKey, mVodInfo.playFlag, progressKey, vs.url);
288309
}
289310
}

app/src/main/java/com/github/tvbox/osc/ui/activity/ProjectionPlayActivity.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
import android.os.Bundle;
55
import android.view.KeyEvent;
66
import android.widget.Toast;
7-
8-
import com.dueeeke.videocontroller.component.GestureView;
9-
import com.dueeeke.videoplayer.player.VideoView;
7+
import xyz.doikki.videocontroller.component.GestureView;
8+
import xyz.doikki.videoplayer.player.VideoView;
109
import com.github.tvbox.osc.R;
1110
import com.github.tvbox.osc.base.BaseActivity;
1211
import com.github.tvbox.osc.player.controller.BoxVideoController;

app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java

+24-29
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import androidx.annotation.NonNull;
1111

12+
import com.github.tvbox.osc.base.App;
1213
import com.github.tvbox.osc.util.SSL.SSLSocketFactoryCompat;
1314
import com.lzy.okgo.OkGo;
1415
import com.lzy.okgo.https.HttpsUtils;
@@ -39,6 +40,7 @@
3940
import okhttp3.Protocol;
4041
import okhttp3.Request;
4142
import okhttp3.Response;
43+
import xyz.doikki.videoplayer.exo.ExoMediaSourceHelper;
4244

4345
public class OkGoHelper {
4446
public static final long DEFAULT_MILLISECONDS = 10000; //默认的超时时间
@@ -111,40 +113,31 @@ public static OkHttpClient getFastParseClient(long timeOut) {
111113
return fastParseClient;
112114
}
113115

114-
private static OkHttpClient localSpiderClient = null;
115-
116-
public static OkHttpClient getLocalSpiderClient() {
117-
if (localSpiderClient == null) {
118-
OkHttpClient.Builder builder = new OkHttpClient.Builder();
119-
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo");
120-
121-
if (Hawk.get(HawkConfig.DEBUG_OPEN, false)) {
122-
loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
123-
loggingInterceptor.setColorLevel(Level.INFO);
124-
} else {
125-
loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.NONE);
126-
loggingInterceptor.setColorLevel(Level.OFF);
127-
}
128-
129-
builder.protocols(Collections.singletonList(Protocol.HTTP_1_1));
130-
131-
//builder.retryOnConnectionFailure(false);
116+
static void initExoOkHttpClient() {
117+
OkHttpClient.Builder builder = new OkHttpClient.Builder();
118+
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkExoPlayer");
132119

133-
builder.addInterceptor(loggingInterceptor);
120+
if (Hawk.get(HawkConfig.DEBUG_OPEN, false)) {
121+
loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
122+
loggingInterceptor.setColorLevel(Level.INFO);
123+
} else {
124+
loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.NONE);
125+
loggingInterceptor.setColorLevel(Level.OFF);
126+
}
127+
builder.addInterceptor(loggingInterceptor);
134128

135-
builder.readTimeout(10000, TimeUnit.MILLISECONDS);
136-
builder.writeTimeout(10000, TimeUnit.MILLISECONDS);
137-
builder.connectTimeout(10000, TimeUnit.MILLISECONDS);
129+
builder.retryOnConnectionFailure(true);
130+
builder.followRedirects(true);
131+
builder.followSslRedirects(true);
138132

139-
try {
140-
setOkHttpSsl(builder);
141-
} catch (Throwable th) {
142-
th.printStackTrace();
143-
}
144133

145-
localSpiderClient = builder.build();
134+
try {
135+
setOkHttpSsl(builder);
136+
} catch (Throwable th) {
137+
th.printStackTrace();
146138
}
147-
return localSpiderClient;
139+
140+
ExoMediaSourceHelper.getInstance(App.getInstance()).setOkClient(builder.build());
148141
}
149142

150143
public static void init() {
@@ -176,6 +169,8 @@ public static void init() {
176169

177170
OkHttpClient okHttpClient = builder.build();
178171
OkGo.getInstance().setOkHttpClient(okHttpClient);
172+
173+
initExoOkHttpClient();
179174
}
180175

181176
private static synchronized void setOkHttpSsl(OkHttpClient.Builder builder) {

app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import android.content.Context;
44

5-
import com.dueeeke.videoplayer.exo.ExoMediaPlayerFactory;
6-
import com.dueeeke.videoplayer.player.AndroidMediaPlayerFactory;
7-
import com.dueeeke.videoplayer.player.PlayerFactory;
8-
import com.dueeeke.videoplayer.player.VideoView;
9-
import com.dueeeke.videoplayer.player.VideoViewConfig;
10-
import com.dueeeke.videoplayer.player.VideoViewManager;
11-
import com.dueeeke.videoplayer.render.RenderViewFactory;
12-
import com.dueeeke.videoplayer.render.TextureRenderViewFactory;
5+
import xyz.doikki.videoplayer.exo.ExoMediaPlayerFactory;
6+
import xyz.doikki.videoplayer.player.AndroidMediaPlayerFactory;
7+
import xyz.doikki.videoplayer.player.PlayerFactory;
8+
import xyz.doikki.videoplayer.player.VideoView;
9+
import xyz.doikki.videoplayer.player.VideoViewConfig;
10+
import xyz.doikki.videoplayer.player.VideoViewManager;
11+
import xyz.doikki.videoplayer.render.RenderViewFactory;
12+
import xyz.doikki.videoplayer.render.TextureRenderViewFactory;
1313
import com.github.tvbox.osc.player.IjkMediaPlayer;
1414
import com.github.tvbox.osc.player.render.SurfaceRenderViewFactory;
1515
import com.orhanobut.hawk.Hawk;
@@ -108,7 +108,6 @@ public void loadLibrary(String s) throws UnsatisfiedLinkError, SecurityException
108108
.setScreenScaleType(VideoView.SCREEN_SCALE_DEFAULT)
109109
.setPlayerFactory(playerFactory)
110110
.setRenderViewFactory(renderViewFactory)
111-
.setProgressManager(new ProgressManagerImpl())
112111
.build());
113112
}
114113
}

app/src/main/java/com/github/tvbox/osc/util/ProgressManagerImpl.java

-24
This file was deleted.

app/src/main/java/com/github/tvbox/osc/viewmodel/SourceViewModel.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ public void onError(Response<String> response) {
309309
}
310310
}
311311

312-
public void getPlay(String sourceKey, String playFlag, String url) {
312+
public void getPlay(String sourceKey, String playFlag, String progressKey, String url) {
313313
SourceBean sourceBean = ApiConfig.get().getSource(sourceKey);
314314
int type = sourceBean.getType();
315315
if (type == 3) {
@@ -321,6 +321,7 @@ public void run() {
321321
try {
322322
JSONObject result = new JSONObject(json);
323323
result.put("key", url);
324+
result.put("proKey", progressKey);
324325
if (!result.has("flag"))
325326
result.put("flag", playFlag);
326327
playResult.postValue(result);

app/src/main/res/layout/activity_live_play.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
android:layout_width="match_parent"
55
android:layout_height="match_parent">
66

7-
<com.dueeeke.videoplayer.player.VideoView
7+
<xyz.doikki.videoplayer.player.VideoView
88
android:id="@+id/mVideoView"
99
android:layout_width="match_parent"
1010
android:layout_height="match_parent" />

app/src/main/res/layout/activity_play.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
android:layout_width="match_parent"
44
android:layout_height="match_parent">
55

6-
<com.dueeeke.videoplayer.player.VideoView
6+
<xyz.doikki.videoplayer.player.VideoView
77
android:id="@+id/mVideoView"
88
android:layout_width="match_parent"
99
android:layout_height="match_parent" />

app/src/main/res/layout/activity_projection_play.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
android:layout_width="match_parent"
55
android:layout_height="match_parent">
66

7-
<com.dueeeke.videoplayer.player.VideoView
7+
<xyz.doikki.videoplayer.player.VideoView
88
android:id="@+id/mVideoView"
99
android:layout_width="match_parent"
1010
android:layout_height="match_parent" />

0 commit comments

Comments
 (0)