在Vega中检测屏幕分辨率
在本文中,您将为在Vega OS设备上运行的React Native应用实现屏幕分辨率检测。虽然Fire TV Stick 4K Select支持4K播放,但并非所有电视都支持4K播放。当Fire TV Stick 4K Select连接到高清 (HD) 电视时,您的应用应仅请求高清或更低分辨率的流媒体以提供最佳体验。请求错误的视频流可能会导致播放问题,例如卡顿、失真或无法播放。
有两种方法可以检测屏幕分辨率:
- 来自W3C标准的
decodeInfo(),推荐用于使用Shaka播放器或其他网页型播放器的应用 - Vega Graphics API,推荐用于不使用W3C API的自定义播放器
先决条件
- Vega开发环境已设置
- 在Vega OS上运行的React Native应用
- 用于测试的Fire TV Stick 4K Select
- 已安装的
@amazon-devices/react-native-w3cmedia程序包(用于decodeInfo()方法)
定义decodeInfo() polyfill
如果您使用带有亚马逊补丁的Shaka播放器,请跳过此步骤。polyfill已经包括在内。
对于其他玩家,请为decodeInfo() 定义polyfill。参考媒体功能文档中的polyfill代码。
在Vega体育示例应用中,构建脚本在<应用根目录>/w3media/polyfills/文件夹下放置了一个名为W3CMediaPolyfill.ts的文件。该文件包含decodeInfo() 的实现。
安装polyfill
在您的应用中定义polyfill后,安装它,以便该应用可以访问媒体功能。在Vega体育示例应用中,polyfill是在应用初始化期间安装的。
使用decodeInfo() 支持查询解析
如果您使用Shaka播放器或其他直接调用decodingInfo() 的W3C型播放器,请跳过此步骤。
对于自定义播放器代码,请使用decodeInfo() 来检查连接的显示器支持哪些分辨率。以下示例演示了对高级视频编码 (AVC) 流的高清和超高清 (UHD) 解码支持。
const contentType = 'video/mp4;codecs=avc1.640028';
const configuration = {
type: 'media-source',
video: {
contentType: contentType,
width: 1920,
height: 1080,
bitrate: 2000,
framerate: 29.97,
},
};
const configuration_4k = {
type: 'media-source',
video: {
contentType: contentType,
width: 3840,
height: 2160,
bitrate: 8000,
framerate: 29.97,
},
};
decodingInfoImpl(configuration)
.then((result) => {
console.log(
'解码' +
contentType +
'于高度' +
configuration.video.height +
'比特率' +
configuration.video.bitrate +
'帧速率' +
configuration.video.framerate +
'是' +
(result.supported ? '' : '不') +
'受支持的,',
);
})
.catch((err) => {
console.error(err, ' caused decodingInfo to reject');
});
decodingInfoImpl(configuration_4k)
.then((result) => {
console.log(
'解码' +
contentType +
'于高度' +
configuration_4k.video.height +
'比特率' +
configuration_4k.video.bitrate +
'帧速率' +
configuration_4k.video.framerate +
'是' +
(result.supported ? '' : '不') +
'受支持的,',
);
})
.catch((err) => {
console.error(err, '导致decodingInfo拒绝');
});
当Fire TV Stick 4K Select连接到非4K显示器(例如1080p或720p)时,decodingInfoImpl() 将configuration_4k返回为不受支持,而将较低分辨率的配置返回为受支持的状态。
使用Vega图形API作为替代方案
Vega图形API提供了一种检索有关Fire TV设备及其所连显示器信息的方法,包括高度、宽度和高动态范围 (HDR) 等功能。这种方法最适合不使用W3C API的自定义播放器。
返回的高度值反映了设备和显示器组合的正确分辨率:
- 连接到Fire TV Stick 4K的高清电视选择返回1080
- 连接到Fire TV Stick 4K Select的4K电视返回2160
测试实现
在Fire TV设备上构建和运行您的应用:
- 将Fire TV Stick 4K Select连接到高清 (1080p) 电视。
- 运行您的应用并验证它仅请求高清流媒体。
- 将Fire TV Stick 4K Select连接到4K电视。
- 运行您的应用并验证它请求4K流媒体。
相关内容
Last updated: 2026年3月26日

