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

Android TV应用中ExoPlayer设置高分辨率视频无效的问题求助

ExoPlayer 提升视频分辨率无效的解决方法

你的代码问题出在两个关键设置上:

  • 同时把setMinVideoSize和setMaxVideoSize都设为1920x1080,意味着只有流里恰好存在这个分辨率的轨道时,播放器才会选中它,如果流里没有,就会 fallback 到更低分辨率的轨道。
  • 设置minVideoBitrate为Integer.MAX_VALUE,这会过滤掉所有码率低于这个值的轨道——而实际视频码率不可能达到这个数值,等于直接排除了所有可用轨道,播放器只能选默认的低质量轨道。

修正方案

根据你的需求(提升到1080p),分两种场景调整代码:

场景1:优先选择最高不超过1080p的轨道(推荐)

如果想让播放器自动选最高质量且不超过1080p的轨道,去掉极端的码率和最小尺寸限制:

player.setTrackSelectionParameters(
        player.getTrackSelectionParameters()
                .buildUpon()
                .setPreferredAudioLanguages(languages)
                .setPreferredTextLanguage("ar")
                // 限制最高分辨率为1080p
                .setMaxVideoSize(1920, 1080)
                // 明确指定优先选最高质量轨道(ExoPlayer默认也会优先选,但显式设置更稳妥)
                .setVideoSelectionMode(C.TRACK_SELECTION_MODE_HIGHEST_QUALITY)
                .build());

场景2:强制选择1080p轨道(前提是流里存在该轨道)

如果确认视频流里有1920x1080的轨道,只想选这个分辨率,保留尺寸限制但去掉极端码率设置:

player.setTrackSelectionParameters(
        player.getTrackSelectionParameters()
                .buildUpon()
                .setPreferredAudioLanguages(languages)
                .setPreferredTextLanguage("ar")
                // 只允许1920x1080的轨道
                .setMinVideoSize(1920, 1080)
                .setMaxVideoSize(1920, 1080)
                .build());

额外检查点

  • 先确认视频流中确实存在1920x1080的轨道:可以通过player.getCurrentTracks()获取TrackInfo,查看所有可用视频轨道的参数。
  • 检查Android TV上的播放视图(TextureView/SurfaceView)尺寸:确保布局中视图设置为match_parent或合适的尺寸,避免缩放导致视觉上分辨率偏低。
  • 升级ExoPlayer到最新稳定版:旧版本可能存在轨道选择参数的处理bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:01:23