From 8a481fc3484565f09a7bcca911474a6d414933e4 Mon Sep 17 00:00:00 2001 From: Doikki Date: Sat, 11 Jun 2022 21:14:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20ExoPlayer=20=E8=87=B3=202.?= =?UTF-8?q?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