From 8a481fc3484565f09a7bcca911474a6d414933e4 Mon Sep 17 00:00:00 2001 From: Doikki Date: Sat, 11 Jun 2022 21:14:01 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20ExoPlayer=20=E8=87=B3?= =?UTF-8?q?=202.17.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- constants.gradle | 8 ++++---- .../doikki/videoplayer/exo/ExoMediaPlayer.java | 18 ++++++++++-------- .../videoplayer/exo/ExoMediaSourceHelper.java | 14 +++++++------- dkplayer-sample/src/main/AndroidManifest.xml | 4 +++- gradle/wrapper/gradle-wrapper.properties | 6 +++--- 6 files changed, 29 insertions(+), 25 deletions(-) diff --git a/build.gradle b/build.gradle index 6aea7293..cca41d89 100644 --- a/build.gradle +++ b/build.gradle @@ -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" diff --git a/constants.gradle b/constants.gradle index 9ccc30d8..2676bc92 100644 --- a/constants.gradle +++ b/constants.gradle @@ -3,11 +3,11 @@ project.ext { releaseVersionCode = 53 minSdkVersion = 16 - targetSdkVersion = 30 - compileSdkVersion = 30 - buildToolsVersion = '28.0.3' + targetSdkVersion = 31 + compileSdkVersion = 31 + buildToolsVersion = '33.0.0' - exoPlayerVersion = '2.14.2' + exoPlayerVersion = '2.17.1' annotation = 'androidx.annotation:annotation:1.1.0' } \ No newline at end of file diff --git a/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaPlayer.java b/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaPlayer.java index f40a6881..2d2c4c53 100644 --- a/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaPlayer.java +++ b/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaPlayer.java @@ -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; @@ -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; @@ -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(); @@ -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(); } diff --git a/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java b/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java index 0de1b282..5b171eb2 100644 --- a/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java +++ b/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java @@ -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; @@ -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; @@ -67,7 +67,7 @@ public MediaSource getMediaSource(String uri, boolean isCache) { public MediaSource getMediaSource(String uri, Map 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)); @@ -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)); } /** @@ -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()); } /** diff --git a/dkplayer-sample/src/main/AndroidManifest.xml b/dkplayer-sample/src/main/AndroidManifest.xml index d968b6a8..fd0e791e 100644 --- a/dkplayer-sample/src/main/AndroidManifest.xml +++ b/dkplayer-sample/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ - + @@ -49,6 +50,7 @@ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bb7bdcaa..6e4fd9af 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -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 From d6bfd5479324b5419b7d7d2b26201cf7638112a2 Mon Sep 17 00:00:00 2001 From: Doikki Date: Fri, 1 Jul 2022 18:37:37 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dseek=E5=90=8E=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=8D=A1=E4=BD=8FUI=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doikki/videocontroller/component/VodControlView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java b/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java index d772ee92..9dff1201 100644 --- a/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java +++ b/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java @@ -17,6 +17,7 @@ import android.widget.SeekBar; import android.widget.TextView; +import androidx.annotation.BoolRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -162,8 +163,12 @@ public void onPlayStateChanged(int playState) { mPlayButton.setSelected(false); break; case VideoView.STATE_BUFFERING: + mPlayButton.setSelected(mControlWrapper.isPlaying()); + break; case VideoView.STATE_BUFFERED: mPlayButton.setSelected(mControlWrapper.isPlaying()); + //开始刷新进度 + mControlWrapper.startProgress(); break; } } @@ -265,7 +270,6 @@ public void onStopTrackingTouch(SeekBar seekBar) { long newPosition = (duration * seekBar.getProgress()) / mVideoProgress.getMax(); mControlWrapper.seekTo((int) newPosition); mIsDragging = false; - mControlWrapper.startProgress(); mControlWrapper.startFadeOut(); } From 04a841408a37490c06f39368a314fa3f580516ca Mon Sep 17 00:00:00 2001 From: Doikki Date: Fri, 1 Jul 2022 18:44:00 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E8=BF=9B=E5=BA=A6=E6=97=B6=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyz/doikki/videocontroller/component/VodControlView.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java b/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java index 9dff1201..8f1eb07d 100644 --- a/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java +++ b/dkplayer-ui/src/main/java/xyz/doikki/videocontroller/component/VodControlView.java @@ -164,6 +164,8 @@ public void onPlayStateChanged(int playState) { break; case VideoView.STATE_BUFFERING: mPlayButton.setSelected(mControlWrapper.isPlaying()); + // 停止刷新进度 + mControlWrapper.stopProgress(); break; case VideoView.STATE_BUFFERED: mPlayButton.setSelected(mControlWrapper.isPlaying()); From cb4d292016da3f263731072c50624309086db3cb Mon Sep 17 00:00:00 2001 From: Doikki Date: Fri, 1 Jul 2022 23:09:13 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20ExoPlayer=20=E8=87=B3?= =?UTF-8?q?=202.18.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- constants.gradle | 2 +- .../doikki/videoplayer/exo/ExoMediaSourceHelper.java | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/constants.gradle b/constants.gradle index 2676bc92..1ef8053e 100644 --- a/constants.gradle +++ b/constants.gradle @@ -7,7 +7,7 @@ project.ext { compileSdkVersion = 31 buildToolsVersion = '33.0.0' - exoPlayerVersion = '2.17.1' + exoPlayerVersion = '2.18.0' annotation = 'androidx.annotation:annotation:1.1.0' } \ No newline at end of file diff --git a/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java b/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java index 5b171eb2..b93bdd34 100644 --- a/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java +++ b/dkplayer-players/exo/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java @@ -83,12 +83,12 @@ public MediaSource getMediaSource(String uri, Map 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)); } } @@ -96,11 +96,11 @@ public MediaSource getMediaSource(String uri, Map headers, boole 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; } } From 51a2c51d70bfe5a00c96c770250b01123526aa73 Mon Sep 17 00:00:00 2001 From: Doikki Date: Sat, 2 Jul 2022 00:20:26 +0800 Subject: [PATCH 5/6] release v3.3.6 --- README.md | 2 +- build.gradle | 4 ++-- constants.gradle | 4 ++-- dkplayer-sample/build.gradle | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a67a6dae..2e2ef51e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ 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) -### [Demo](https://d.7short.com/qwtj) +### [Demo](https://www.pgyer.com/EGTZ) ### [特性](https://github.com/Doikki/DKVideoPlayer/wiki#%E7%89%B9%E6%80%A7) diff --git a/build.gradle b/build.gradle index cca41d89..fd1e27ca 100644 --- a/build.gradle +++ b/build.gradle @@ -21,8 +21,8 @@ allprojects { repositories { google() jcenter() - mavenCentral() -// mavenLocal() +// mavenCentral() + mavenLocal() } } diff --git a/constants.gradle b/constants.gradle index 1ef8053e..04bc8e6a 100644 --- a/constants.gradle +++ b/constants.gradle @@ -1,6 +1,6 @@ project.ext { - releaseVersion = '3.3.5' - releaseVersionCode = 53 + releaseVersion = '3.3.6' + releaseVersionCode = 54 minSdkVersion = 16 targetSdkVersion = 31 diff --git a/dkplayer-sample/build.gradle b/dkplayer-sample/build.gradle index 32af1f84..4da16dfb 100644 --- a/dkplayer-sample/build.gradle +++ b/dkplayer-sample/build.gradle @@ -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' } From 2c683acccb0b2443067f92ca4d73a1735a25c500 Mon Sep 17 00:00:00 2001 From: Doikki Date: Sat, 2 Jul 2022 00:27:19 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E6=BA=90=E6=8D=A2?= =?UTF-8?q?=E6=88=90=20mavenCentral?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index fd1e27ca..cca41d89 100644 --- a/build.gradle +++ b/build.gradle @@ -21,8 +21,8 @@ allprojects { repositories { google() jcenter() -// mavenCentral() - mavenLocal() + mavenCentral() +// mavenLocal() } }