我试图检测设备何时能够以4K UHD(3840x2160)分辨率输出.许多设备(如nVidia Shield TV和Sony Xperia Z5 Premium)都会报告它们以1080p运行,即使它们具有UHD功能,因为它们默认为非视频布局的1080p输出.我需要一些方法来检测它们是否能够区分它们以及像Nexus Player这样的非4K设备.
这是我用来确定当前分辨率的代码:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
Run Code Online (Sandbox Code Playgroud)
在Shield TV上,即使ExoPlayer报告它在3840x2160输出视频,也会一直返回1920x1080.
假设我有一个带有 4 个轨道的 AVMutableComposition:1 个视频轨道、1 个音频轨道和 2 个文本轨道。我可以通过切换启用标志来在两个文本轨道之间切换,如下所示:
[_player.currentItem.tracks[2] setEnabled:NO];
[_player.currentItem.tracks[3] setEnabled:YES];
但是,如果我尝试通过在两个轨道上设置“启用否”来关闭字幕,则最新的文本轨道将卡在屏幕上。有没有办法禁用所有文本轨道?