Видео Exoplayer не изменяется в PIP - JetPack Compose -Media3Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Видео Exoplayer не изменяется в PIP - JetPack Compose -Media3

Сообщение Anonymous »

Я использую Media3 в JetPack Compose. Я изо всех сил пытаюсь реализовать PIP. Когда показан PIP, видео не изменяется должным образом. Я прикрепляю скриншоты ниже.
.
Вот мой код. < /p>
Box(
modifier = modifier
) {
PipActionReceiver(exoPlayer, isInPictureInPictureMode)
AndroidView(
factory = {
playerView.also {
it.requestFocus()
}
},
update = {
it.player = exoPlayer.also { player ->
player.addListener(exoPlayerListener)
}
it.setShowBuffering(PlayerView.SHOW_BUFFERING_WHEN_PLAYING)
it.setControllerAnimationEnabled(false)
it.setShowFastForwardButton(true)
it.setShowRewindButton(true)
it.setShowNextButton(false)
it.setShowPreviousButton(false)
it.showController()
it.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL)
it.setControllerVisibilityListener(PlayerView.ControllerVisibilityListener { isVisible ->
isControllerVisible = isVisible == View.VISIBLE
Log.d(LogTag,"ControllerVisibilityListener $isControllerVisible")
it.subtitleView?.adjustSubtitlePosition(context, isControllerVisible, it.height)
})
it.artworkDisplayMode = ARTWORK_DISPLAY_MODE_FILL
it.setShowSubtitleButton(true)
it.setErrorMessageProvider(PlayerErrorMessageProvider(context))
},
modifier = Modifier
.fillMaxSize()
.zIndex(1f)
.focusable(
enabled = true,
interactionSource = interactionSource
)
.focusRequester(focusRequester)
.onGloballyPositioned {
playerRect = it
.boundsInWindow()
.toAndroidRect()
}
.then(
if (DeviceType.isTv(context))
Modifier.onKeyEvent { keyEvent ->
Log.d(LogTag, "onKeyEvent in main player $keyEvent")

// Detecting back button press
if (keyEvent.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_BACK && keyEvent.nativeKeyEvent.action == KeyEvent.ACTION_DOWN) {
when {
currentDialogType != TrackSettingsDialogType.None -> {
currentDialogType = TrackSettingsDialogType.None
}

else -> {
releasePlayer()
onGotoBackScreen()
}
}
true // Consuming the back press event
} else if (keyEvent.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_DPAD_CENTER && keyEvent.nativeKeyEvent.action == KeyEvent.ACTION_DOWN) {
if (isControllerVisible && playerView.findTimeBar().isFocused) {
playerView.togglePlayPause()
} else if (!isControllerVisible) {
playerView.apply {
showController()
findTimeBar().requestFocus()
playerView.togglePlayPause()
}
}
true

} else {
// Handle other key events, including showing the controller when necessary
if (isControllerVisible) {
playerView.dispatchKeyEvent(keyEvent.nativeKeyEvent)
} else {
playerView.showController()
playerView.findTimeBar().requestFocus()
true//Don't send key press event
}
}
}
else
Modifier
),
)
< /code>
и для обновления PIP Params < /p>
fun updatePipParams(
context: Context,
videoInfo: VideoInfo,
videoViewBounds: Rect,
isPlaying: Boolean,
): PictureInPictureParams? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
PictureInPictureParams.Builder()
.setAspectRatio(Rational(16, 9))
.also {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
it.setExpandedAspectRatio(Rational(4, 3))
it.setTitle(videoInfo.title)
it.setSubtitle(videoInfo.artistName)
it.setSeamlessResizeEnabled(true)
it.setActions(
listOfRemoteActions(isPlaying, context)
)
}
context.findActivity()?.setPictureInPictureParams(it.build())
}
.build()
} else null
}
< /code>
и использование < /p>
setOnClickListener {
updatePipParams(context, videoInfo, playerRect, exoPlayer.isPlaying)?.let { params ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (activity.enterPictureInPictureMode(params)) {
Log.d(LogTag, "Entered PiP mode")
findControllerLayout().isVisible(false)
onPresentationChanged(PlayerPresentationModes.PIP)
} else {
Log.e(LogTag, "Failed to enter PiP mode")
}
}
}
}
< /code>
Я также попытался переключить зум, заполнить и подходить. Ничего не помогло.
Как я могу исправить его, чтобы отобрать видео в PIP в как смягченное, так и расширенное окно с правильно масштабированным и измененным видео. < /P>

Подробнее здесь: https://stackoverflow.com/questions/794 ... ose-media3
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Видеофайл невозможно воспроизвести в Exoplayer. Ошибка androidx.media3.exoplayer.ExoPlaybackException: ошибка источника
    Anonymous » » в форуме Android
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • Виды видеоплеера перекрывают друг друга в ExoPlayer media3 Jetpack Compose?
    Anonymous » » в форуме Android
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Почему элементы управления exoplayer/media3 затемняют видео?
    Anonymous » » в форуме Android
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Как предварительно загрузить видео с помощью media3 exoplayer в Android Kotlin?
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как переместить кнопки управления Jetpack-media3/exoplayer?
    Anonymous » » в форуме Android
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»