You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Fire Stick下播放列表切换视频分辨率时ExoPlayer无法铺满视图

ExoPlayer在Fire Stick上动态适配视频分辨率的解决方案

针对你使用ExoPlayer v2.16.1开发安卓TV播放器时,在Fire Stick(FireOS 6 & 7)上遇到的播放列表视频尺寸锁定问题,这里提供几个可行的解决方法:

  • 重置Surface尺寸并触发视图重布局
    在媒体项切换时,主动取消Surface的固定尺寸限制并请求视图重新布局,强制ExoPlayer适配新视频的分辨率:

    player.addListener(new Player.Listener() {
        @Override
        public void onMediaItemTransition(MediaItem mediaItem, int reason) {
            // 清除Surface的固定尺寸锁定
            if (videoView instanceof SurfaceView) {
                SurfaceHolder holder = ((SurfaceView) videoView).getHolder();
                holder.setFixedSize(0, 0);
            }
            // 触发视频视图重新计算布局参数
            videoView.requestLayout();
        }
    });
    
  • 改用TextureView作为视频渲染视图
    FireOS对SurfaceView的动态尺寸适配存在兼容性问题,替换为TextureView通常能解决这类问题。修改布局文件:

    <androidx.media3.ui.TextureView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    

    代码中强制PlayerView使用TextureView:

    PlayerView playerView = findViewById(R.id.player_view);
    playerView.setUseTextureView(true);
    playerView.setPlayer(player);
    
  • 配置正确的视频缩放模式
    确保播放器视图使用合适的缩放模式,保证16:9比例的视频能全屏适配:

    // 可选RESIZE_MODE_FILL(填充全屏)或RESIZE_MODE_FIT(保持比例居中)
    playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
    

这些方法均针对FireOS的特殊兼容性问题设计,其他安卓TV设备正常是因为系统对视图渲染的处理逻辑更完善。建议优先尝试重置Surface尺寸的方案,改动最小;若无效再考虑替换TextureView。

内容的提问来源于stack exchange,提问作者Amr Barakat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:50:32