[Android] 022. 動画再生 Exo Player(androidx.media3)

androidx.media3のExo Playerで動画再生を試してみました

media3の最新バージョンは1.2.0-alpha01で安定版は1.1.1です
現時点ではdeveloperの説明の日本語版は更新されてないので英語版で確認してください
https://developer.android.com/jetpack/androidx/releases/media3

Exo Playerも日本語版は更新されてないので英語版で確認してください
https://developer.android.com/guide/topics/media/exoplayer

StyledPlayerViewはmedia3ではandroidx.media3.ui.PlayerViewに変わったようです
https://developer.android.com/guide/topics/media/exoplayer/mappings#class-renamings

使い方はdevloper blogが参考になるかもです
https://android-developers.googleblog.com/2023/03/media3-is-ready-to-play.html

とりあえず最もシンプルな構成で実装

androidx.media3:media3-exoplayer / androidx.media3:media3-uiをimplementationしてください
動画はdevloperのサンプルで使用されていたもの、アクセスするのにインターネットのパーミッションの設定もしてください

// <uses-permission android:name="android.permission.INTERNET"/>
@Composable
fun VideoPlayerView(modifier: Modifier = Modifier) {
    val context = LocalContext.current
    val url = "https://storage.googleapis.com/exoplayer-test-media-0/play.mp3"
    val exoPlayer = remember {
        ExoPlayer.Builder(context).build().apply {
            setMediaItem(MediaItem.fromUri(url))
            prepare()
            play()
        }
    }

    DisposableEffect(
        AndroidView(
            modifier = modifier,
            factory = {
                PlayerView(context).apply {
                    player = exoPlayer
                }
            }
        )
    ) {
        onDispose {
            exoPlayer.release()
        }
    }
}

Android Studio Giraffe 2022.3.1 Patch 1 built on August 17, 2023