Skip to content

Commit 3516a9c

Browse files
committed
新增获取播放速度的方法
1 parent cdaf128 commit 3516a9c

9 files changed

Lines changed: 63 additions & 4 deletions

File tree

dkplayer-java/src/main/java/com/dueeeke/videoplayer/controller/BaseVideoController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public void stopFadeOut() {
252252
/**
253253
* 隐藏播放视图Runnable
254254
*/
255-
public final Runnable mFadeOut = new Runnable() {
255+
protected final Runnable mFadeOut = new Runnable() {
256256
@Override
257257
public void run() {
258258
hide();
@@ -293,12 +293,12 @@ public void stopProgress() {
293293
/**
294294
* 刷新进度Runnable
295295
*/
296-
private Runnable mShowProgress = new Runnable() {
296+
protected Runnable mShowProgress = new Runnable() {
297297
@Override
298298
public void run() {
299299
int pos = setProgress();
300300
if (mControlWrapper.isPlaying()) {
301-
postDelayed(mShowProgress, 1000 - (pos % 1000));
301+
postDelayed(this, (long) ((1000 - pos % 1000) / mControlWrapper.getSpeed()));
302302
} else {
303303
mIsStartProgress = false;
304304
}
@@ -534,8 +534,9 @@ private void handleVisibilityChanged(boolean isVisible, Animation anim) {
534534

535535
/**
536536
* 子类重写此方法监听控制的显示和隐藏
537+
*
537538
* @param isVisible 是否可见
538-
* @param anim 显示/隐藏动画
539+
* @param anim 显示/隐藏动画
539540
*/
540541
protected void onVisibilityChanged(boolean isVisible, Animation anim) {
541542

dkplayer-java/src/main/java/com/dueeeke/videoplayer/controller/ControlWrapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ public void setSpeed(float speed) {
9090
mPlayerControl.setSpeed(speed);
9191
}
9292

93+
@Override
94+
public float getSpeed() {
95+
return mPlayerControl.getSpeed();
96+
}
97+
9398
@Override
9499
public long getTcpSpeed() {
95100
return mPlayerControl.getTcpSpeed();

dkplayer-java/src/main/java/com/dueeeke/videoplayer/controller/MediaPlayerControl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public interface MediaPlayerControl {
3232

3333
void setSpeed(float speed);
3434

35+
float getSpeed();
36+
3537
long getTcpSpeed();
3638

3739
void replay(boolean resetPosition);

dkplayer-java/src/main/java/com/dueeeke/videoplayer/player/AbstractPlayer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ public abstract class AbstractPlayer {
140140
*/
141141
public abstract void setSpeed(float speed);
142142

143+
/**
144+
* 获取播放速度
145+
*/
146+
public abstract float getSpeed();
147+
143148
/**
144149
* 获取当前缓冲的网速
145150
*/

dkplayer-java/src/main/java/com/dueeeke/videoplayer/player/AndroidMediaPlayer.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,19 @@ public void setSpeed(float speed) {
194194
}
195195
}
196196

197+
@Override
198+
public float getSpeed() {
199+
// only support above Android M
200+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
201+
try {
202+
return mMediaPlayer.getPlaybackParams().getSpeed();
203+
} catch (Exception e) {
204+
mPlayerEventListener.onError();
205+
}
206+
}
207+
return 1f;
208+
}
209+
197210
@Override
198211
public long getTcpSpeed() {
199212
// no support

dkplayer-java/src/main/java/com/dueeeke/videoplayer/player/VideoView.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,14 @@ public void setSpeed(float speed) {
601601
}
602602
}
603603

604+
@Override
605+
public float getSpeed() {
606+
if (isInPlaybackState()) {
607+
return mMediaPlayer.getSpeed();
608+
}
609+
return 1f;
610+
}
611+
604612
/**
605613
* 设置视频地址
606614
*/

dkplayer-players/exo/src/main/java/com/dueeeke/videoplayer/exo/ExoMediaPlayer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,14 @@ public void setSpeed(float speed) {
264264
}
265265
}
266266

267+
@Override
268+
public float getSpeed() {
269+
if (mSpeedPlaybackParameters != null) {
270+
return mSpeedPlaybackParameters.speed;
271+
}
272+
return 1f;
273+
}
274+
267275
@Override
268276
public long getTcpSpeed() {
269277
// no support

dkplayer-players/ijk/src/main/java/com/dueeeke/videoplayer/ijk/IjkPlayer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ public void setSpeed(float speed) {
202202
mMediaPlayer.setSpeed(speed);
203203
}
204204

205+
@Override
206+
public float getSpeed() {
207+
return mMediaPlayer.getSpeed(0);
208+
}
209+
205210
@Override
206211
public long getTcpSpeed() {
207212
return mMediaPlayer.getTcpSpeed();

dkplayer-players/thunder/src/main/java/com/dueeeke/videoplayer/thunder/ThunderMediaPlayer.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,18 @@ public void setSpeed(float speed) {
200200
mAPlayer.setConfig(APlayerAndroid.CONFIGID.PLAY_SPEED, String.valueOf(speed * 100));
201201
}
202202

203+
@Override
204+
public float getSpeed() {
205+
String strSpeed = mAPlayer.getConfig(APlayerAndroid.CONFIGID.PLAY_SPEED);
206+
float fSpeed;
207+
try {
208+
fSpeed = Float.parseFloat(strSpeed);
209+
} catch (NumberFormatException e) {
210+
fSpeed = 1f;
211+
}
212+
return fSpeed;
213+
}
214+
203215
@Override
204216
public long getTcpSpeed() {
205217
return Long.parseLong(mAPlayer.getConfig(APlayerAndroid.CONFIGID.DOWN_SPEED));

0 commit comments

Comments
 (0)