Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Doikki authored Jul 1, 2022
2 parents b6a9cbc + 2c683ac commit 335347d
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 42 deletions.
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@ A video player for Android.
![Maven Central](https://img.shields.io/maven-central/v/xyz.doikki.android.dkplayer/dkplayer-java)
[![API](https://img.shields.io/badge/API-16%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=16)



### 中文 | [English](https://github.com/Doikki/DKVideoPlayer/blob/master/README-en.md)

### [Demo](https://d.7short.com/qwtj)
### [Demo](https://www.pgyer.com/EGTZ)

### [特性](https://github.com/Doikki/DKVideoPlayer/wiki#%E7%89%B9%E6%80%A7)

Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.4.32'
ext.kotlin_version = '1.6.21'
repositories {
google()
mavenCentral()
// mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath 'com.android.tools.build:gradle:7.1.2'
// maven publish tool
classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.4.30'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
Expand Down
12 changes: 6 additions & 6 deletions constants.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
project.ext {
releaseVersion = '3.3.5'
releaseVersionCode = 53
releaseVersion = '3.3.6'
releaseVersionCode = 54

minSdkVersion = 16
targetSdkVersion = 30
compileSdkVersion = 30
buildToolsVersion = '28.0.3'
targetSdkVersion = 31
compileSdkVersion = 31
buildToolsVersion = '33.0.0'

exoPlayerVersion = '2.14.2'
exoPlayerVersion = '2.18.0'

annotation = 'androidx.annotation:annotation:1.1.0'
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@

import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.LoadControl;
import com.google.android.exoplayer2.PlaybackException;
import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.RenderersFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.analytics.AnalyticsCollector;
import com.google.android.exoplayer2.analytics.DefaultAnalyticsCollector;
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
Expand All @@ -33,7 +33,7 @@
public class ExoMediaPlayer extends AbstractPlayer implements Player.Listener {

protected Context mAppContext;
protected SimpleExoPlayer mInternalPlayer;
protected ExoPlayer mInternalPlayer;
protected MediaSource mMediaSource;
protected ExoMediaSourceHelper mMediaSourceHelper;

Expand All @@ -52,14 +52,14 @@ public ExoMediaPlayer(Context context) {

@Override
public void initPlayer() {
mInternalPlayer = new SimpleExoPlayer.Builder(
mInternalPlayer = new ExoPlayer.Builder(
mAppContext,
mRenderersFactory == null ? mRenderersFactory = new DefaultRenderersFactory(mAppContext) : mRenderersFactory,
mTrackSelector == null ? mTrackSelector = new DefaultTrackSelector(mAppContext) : mTrackSelector,
new DefaultMediaSourceFactory(mAppContext),
mTrackSelector == null ? mTrackSelector = new DefaultTrackSelector(mAppContext) : mTrackSelector,
mLoadControl == null ? mLoadControl = new DefaultLoadControl() : mLoadControl,
DefaultBandwidthMeter.getSingletonInstance(mAppContext),
new AnalyticsCollector(Clock.DEFAULT))
new DefaultAnalyticsCollector(Clock.DEFAULT))
.build();
setOptions();

Expand Down Expand Up @@ -268,11 +268,13 @@ public void onPlaybackStateChanged(int playbackState) {
case Player.STATE_ENDED:
mPlayerEventListener.onCompletion();
break;
case Player.STATE_IDLE:
break;
}
}

@Override
public void onPlayerError(ExoPlaybackException error) {
public void onPlayerError(PlaybackException error) {
if (mPlayerEventListener != null) {
mPlayerEventListener.onError();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.database.ExoDatabaseProvider;
import com.google.android.exoplayer2.ext.rtmp.RtmpDataSourceFactory;
import com.google.android.exoplayer2.database.StandaloneDatabaseProvider;
import com.google.android.exoplayer2.ext.rtmp.RtmpDataSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.source.rtsp.RtspMediaSource;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.DefaultDataSource;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.upstream.cache.Cache;
Expand All @@ -29,7 +29,7 @@

public final class ExoMediaSourceHelper {

private static ExoMediaSourceHelper sInstance;
private static volatile ExoMediaSourceHelper sInstance;

private final String mUserAgent;
private final Context mAppContext;
Expand Down Expand Up @@ -67,7 +67,7 @@ public MediaSource getMediaSource(String uri, boolean isCache) {
public MediaSource getMediaSource(String uri, Map<String, String> headers, boolean isCache) {
Uri contentUri = Uri.parse(uri);
if ("rtmp".equals(contentUri.getScheme())) {
return new ProgressiveMediaSource.Factory(new RtmpDataSourceFactory(null))
return new ProgressiveMediaSource.Factory(new RtmpDataSource.Factory())
.createMediaSource(MediaItem.fromUri(contentUri));
} else if ("rtsp".equals(contentUri.getScheme())) {
return new RtspMediaSource.Factory().createMediaSource(MediaItem.fromUri(contentUri));
Expand All @@ -83,24 +83,24 @@ public MediaSource getMediaSource(String uri, Map<String, String> headers, boole
setHeaders(headers);
}
switch (contentType) {
case C.TYPE_DASH:
case C.CONTENT_TYPE_DASH:
return new DashMediaSource.Factory(factory).createMediaSource(MediaItem.fromUri(contentUri));
case C.TYPE_HLS:
case C.CONTENT_TYPE_HLS:
return new HlsMediaSource.Factory(factory).createMediaSource(MediaItem.fromUri(contentUri));
default:
case C.TYPE_OTHER:
case C.CONTENT_TYPE_OTHER:
return new ProgressiveMediaSource.Factory(factory).createMediaSource(MediaItem.fromUri(contentUri));
}
}

private int inferContentType(String fileName) {
fileName = fileName.toLowerCase();
if (fileName.contains(".mpd")) {
return C.TYPE_DASH;
return C.CONTENT_TYPE_DASH;
} else if (fileName.contains(".m3u8")) {
return C.TYPE_HLS;
return C.CONTENT_TYPE_HLS;
} else {
return C.TYPE_OTHER;
return C.CONTENT_TYPE_OTHER;
}
}

Expand All @@ -118,7 +118,7 @@ private Cache newCache() {
return new SimpleCache(
new File(mAppContext.getExternalCacheDir(), "exo-video-cache"),//缓存目录
new LeastRecentlyUsedCacheEvictor(512 * 1024 * 1024),//缓存大小,默认512M,使用LRU算法实现
new ExoDatabaseProvider(mAppContext));
new StandaloneDatabaseProvider(mAppContext));
}

/**
Expand All @@ -127,7 +127,7 @@ private Cache newCache() {
* @return A new DataSource factory.
*/
private DataSource.Factory getDataSourceFactory() {
return new DefaultDataSourceFactory(mAppContext, getHttpDataSourceFactory());
return new DefaultDataSource.Factory(mAppContext, getHttpDataSourceFactory());
}

/**
Expand Down
10 changes: 5 additions & 5 deletions dkplayer-sample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ dependencies {
implementation project(':dkplayer-videocache')


// implementation 'xyz.doikki.android.dkplayer:dkplayer-java:3.3.5'
// implementation 'xyz.doikki.android.dkplayer:dkplayer-ui:3.3.5'
// implementation 'xyz.doikki.android.dkplayer:player-exo:3.3.5'
// implementation 'xyz.doikki.android.dkplayer:player-ijk:3.3.5'
// implementation 'xyz.doikki.android.dkplayer:videocache:3.3.5'
// implementation 'xyz.doikki.android.dkplayer:dkplayer-java:3.3.6'
// implementation 'xyz.doikki.android.dkplayer:dkplayer-ui:3.3.6'
// implementation 'xyz.doikki.android.dkplayer:player-exo:3.3.6'
// implementation 'xyz.doikki.android.dkplayer:player-ijk:3.3.6'
// implementation 'xyz.doikki.android.dkplayer:videocache:3.3.6'
}
4 changes: 3 additions & 1 deletion dkplayer-sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
android:name=".app.MyApplication"
Expand Down Expand Up @@ -35,6 +35,7 @@
<activity
android:name=".activity.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand All @@ -49,6 +50,7 @@
<activity
android:name=".activity.api.PlayerActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden">
<intent-filter tools:ignore="AppLinkUrlError">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import android.widget.SeekBar;
import android.widget.TextView;

import androidx.annotation.BoolRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

Expand Down Expand Up @@ -162,8 +163,14 @@ public void onPlayStateChanged(int playState) {
mPlayButton.setSelected(false);
break;
case VideoView.STATE_BUFFERING:
mPlayButton.setSelected(mControlWrapper.isPlaying());
// 停止刷新进度
mControlWrapper.stopProgress();
break;
case VideoView.STATE_BUFFERED:
mPlayButton.setSelected(mControlWrapper.isPlaying());
//开始刷新进度
mControlWrapper.startProgress();
break;
}
}
Expand Down Expand Up @@ -265,7 +272,6 @@ public void onStopTrackingTouch(SeekBar seekBar) {
long newPosition = (duration * seekBar.getProgress()) / mVideoProgress.getMax();
mControlWrapper.seekTo((int) newPosition);
mIsDragging = false;
mControlWrapper.startProgress();
mControlWrapper.startFadeOut();
}

Expand Down
6 changes: 3 additions & 3 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Tue Apr 20 23:16:41 CST 2021
#Sat Jun 11 20:36:29 CST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
zipStoreBase=GRADLE_USER_HOME

0 comments on commit 335347d

Please sign in to comment.