as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

在Vega中检测屏幕分辨率

在Vega中检测屏幕分辨率

在本文中,您将为在Vega OS设备上运行的React Native应用实现屏幕分辨率检测。虽然Vega设备支持4K播放,但并非所有电视都支持。当支持4K播放的Vega设备连接到高清 (HD) 电视时,您的应用应仅请求高清或更低分辨率的流媒体以提供最佳体验。请求错误的视频流可能会导致播放问题,例如卡顿、失真或无法播放。

有两种方法可以检测屏幕分辨率:

  • 来自W3C标准的decodeInfo(),推荐用于使用Shaka播放器或其他网页型播放器的应用
  • 应用可通过Vega Graphics API检测屏幕分辨率

先决条件

定义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, '导致decodingInfo拒绝');
  });

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拒绝');
  });

当支持4K播放的Vega设备连接到非4K显示器(例如1080p或720p)时,decodingInfoImpl()configuration_4k返回为不受支持,而将较低分辨率的配置返回为受支持的状态。

使用Vega图形API作为替代方案

Vega图形API提供了一种检索有关Fire TV设备及其所连显示器信息的方法,包括高度、宽度和高动态范围 (HDR) 等功能。这种方法最适合不使用W3C API的自定义播放器。

返回的高度值反映了设备和显示器组合的正确分辨率:

  • 连接到支持4K播放的Vega设备的高清电视,其返回的分辨率为1080
  • 连接到支持4K播放的Vega设备的4K电视,其返回的分辨率为2160

测试实现

在Fire TV设备上构建和运行您的应用:

  1. 将支持4K播放的Vega设备连接到高清 (1080p) 电视。
  2. 运行应用并验证其是否仅请求高清流媒体。
  3. 将支持4K播放的Vega设备连接到4K电视。
  4. 运行应用并验证其是否请求4K流媒体。

Last updated: 2026年4月8日