From 53a4dfb702b4b3d10128e34f3e14049cdf475edc Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 16 Jul 2023 11:42:55 -0400 Subject: [PATCH] Moves video player to the new Exoplayer package --- app/build.gradle | 6 +++-- .../com/vitorpamplona/amethyst/VideoCache.kt | 13 +++++----- .../amethyst/ui/components/VideoView.kt | 24 ++++++++++--------- build.gradle | 2 +- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 05081e507..bc2c07d76 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -139,9 +139,9 @@ dependencies { implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha06' // view videos - implementation "com.google.android.exoplayer:exoplayer:${exoplayer_version}" + implementation "androidx.media3:media3-exoplayer:${exoplayer_version}" // important for proxy / tor - implementation "com.google.android.exoplayer:extension-okhttp:${exoplayer_version}" + implementation "androidx.media3:media3-datasource-okhttp:${exoplayer_version}" // Load images from the web. implementation "io.coil-kt:coil-compose:$coil_version" @@ -175,6 +175,8 @@ dependencies { // Language picker and Theme chooser implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.media3:media3-exoplayer-hls:1.1.0' + implementation 'androidx.media3:media3-ui:1.1.0' // Local model for language identification playImplementation 'com.google.mlkit:language-id:17.0.4' diff --git a/app/src/main/java/com/vitorpamplona/amethyst/VideoCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/VideoCache.kt index 771aaa120..5186d43c0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/VideoCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/VideoCache.kt @@ -1,14 +1,15 @@ package com.vitorpamplona.amethyst import android.content.Context -import com.google.android.exoplayer2.database.StandaloneDatabaseProvider -import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource -import com.google.android.exoplayer2.upstream.cache.CacheDataSource -import com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor -import com.google.android.exoplayer2.upstream.cache.SimpleCache +import androidx.media3.common.util.UnstableApi +import androidx.media3.database.StandaloneDatabaseProvider +import androidx.media3.datasource.cache.CacheDataSource +import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor +import androidx.media3.datasource.cache.SimpleCache +import androidx.media3.datasource.okhttp.OkHttpDataSource import com.vitorpamplona.amethyst.service.HttpClient -object VideoCache { +@UnstableApi object VideoCache { var exoPlayerCacheSize: Long = 90 * 1024 * 1024 // 90MB diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt index 1cb447507..594306a3c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt @@ -49,16 +49,16 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import coil.imageLoader import coil.request.ImageRequest -import com.google.android.exoplayer2.C -import com.google.android.exoplayer2.ExoPlayer -import com.google.android.exoplayer2.MediaItem -import com.google.android.exoplayer2.Player -import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource -import com.google.android.exoplayer2.source.ProgressiveMediaSource -import com.google.android.exoplayer2.source.hls.HlsMediaSource -import com.google.android.exoplayer2.ui.AspectRatioFrameLayout -import com.google.android.exoplayer2.ui.StyledPlayerView -import com.google.android.exoplayer2.upstream.DataSource +import androidx.media3.common.C +import androidx.media3.common.MediaItem +import androidx.media3.common.Player +import androidx.media3.datasource.DataSource +import androidx.media3.datasource.okhttp.OkHttpDataSource +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.exoplayer.hls.HlsMediaSource +import androidx.media3.exoplayer.source.ProgressiveMediaSource +import androidx.media3.ui.AspectRatioFrameLayout +import androidx.media3.ui.PlayerView import com.vitorpamplona.amethyst.VideoCache import com.vitorpamplona.amethyst.service.HttpClient import com.vitorpamplona.amethyst.service.connectivitystatus.ConnectivityStatus @@ -175,6 +175,7 @@ fun VideoView( } @Composable +@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class) fun VideoView1( videoUri: String, description: String? = null, @@ -263,6 +264,7 @@ data class VideoThumb( ) @Composable +@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class) private fun RenderVideoPlayer( playerData: VideoPlayer, thumbData: VideoThumb?, @@ -290,7 +292,7 @@ private fun RenderVideoPlayer( } }, factory = { - StyledPlayerView(context).apply { + PlayerView(context).apply { player = playerData.exoPlayer layoutParams = FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, diff --git a/build.gradle b/build.gradle index 41d6da4cb..768d02c82 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { accompanist_version = '0.30.0' coil_version = '2.4.0' vico_version = '1.7.1' - exoplayer_version = '2.19.0' + exoplayer_version = '1.1.0' } dependencies { classpath 'com.google.gms:google-services:4.3.15'