我正在尝试播放
.m4a
音频文件(DocumentProvider/SAF URI,例如:content://com.android.externalstorage.documents/tree/primary%3AVoiceRecorder/document/primary%3AVoiceRecorder%2F2024-02-09%2017h%2016m%2040s.m4a
),但我无法使用搜索栏更改位置,并且由于某种原因禁用了倒回/快进按钮。为什么?
val player = ExoPlayer.Builder(context).build()
player.setMediaItem(MediaItem.fromUri(audioFileUri))
player.playWhenReady = true
player.prepare()
用户界面:
AndroidView(
modifier = Modifier
.fillMaxSize(),
factory = {
// androidx.media3.ui.PlayerView
PlayerView(it).also { playerView ->
playerView.controllerHideOnTouch = false
playerView.controllerAutoShow = true
playerView.controllerShowTimeoutMs = 0
playerView.player = player
playerView.setShowRewindButton(true)
playerView.setShowFastForwardButton(true)
playerView.showController()
}
},
)
val media3Version = "1.2.1"
implementation("androidx.media3:media3-exoplayer:$media3Version")
implementation("androidx.media3:media3-session:$media3Version")
implementation("androidx.media3:media3-ui:$media3Version")
使用 setConstantBitrateSeekingEnabled 修复:
val player = ExoPlayer.Builder(context)
.setMediaSourceFactory(
DefaultMediaSourceFactory(
/* context = */ context,
/* extractorsFactory = */ DefaultExtractorsFactory().apply {
setConstantBitrateSeekingEnabled(true)
}
)
)
.build()