From eb9d7ce1d459239f7b334c6fdfe409a61007ad27 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 27 Oct 2020 03:24:32 +0100 Subject: [PATCH] [video_player] Upgrade ExoPlayer (#3204) * ExoPlayer * Format * update gradle --- .../video_player/video_player/CHANGELOG.md | 4 +++ .../video_player/android/build.gradle | 10 +++---- .../plugins/videoplayer/VideoPlayer.java | 27 +++++++++---------- .../videoplayer/VideoPlayerPlugin.java | 3 +-- .../example/android/app/build.gradle | 2 +- .../video_player/example/android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../video_player/video_player/pubspec.yaml | 2 +- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 01601c7cc44c..787393991f3a 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.1+3 + +* Android: Upgrade ExoPlayer to 2.12.1. + ## 0.11.1+2 * Update android compileSdkVersion to 29. diff --git a/packages/video_player/video_player/android/build.gradle b/packages/video_player/video_player/android/build.gradle index 50636ae54591..08a240bfe3f7 100644 --- a/packages/video_player/video_player/android/build.gradle +++ b/packages/video_player/video_player/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:3.5.0' } } @@ -44,9 +44,9 @@ android { } dependencies { - implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' - implementation 'com.google.android.exoplayer:exoplayer-hls:2.9.6' - implementation 'com.google.android.exoplayer:exoplayer-dash:2.9.6' - implementation 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.9.6' + implementation 'com.google.android.exoplayer:exoplayer-core:2.12.1' + implementation 'com.google.android.exoplayer:exoplayer-hls:2.12.1' + implementation 'com.google.android.exoplayer:exoplayer-dash:2.12.1' + implementation 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.12.1' } } diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java index 8f8c898dea27..33c2f42afe1e 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java @@ -9,23 +9,20 @@ import android.view.Surface; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlaybackException; -import com.google.android.exoplayer2.ExoPlayerFactory; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.Player.EventListener; import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.audio.AudioAttributes; -import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; -import com.google.android.exoplayer2.source.ExtractorMediaSource; 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.dash.DefaultDashChunkSource; import com.google.android.exoplayer2.source.hls.HlsMediaSource; import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource; import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource; -import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; -import com.google.android.exoplayer2.trackselection.TrackSelector; import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.DefaultHttpDataSource; @@ -70,8 +67,7 @@ final class VideoPlayer { this.textureEntry = textureEntry; this.options = options; - TrackSelector trackSelector = new DefaultTrackSelector(); - exoPlayer = ExoPlayerFactory.newSimpleInstance(context, trackSelector); + exoPlayer = new SimpleExoPlayer.Builder(context).build(); Uri uri = Uri.parse(dataSource); @@ -89,7 +85,8 @@ final class VideoPlayer { } MediaSource mediaSource = buildMediaSource(uri, dataSourceFactory, formatHint, context); - exoPlayer.prepare(mediaSource); + exoPlayer.setMediaSource(mediaSource); + exoPlayer.prepare(); setupVideoPlayer(eventChannel, textureEntry); } @@ -131,18 +128,18 @@ private MediaSource buildMediaSource( return new SsMediaSource.Factory( new DefaultSsChunkSource.Factory(mediaDataSourceFactory), new DefaultDataSourceFactory(context, null, mediaDataSourceFactory)) - .createMediaSource(uri); + .createMediaSource(MediaItem.fromUri(uri)); case C.TYPE_DASH: return new DashMediaSource.Factory( new DefaultDashChunkSource.Factory(mediaDataSourceFactory), new DefaultDataSourceFactory(context, null, mediaDataSourceFactory)) - .createMediaSource(uri); + .createMediaSource(MediaItem.fromUri(uri)); case C.TYPE_HLS: - return new HlsMediaSource.Factory(mediaDataSourceFactory).createMediaSource(uri); + return new HlsMediaSource.Factory(mediaDataSourceFactory) + .createMediaSource(MediaItem.fromUri(uri)); case C.TYPE_OTHER: - return new ExtractorMediaSource.Factory(mediaDataSourceFactory) - .setExtractorsFactory(new DefaultExtractorsFactory()) - .createMediaSource(uri); + return new ProgressiveMediaSource.Factory(mediaDataSourceFactory) + .createMediaSource(MediaItem.fromUri(uri)); default: { throw new IllegalStateException("Unsupported type: " + type); @@ -174,7 +171,7 @@ public void onCancel(Object o) { new EventListener() { @Override - public void onPlayerStateChanged(final boolean playWhenReady, final int playbackState) { + public void onPlaybackStateChanged(final int playbackState) { if (playbackState == Player.STATE_BUFFERING) { sendBufferingUpdate(); } else if (playbackState == Player.STATE_READY) { diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index 1beb79c4295d..4ea6a8372736 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -138,7 +138,6 @@ public TextureMessage create(CreateMessage arg) { "asset:///" + assetLookupKey, null, options); - videoPlayers.put(handle.id(), player); } else { player = new VideoPlayer( @@ -148,8 +147,8 @@ public TextureMessage create(CreateMessage arg) { arg.getUri(), arg.getFormatHint(), options); - videoPlayers.put(handle.id(), player); } + videoPlayers.put(handle.id(), player); TextureMessage result = new TextureMessage(); result.setTextureId(handle.id()); diff --git a/packages/video_player/video_player/example/android/app/build.gradle b/packages/video_player/video_player/example/android/app/build.gradle index 2ab52e1baea1..13fabc7554e9 100644 --- a/packages/video_player/video_player/example/android/app/build.gradle +++ b/packages/video_player/video_player/example/android/app/build.gradle @@ -34,7 +34,7 @@ android { defaultConfig { applicationId "io.flutter.plugins.videoplayerexample" minSdkVersion 16 - targetSdkVersion 28 + targetSdkVersion 29 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/packages/video_player/video_player/example/android/build.gradle b/packages/video_player/video_player/example/android/build.gradle index 112aa2a87c27..498448e78692 100644 --- a/packages/video_player/video_player/example/android/build.gradle +++ b/packages/video_player/video_player/example/android/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:3.5.0' } } diff --git a/packages/video_player/video_player/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/video_player/video_player/example/android/gradle/wrapper/gradle-wrapper.properties index 2819f022f1fd..296b146b7318 100644 --- a/packages/video_player/video_player/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/video_player/video_player/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index 96ced42cedcf..26686ccf937a 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for displaying inline video with other Flutter # 0.10.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.11.1+2 +version: 0.11.1+3 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: