Проблема возникает только на некоторых телевизорах Android (например, Xiaomi TV) и очень постоянна:
Когда я меняю качество видео (например, с 480p на 1080p), видео:
Обрезается или увеличивается до верхнего левого угла.
Или, если я уменьшаю качество (например, 1080p → 360p), видеокадр сжимается и прилипает к левому верхнему углу экрана.
Я использую этот метод для применения переопределения дорожки:
Код: Выделить всё
player.trackSelector?.parameters = newTrackSelectionParams
Код: Выделить всё
onSurfaceSizeChanged: 1920x1080
onTracksChanged: 1920x1080
onVideoSizeChanged: 640x360 ← actual video resolution
Переключение с SurfaceView на TextureView через пользовательское представление проигрывателя.
Вызов requestLayout() или инвалидации() в PlayerView.
Перепривязка поверхности вручную с помощью setVideoSurface() или setVideoTextureView().
Повторное применение макета после задержки после изменения качества.
Как правильно обрабатывать изменение размера поверхности или обновления макета в ExoPlayer/Media3 при изменении качества видео, особенно для телевизоров Android?
/>Как я могу гарантировать, что проигрыватель отображает фактический размер декодированного видео и избежать проблем с обрезанием/масштабированием рендеринга после переключения разрешения?
🛠 Технический стек:
ExoPlayer (Media3 1.6.1)
Android TV (различных марок)
Jetpack Compose
Ручное переопределение дорожки (поток HLS)
Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-media3
Мобильная версия